From f20611265f7d34fd4fbcdfdaff6cb9cccd0b25fc Mon Sep 17 00:00:00 2001
From: shenyijian <1178253012@qq.com>
Date: Fri, 21 Jun 2024 11:53:21 +0800
Subject: [PATCH] 湖北水库:施工:项目查询过滤无效修复、根据角色查询用户

---
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/mapper/DamSecurityMapper.xml | 1364 +++++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 944 insertions(+), 420 deletions(-)

diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/mapper/DamSecurityMapper.xml b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/mapper/DamSecurityMapper.xml
index 6a7a1d6..2d0ce54 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/mapper/DamSecurityMapper.xml
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/mapper/DamSecurityMapper.xml
@@ -79,10 +79,10 @@
         </if>
 
         <if test="dam.startTime != null and dam.startTime != ''">
-            AND DATE_FORMAT(time,'%Y-%m-%d') &gt;= #{dam.startTime}
+            AND time &gt;= #{dam.startTime}
         </if>
         <if test="dam.endTime != null and dam.endTime !='' ">
-            AND DATE_FORMAT(time,'%Y-%m-%d') &lt;= #{dam.endTime}
+            AND time &lt;= #{dam.endTime}
         </if>
         )) errorNum
         ),SJZT_MD."att_ad_base" aab
@@ -94,117 +94,161 @@
 
     </select>
     <select id="getSingleRegionCountOptimize" resultType="cn.gistack.sm.damSecurity.vo.DamSecurityStatistics">
-
-        SELECT allNum,errorNum,AllNum-errorNum normalNum,aab."ad_name" adName,aab."guid" adCode FROM
+        SELECT SUM(TMP.allNum) allNum,sum(TMP.errorNum) errorNum,sum(normalNum) normalNum FROM (
+        select "ad_code","ad_name",allNum,errorNum,allNum-errorNum normalNum from (
+        select "ad_code","ad_name",
         (
-        SELECT
+        select count(*) from  (
+        select max(NAG.dam_id) dam_id
+        FROM ywxt.NKY_ALARM_GET NAG
+        where time &gt;= #{dam.startTime} AND time &lt;= #{dam.endTime}
+        group by NAG.dam_id
+        ) NAG
+        left join sjzt_md."att_res_base" res on (res."guid" = NAG.dam_id)
+        left join sjzt_md."att_ad_base" ada on (ada."guid" = res."interior_ad_guid")
+        left join sjzt_md."att_ad_base" adb on (adb."guid" = ada."p_ad_code")
+        left join sjzt_md."att_ad_base" adc on (adc."guid" = adb."p_ad_code")
+        left join sjzt_md."att_ad_base" addd on (addd."guid" = adc."p_ad_code")
+        where res."interior_ad_guid" = aab."guid" or ada."guid" = aab."guid" or adb."guid" = aab."guid" or adc."guid" = aab."guid" or addd."guid" = aab."guid"
+        ) as errorNum,
         (
-        SELECT count(*) FROM
-        (
-        SELECT
-        a."guid",
-        a."name",
-        a."eng_scal",
-        case when b."ad_grad" = 4 THEN b."ad_code" ELSE NULL END AS "town_ad_code",
-        case when b."ad_grad" = 4 THEN b."ad_name" ELSE NULL END AS "town_ad_name",
-        case when b."ad_grad" = 4 THEN b."order_id" ELSE NULL END AS "town_order_id",
-        case when b."ad_grad" = 3 THEN b."ad_code" when c."ad_grad" = 3 THEN c."ad_code" END AS "county_ad_code",
-        case when b."ad_grad" = 3 THEN b."ad_name"when c."ad_grad" = 3 THEN C."ad_name" END AS "county_ad_name",
-        case when b."ad_grad" = 3 THEN b."order_id"when c."ad_grad" = 3 THEN C."order_id" END AS "county_order_id",
-        case when b."ad_grad" = 2 THEN b."ad_code"when c."ad_grad" = 2 THEN c."ad_code"ELSE d."ad_code" END AS
-        "city_ad_code",
-        case when b."ad_grad" = 2 THEN b."ad_name"when c."ad_grad" = 2 THEN c."ad_name"ELSE d."ad_name" END AS
-        "city_ad_name",
-        case when b."ad_grad" = 2 THEN b."order_id" when c."ad_grad" = 2 THEN c."order_id"ELSE d."order_id" END AS
-        "city_order_id",
-        case when b."ad_grad" = 1 THEN b."ad_code"when c."ad_grad" = 1 THEN c."ad_code"when d."ad_grad" = 1 THEN
-        d."ad_code"ELSE e."ad_code" END AS "province_ad_code",
-        case when b."ad_grad" = 1 THEN b."ad_name"when c."ad_grad" = 1 THEN c."ad_name"when d."ad_grad" = 1 THEN
-        d."ad_name"ELSE e."ad_name" END AS "province_ad_name",
-        case when b."ad_grad" = 1 THEN b."order_id"when c."ad_grad" = 1 THEN c."order_id" when d."ad_grad" = 1 THEN
-        d."order_id"ELSE e."order_id" END AS "province_order_id"
+        SELECT COUNT(*) FROM (
+        SELECT a."guid",a."name",a."eng_scal",
+        CASE
+        WHEN b."ad_grad" = 4 THEN
+        b."ad_code"
+        ELSE NULL
+        END AS "town_ad_code",
+        CASE
+        WHEN b."ad_grad" = 4 THEN
+        b."ad_name"
+        ELSE NULL
+        END AS "town_ad_name",
+        CASE
+        WHEN b."ad_grad" = 4 THEN
+        b."order_id"
+        ELSE NULL
+        END AS "town_order_id",
+        CASE
+        WHEN b."ad_grad" = 3 THEN
+        b."ad_code"
+        WHEN c."ad_grad" = 3 THEN
+        c."ad_code"
+        END AS "county_ad_code",
+        CASE
+        WHEN b."ad_grad" = 3 THEN
+        b."ad_name"
+        WHEN c."ad_grad" = 3 THEN
+        C."ad_name"
+        END AS "county_ad_name",
+        CASE
+        WHEN b."ad_grad" = 3 THEN
+        b."order_id"
+        WHEN c."ad_grad" = 3 THEN
+        C."order_id"
+        END AS "county_order_id",
+        CASE
+        WHEN b."ad_grad" = 2 THEN
+        b."ad_code"
+        WHEN c."ad_grad" = 2 THEN
+        c."ad_code"
+        ELSE d."ad_code"
+        END AS "city_ad_code",
+        CASE
+        WHEN b."ad_grad" = 2 THEN
+        b."ad_name"
+        WHEN c."ad_grad" = 2 THEN
+        c."ad_name"
+        ELSE d."ad_name"
+        END AS "city_ad_name",
+        CASE
+        WHEN b."ad_grad" = 2 THEN
+        b."order_id"
+        WHEN c."ad_grad" = 2 THEN
+        c."order_id"
+        ELSE d."order_id"
+        END AS "city_order_id",
+        CASE
+        WHEN b."ad_grad" = 1 THEN
+        b."ad_code"
+        WHEN c."ad_grad" = 1 THEN
+        c."ad_code"
+        WHEN d."ad_grad" = 1 THEN
+        d."ad_code"
+        ELSE e."ad_code"
+        END AS "province_ad_code",
+        CASE
+        WHEN b."ad_grad" = 1 THEN
+        b."ad_name"
+        WHEN c."ad_grad" = 1 THEN
+        c."ad_name"
+        WHEN d."ad_grad" = 1 THEN
+        d."ad_name"
+        ELSE e."ad_name"
+        END AS "province_ad_name",
+        CASE
+        WHEN b."ad_grad" = 1 THEN
+        b."order_id"
+        WHEN c."ad_grad" = 1 THEN
+        c."order_id"
+        WHEN d."ad_grad" = 1 THEN
+        d."order_id"
+        ELSE e."order_id"
+        END AS "province_order_id"
         FROM sjzt_md."att_res_base" a
         LEFT JOIN (
-
-        SELECT
-        distinct (dri."res_cd")
-        FROM
-        sjzt_dw."dim_res_info_a" dri
-        LEFT JOIN sjzt_ods."dsm_spg_spprmp" dss ON dri."oth_reg_cd" = dss."rscd"
-        where dss."rscd" is not null
-
-
+        SELECT DISTINCT (dri."res_cd")
+        FROM sjzt_dw."dim_res_info_a" dri
+        LEFT JOIN sjzt_ods."dsm_spg_spprmp" dss
+        ON dri."oth_reg_cd" = dss."rscd"
+        WHERE dss."rscd" is NOT NULL
         ) f ON a."guid" = f."res_cd"
         LEFT JOIN (
-
-
         SELECT distinct(dri."res_cd")
-        from sjzt_dw."dim_res_info_a" dri
-        left join sjzt_ods."dsm_spg_spqnmp" dss on trim(dss."rscd") = dri."oth_reg_cd"
-        where dss."rscd" is not null
-
-
-        ) G on a."guid" = g."res_cd"
+        FROM sjzt_dw."dim_res_info_a" dri
+        LEFT JOIN sjzt_ods."dsm_spg_spqnmp" dss ON trim(dss."rscd") = dri."oth_reg_cd"
+        WHERE dss."rscd" is NOT NULL
+        ) G ON a."guid" = g."res_cd"
         LEFT JOIN (
-
-
-        SELECT distinct("res_cd") from sjzt_md."att_wy_cd_base" awcb
-        where awcb."cd" != '00'
-
+        SELECT distinct("res_cd")
+        FROM sjzt_md."att_wy_cd_base" awcb
+        WHERE awcb."cd" != '00'
         ) h ON a."guid" = h."res_cd"
         LEFT JOIN sjzt_md."att_ad_base" b ON a."interior_ad_guid" = b."guid"
         LEFT JOIN sjzt_md."att_ad_base" c ON b."p_ad_code" = c."guid"
         LEFT JOIN sjzt_md."att_ad_base" d ON c."p_ad_code" = d."guid"
         LEFT JOIN sjzt_md."att_ad_base" e ON d."p_ad_code" = e."guid"
-        where (f."res_cd" is not null OR g."res_cd" is not null OR h."res_cd" is not null)
-        ) baseRes
-        LEFT JOIN SJZT_MD."att_ad_base" aab ON aab."guid" = baseRes."town_ad_code"
-        LEFT JOIN SJZT_MD."att_ad_base" aa ON aab."p_ad_code" = aa."ad_code"
-        LEFT JOIN SJZT_MD."att_ad_base" ab ON aa."p_ad_code" = ab."ad_code"
-        LEFT JOIN SJZT_MD."att_ad_base" ac ON ab."p_ad_code" = ac."ad_code"
-        where 1=1
-        <if test="dam.adCode != null and dam.adCode != '' ">
-            AND (aab."ad_code" =#{dam.adCode} or aa."ad_code" = #{dam.adCode} or ab."ad_code" = #{dam.adCode} or
-            ac."ad_code" = #{dam.adCode})
-        </if>
-        ) AllNum,
+        WHERE
         (
-        SELECT COUNT(*)
-        FROM (SELECT distinct DAM_ID FROM NKY_ALARM_GET NAG
-        LEFT JOIN SJZT_MD."att_res_base" arb ON arb."guid" = NAG.DAM_ID
-        LEFT JOIN SJZT_MD."att_ad_base" aab ON aab."guid" = arb."interior_ad_guid"
-        LEFT JOIN SJZT_MD."att_ad_base" aa ON aab."p_ad_code" = aa."ad_code"
-        LEFT JOIN SJZT_MD."att_ad_base" ab ON aa."p_ad_code" = ab."ad_code"
-        LEFT JOIN SJZT_MD."att_ad_base" ac ON ab."p_ad_code" = ac."ad_code"
-        WHERE 1=1
-        <if test="dam.adCode != null and dam.adCode != '' ">
-            and (aab."ad_code" =#{dam.adCode} or aa."ad_code" = #{dam.adCode} or ab."ad_code" = #{dam.adCode} or
-            ac."ad_code" = #{dam.adCode})
-        </if>
-
-        <if test="dam.startTime != null and dam.startTime != ''">
-            AND DATE_FORMAT(time,'%Y-%m-%d') &gt;= #{dam.startTime}
-        </if>
-        <if test="dam.endTime != null and dam.endTime !='' ">
-            AND DATE_FORMAT(time,'%Y-%m-%d') &lt;= #{dam.endTime}
-        </if>
-        )) errorNum
-        ),SJZT_MD."att_ad_base" aab
-        where 1=1
-        <if test="dam.adCode != null and dam.adCode != '' ">
-            and aab."guid" = #{dam.adCode}
-        </if>
-
+        f."res_cd" is NOT null
+        OR g."res_cd" is NOT null
+        OR h."res_cd" is NOT null
+        )
+        AND (d."ad_code" = aab."guid"
+        OR c."ad_code" = aab."guid"
+        OR b."ad_code" = aab."guid" )
+        )
+        ) allNum
+        FROM SJZT_MD."att_ad_base" aab
+        where
+        <choose>
+            <when test="dam.adCode != null and dam.adCode !='' ">
+                "p_ad_code" = #{dam.adCode}
+            </when>
+            <otherwise>
+                "ad_grad" = 2
+            </otherwise>
+        </choose>
+        )
+        )TMP
     </select>
 
 
 
 
     <select id="listRegionCount" resultType="cn.gistack.sm.damSecurity.vo.DamSecurityStatistics">
-
         SELECT allNum,errorNum, allNum-errorNum normalNum,adName,adCode FROM
         (
-
         SELECT
         (
         SELECT COUNT(*) FROM
@@ -285,7 +329,6 @@
         or c."ad_code" = aab."guid" or b."ad_code" = aab."guid" )
         )
         ) allNum,
-
         (
         SELECT COUNT(*)FROM (SELECT distinct DAM_ID FROM NKY_ALARM_GET NAG
         LEFT JOIN SJZT_MD."att_res_base" arb ON arb."guid" = NAG.DAM_ID
@@ -293,14 +336,12 @@
         left join SJZT_MD."att_ad_base" c on b."p_ad_code" = c."ad_code"
         left join SJZT_MD."att_ad_base" d on c."p_ad_code" = d."ad_code"
         where (d."ad_code" = aab."guid" or c."ad_code" = aab."guid" or b."ad_code" = aab."guid" )
-
         <if test="dam.startTime != null and dam.startTime != ''">
-            AND DATE_FORMAT(time,'%Y-%m-%d') &gt;= #{dam.startTime}
+            AND time &gt;= #{dam.startTime}
         </if>
         <if test="dam.endTime != null and dam.endTime !='' ">
-            AND DATE_FORMAT(time,'%Y-%m-%d') &lt;= #{dam.endTime}
+            AND time &lt;= #{dam.endTime}
         </if>
-
         )) errorNum,
         aab."ad_name" adName , aab."guid" adCode from SJZT_MD."att_ad_base" aab
         where
@@ -313,117 +354,152 @@
             </otherwise>
         </choose>
         )
-
     </select>
     <select id="listRegionCountOptimize" resultType="cn.gistack.sm.damSecurity.vo.DamSecurityStatistics">
-
-        SELECT allNum,errorNum, allNum-errorNum normalNum,adName,adCode FROM
-        (
-
-        SELECT
-        (
-        SELECT COUNT(*) FROM
-        (
-        SELECT
-        a."guid",
-        a."name",
-        a."eng_scal",
-        case when b."ad_grad" = 4 THEN b."ad_code" ELSE NULL END AS "town_ad_code",
-        case when b."ad_grad" = 4 THEN b."ad_name" ELSE NULL END AS "town_ad_name",
-        case when b."ad_grad" = 4 THEN b."order_id" ELSE NULL END AS "town_order_id",
-        case when b."ad_grad" = 3 THEN b."ad_code"
-        when c."ad_grad" = 3 THEN c."ad_code" END AS "county_ad_code",
-        case when b."ad_grad" = 3 THEN b."ad_name"
-        when c."ad_grad" = 3 THEN C."ad_name" END AS "county_ad_name",
-        case when b."ad_grad" = 3 THEN b."order_id"
-        when c."ad_grad" = 3 THEN C."order_id" END AS "county_order_id",
-        case when b."ad_grad" = 2 THEN b."ad_code"
-        when c."ad_grad" = 2 THEN c."ad_code"
-        ELSE d."ad_code" END AS "city_ad_code",
-        case when b."ad_grad" = 2 THEN b."ad_name"
-        when c."ad_grad" = 2 THEN c."ad_name"
-        ELSE d."ad_name" END AS "city_ad_name",
-        case when b."ad_grad" = 2 THEN b."order_id"
-        when c."ad_grad" = 2 THEN c."order_id"
-        ELSE d."order_id" END AS "city_order_id",
-        case when b."ad_grad" = 1 THEN b."ad_code"
-        when c."ad_grad" = 1 THEN c."ad_code"
-        when d."ad_grad" = 1 THEN d."ad_code"
-        ELSE e."ad_code" END AS "province_ad_code",
-        case when b."ad_grad" = 1 THEN b."ad_name"
-        when c."ad_grad" = 1 THEN c."ad_name"
-        when d."ad_grad" = 1 THEN d."ad_name"
-        ELSE e."ad_name" END AS "province_ad_name",
-        case when b."ad_grad" = 1 THEN b."order_id"
-        when c."ad_grad" = 1 THEN c."order_id"
-        when d."ad_grad" = 1 THEN d."order_id"
-        ELSE e."order_id" END AS "province_order_id"
-        FROM sjzt_md."att_res_base" a
-        LEFT JOIN (
-
-
-        SELECT
-        distinct (dri."res_cd")
-        FROM
-        sjzt_dw."dim_res_info_a" dri
-        LEFT JOIN sjzt_ods."dsm_spg_spprmp" dss ON dri."oth_reg_cd" = dss."rscd"
-        where dss."rscd" is not null
-
-        ) f ON a."guid" = f."res_cd"
-
-        LEFT JOIN (
-
-        SELECT distinct(dri."res_cd")
-        from sjzt_dw."dim_res_info_a" dri
-        left join sjzt_ods."dsm_spg_spqnmp" dss on trim(dss."rscd") = dri."oth_reg_cd"
-        where dss."rscd" is not null
-
-        ) G on a."guid" = g."res_cd"
-
-
-        LEFT JOIN (
-
-
-        SELECT distinct("res_cd") from sjzt_md."att_wy_cd_base" awcb
-        where awcb."cd" != '00'
-
-
-        ) h ON a."guid" = h."res_cd"
-        LEFT JOIN sjzt_md."att_ad_base" b ON a."interior_ad_guid" = b."guid"
-        LEFT JOIN sjzt_md."att_ad_base" c ON b."p_ad_code" = c."guid"
-        LEFT JOIN sjzt_md."att_ad_base" d ON c."p_ad_code" = d."guid"
-        LEFT JOIN sjzt_md."att_ad_base" e ON d."p_ad_code" = e."guid"
-        where (f."res_cd" is not null OR g."res_cd" is not null OR h."res_cd" is not null) and (d."ad_code" = aab."guid"
-        or c."ad_code" = aab."guid" or b."ad_code" = aab."guid" )
-        )
-        ) allNum,
-
-        (
-        SELECT COUNT(*)FROM (SELECT distinct DAM_ID FROM NKY_ALARM_GET NAG
-        LEFT JOIN SJZT_MD."att_res_base" arb ON arb."guid" = NAG.DAM_ID
-        left join SJZT_MD."att_ad_base" b on arb."interior_ad_guid" = b."ad_code"
-        left join SJZT_MD."att_ad_base" c on b."p_ad_code" = c."ad_code"
-        left join SJZT_MD."att_ad_base" d on c."p_ad_code" = d."ad_code"
-        where (d."ad_code" = aab."guid" or c."ad_code" = aab."guid" or b."ad_code" = aab."guid" )
-
-        <if test="dam.startTime != null and dam.startTime != ''">
-            AND DATE_FORMAT(time,'%Y-%m-%d') &gt;= #{dam.startTime}
-        </if>
-        <if test="dam.endTime != null and dam.endTime !='' ">
-            AND DATE_FORMAT(time,'%Y-%m-%d') &lt;= #{dam.endTime}
-        </if>
-
-        )) errorNum,
-        aab."ad_name" adName , aab."guid" adCode from SJZT_MD."att_ad_base" aab
-        where
-        <choose>
-            <when test="dam.adCode != null and dam.adCode !='' ">
-                "p_ad_code" = #{dam.adCode}
-            </when>
-            <otherwise>
-                "ad_grad" = 2
-            </otherwise>
-        </choose>
+        select "ad_code","ad_name",allNum,errorNum,allNum-errorNum normalNum from (
+            select "ad_code","ad_name",
+            (
+            select count(*) from  (
+            select max(NAG.dam_id) dam_id
+            FROM ywxt.NKY_ALARM_GET NAG
+            where time &gt;= #{dam.startTime} AND time &lt;= #{dam.endTime}
+            group by NAG.dam_id
+            ) NAG
+            left join sjzt_md."att_res_base" res on (res."guid" = NAG.dam_id)
+            left join sjzt_md."att_ad_base" ada on (ada."guid" = res."interior_ad_guid")
+            left join sjzt_md."att_ad_base" adb on (adb."guid" = ada."p_ad_code")
+            left join sjzt_md."att_ad_base" adc on (adc."guid" = adb."p_ad_code")
+            left join sjzt_md."att_ad_base" addd on (addd."guid" = adc."p_ad_code")
+            where res."interior_ad_guid" = aab."guid" or ada."guid" = aab."guid" or adb."guid" = aab."guid" or adc."guid" = aab."guid" or addd."guid" = aab."guid"
+            ) as errorNum,
+            (
+            SELECT COUNT(*) FROM (
+            SELECT a."guid",a."name",a."eng_scal",
+            CASE
+            WHEN b."ad_grad" = 4 THEN
+            b."ad_code"
+            ELSE NULL
+            END AS "town_ad_code",
+            CASE
+            WHEN b."ad_grad" = 4 THEN
+            b."ad_name"
+            ELSE NULL
+            END AS "town_ad_name",
+            CASE
+            WHEN b."ad_grad" = 4 THEN
+            b."order_id"
+            ELSE NULL
+            END AS "town_order_id",
+            CASE
+            WHEN b."ad_grad" = 3 THEN
+            b."ad_code"
+            WHEN c."ad_grad" = 3 THEN
+            c."ad_code"
+            END AS "county_ad_code",
+            CASE
+            WHEN b."ad_grad" = 3 THEN
+            b."ad_name"
+            WHEN c."ad_grad" = 3 THEN
+            C."ad_name"
+            END AS "county_ad_name",
+            CASE
+            WHEN b."ad_grad" = 3 THEN
+            b."order_id"
+            WHEN c."ad_grad" = 3 THEN
+            C."order_id"
+            END AS "county_order_id",
+            CASE
+            WHEN b."ad_grad" = 2 THEN
+            b."ad_code"
+            WHEN c."ad_grad" = 2 THEN
+            c."ad_code"
+            ELSE d."ad_code"
+            END AS "city_ad_code",
+            CASE
+            WHEN b."ad_grad" = 2 THEN
+            b."ad_name"
+            WHEN c."ad_grad" = 2 THEN
+            c."ad_name"
+            ELSE d."ad_name"
+            END AS "city_ad_name",
+            CASE
+            WHEN b."ad_grad" = 2 THEN
+            b."order_id"
+            WHEN c."ad_grad" = 2 THEN
+            c."order_id"
+            ELSE d."order_id"
+            END AS "city_order_id",
+            CASE
+            WHEN b."ad_grad" = 1 THEN
+            b."ad_code"
+            WHEN c."ad_grad" = 1 THEN
+            c."ad_code"
+            WHEN d."ad_grad" = 1 THEN
+            d."ad_code"
+            ELSE e."ad_code"
+            END AS "province_ad_code",
+            CASE
+            WHEN b."ad_grad" = 1 THEN
+            b."ad_name"
+            WHEN c."ad_grad" = 1 THEN
+            c."ad_name"
+            WHEN d."ad_grad" = 1 THEN
+            d."ad_name"
+            ELSE e."ad_name"
+            END AS "province_ad_name",
+            CASE
+            WHEN b."ad_grad" = 1 THEN
+            b."order_id"
+            WHEN c."ad_grad" = 1 THEN
+            c."order_id"
+            WHEN d."ad_grad" = 1 THEN
+            d."order_id"
+            ELSE e."order_id"
+            END AS "province_order_id"
+            FROM sjzt_md."att_res_base" a
+            LEFT JOIN (
+            SELECT DISTINCT (dri."res_cd")
+            FROM sjzt_dw."dim_res_info_a" dri
+            LEFT JOIN sjzt_ods."dsm_spg_spprmp" dss
+            ON dri."oth_reg_cd" = dss."rscd"
+            WHERE dss."rscd" is NOT NULL
+            ) f ON a."guid" = f."res_cd"
+            LEFT JOIN (
+            SELECT distinct(dri."res_cd")
+            FROM sjzt_dw."dim_res_info_a" dri
+            LEFT JOIN sjzt_ods."dsm_spg_spqnmp" dss ON trim(dss."rscd") = dri."oth_reg_cd"
+            WHERE dss."rscd" is NOT NULL
+            ) G ON a."guid" = g."res_cd"
+            LEFT JOIN (
+            SELECT distinct("res_cd")
+            FROM sjzt_md."att_wy_cd_base" awcb
+            WHERE awcb."cd" != '00'
+            ) h ON a."guid" = h."res_cd"
+            LEFT JOIN sjzt_md."att_ad_base" b ON a."interior_ad_guid" = b."guid"
+            LEFT JOIN sjzt_md."att_ad_base" c ON b."p_ad_code" = c."guid"
+            LEFT JOIN sjzt_md."att_ad_base" d ON c."p_ad_code" = d."guid"
+            LEFT JOIN sjzt_md."att_ad_base" e ON d."p_ad_code" = e."guid"
+            WHERE
+            (
+            f."res_cd" is NOT null
+            OR g."res_cd" is NOT null
+            OR h."res_cd" is NOT null
+            )
+            AND (d."ad_code" = aab."guid"
+            OR c."ad_code" = aab."guid"
+            OR b."ad_code" = aab."guid" )
+            )
+            ) allNum
+            FROM SJZT_MD."att_ad_base" aab
+            where
+            <choose>
+                <when test="dam.adCode != null and dam.adCode !='' ">
+                    "p_ad_code" = #{dam.adCode}
+                </when>
+                <otherwise>
+                    "ad_grad" = 2
+                </otherwise>
+            </choose>
         )
     </select>
 
@@ -434,7 +510,6 @@
         info."guid" AS resCd,
         info."name" AS resName,
         info."eng_scal" AS engScal,
-        info."res_reg_code" AS resRegCode,
         info."town_ad_code" AS townCode,
         info."town_ad_name" AS townName,
         info."county_ad_code" AS countyCode,
@@ -453,7 +528,6 @@
         a."guid",
         a."name",
         a."eng_scal",
-        a."res_reg_code",
         case when b."ad_grad" = 4 THEN b."ad_code" ELSE NULL END AS "town_ad_code",
         case when b."ad_grad" = 4 THEN b."ad_name" ELSE NULL END AS "town_ad_name",
         case when b."ad_grad" = 4 THEN b."order_id" ELSE NULL END AS "town_order_id",
@@ -473,34 +547,41 @@
         case when b."ad_grad" = 1 THEN b."order_id" when c."ad_grad" = 1 THEN c."order_id" when d."ad_grad" = 1 THEN
         d."order_id" ELSE e."order_id" END AS "province_order_id"
         FROM sjzt_md."att_res_base" a
-
-
         LEFT JOIN (
+
+
         SELECT
         distinct (dri."res_cd")
         FROM
         sjzt_dw."dim_res_info_a" dri
         LEFT JOIN sjzt_ods."dsm_spg_spprmp" dss ON dri."oth_reg_cd" = dss."rscd"
         where dss."rscd" is not null
+
         ) f ON a."guid" = f."res_cd"
-
-
         LEFT JOIN (
+
+
         SELECT distinct(dri."res_cd")
         from sjzt_dw."dim_res_info_a" dri
         left join sjzt_ods."dsm_spg_spqnmp" dss on trim(dss."rscd") = dri."oth_reg_cd"
         where dss."rscd" is not null
+
         ) G on a."guid" = g."res_cd"
         LEFT JOIN (
+
         SELECT distinct("res_cd") from sjzt_md."att_wy_cd_base" awcb
         where awcb."cd" != '00'
-        ) h ON a."guid" = h."res_cd"
 
+        ) h ON a."guid" = h."res_cd"
         LEFT JOIN sjzt_md."att_ad_base" b ON a."interior_ad_guid" = b."guid"
         LEFT JOIN sjzt_md."att_ad_base" c ON b."p_ad_code" = c."guid"
         LEFT JOIN sjzt_md."att_ad_base" d ON c."p_ad_code" = d."guid"
         LEFT JOIN sjzt_md."att_ad_base" e ON d."p_ad_code" = e."guid"
         where (f."res_cd" is not null OR g."res_cd" is not null OR h."res_cd" is not null)
+        <if test="dam.adCode != null and dam.adCode !='' ">
+            AND (c."ad_code" = #{dam.adCode} or d."ad_code" =#{dam.adCode}or e."ad_code" = #{dam.adCode})
+        </if>
+
         ) baseRes
         LEFT JOIN (
 
@@ -545,17 +626,15 @@
 
 
         ) sl ON sl."res_cd" = baseRes."guid"
-
-
         LEFT JOIN (
         SELECT DAM_ID ,COUNT(*) errorNum FROM NKY_ALARM_GET
         WHERE 1=1
 
         <if test="dam.startTime != null and dam.startTime != ''">
-            AND DATE_FORMAT(time,'%Y-%m-%d') &gt;= #{dam.startTime}
+            AND time &gt;= #{dam.startTime}
         </if>
         <if test="dam.endTime != null and dam.endTime !='' ">
-            AND DATE_FORMAT(time,'%Y-%m-%d') &lt;= #{dam.endTime}
+            AND time &lt;= #{dam.endTime}
         </if>
 
 
@@ -568,29 +647,23 @@
         SELECT DAM_ID, COUNT(*) FROM YWXT.NKY_ALARM_GET
         WHERE 1=1
         <if test="dam.startTime != null and dam.startTime != ''">
-            AND DATE_FORMAT(time,'%Y-%m-%d') &gt;= #{dam.startTime}
+            AND time &gt;= #{dam.startTime}
         </if>
         <if test="dam.endTime != null and dam.endTime !='' ">
-            AND DATE_FORMAT(time,'%Y-%m-%d') &lt;= #{dam.endTime}
+            AND time &lt;= #{dam.endTime}
         </if>
         GROUP BY DAM_ID,POINT_ID
         ) baseCount GROUP BY DAM_ID) c1 ON c1.dam_id = baseRes."guid"
 
-        LEFT JOIN SJZT_MD."att_ad_base" town ON town."guid" = "town_ad_code"
-        LEFT JOIN SJZT_MD."att_ad_base" county ON county."guid" = town."p_ad_code"
-        LEFT JOIN SJZT_MD."att_ad_base" city ON city."guid" = county."p_ad_code"
-        LEFT JOIN SJZT_MD."att_ad_base" province ON province."guid" = city."p_ad_code"
+
         WHERE 1=1
         <!--这里加条件-->
-        <if test="dam.adCode != null and dam.adCode !='' ">
-            AND (province."ad_code" = #{dam.adCode} or city."ad_code" =#{dam.adCode}or county."ad_code" = #{dam.adCode}
-            )
-        </if>
+
 
         <if test="dam.resName != null and dam.resName !='' ">
             AND "name" LIKE CONCAT('%',#{dam.resName},'%')
         </if>
-        ) info
+        ) info order by info.errorNum desc
 
     </select>
 
@@ -684,10 +757,10 @@
         WHERE 1=1
 
         <if test="dam.startTime != null and dam.startTime != ''">
-            AND DATE_FORMAT(time,'%Y-%m-%d') &gt;= #{dam.startTime}
+            AND time &gt;= #{dam.startTime}
         </if>
         <if test="dam.endTime != null and dam.endTime !='' ">
-            AND DATE_FORMAT(time,'%Y-%m-%d') &lt;= #{dam.endTime}
+            AND time &lt;= #{dam.endTime}
         </if>
 
 
@@ -700,10 +773,10 @@
         SELECT DAM_ID, COUNT(*) FROM YWXT.NKY_ALARM_GET
         WHERE 1=1
         <if test="dam.startTime != null and dam.startTime != ''">
-            AND DATE_FORMAT(time,'%Y-%m-%d') &gt;= #{dam.startTime}
+            AND time &gt;= #{dam.startTime}
         </if>
         <if test="dam.endTime != null and dam.endTime !='' ">
-            AND DATE_FORMAT(time,'%Y-%m-%d') &lt;= #{dam.endTime}
+            AND time &lt;= #{dam.endTime}
         </if>
         GROUP BY DAM_ID,POINT_ID
         ) baseCount GROUP BY DAM_ID) c1 ON c1.dam_id = baseRes."guid"
@@ -728,9 +801,9 @@
 
 
     <select id="tableResCountPageOptimize" resultType="cn.gistack.sm.damSecurity.vo.DamStationStatistics">
-
         SELECT
         info."guid" AS resCd,
+        info."res_reg_code" as resRegCode,
         info."name" AS resName,
         info."eng_scal" AS engScal,
         info."town_ad_code" AS townCode,
@@ -751,6 +824,7 @@
         a."guid",
         a."name",
         a."eng_scal",
+        a."res_reg_code",
         case when b."ad_grad" = 4 THEN b."ad_code" ELSE NULL END AS "town_ad_code",
         case when b."ad_grad" = 4 THEN b."ad_name" ELSE NULL END AS "town_ad_name",
         case when b."ad_grad" = 4 THEN b."order_id" ELSE NULL END AS "town_order_id",
@@ -771,52 +845,40 @@
         d."order_id" ELSE e."order_id" END AS "province_order_id"
         FROM sjzt_md."att_res_base" a
         LEFT JOIN (
-
-
         SELECT
         distinct (dri."res_cd")
         FROM
         sjzt_dw."dim_res_info_a" dri
         LEFT JOIN sjzt_ods."dsm_spg_spprmp" dss ON dri."oth_reg_cd" = dss."rscd"
         where dss."rscd" is not null
-
         ) f ON a."guid" = f."res_cd"
         LEFT JOIN (
-
-
         SELECT distinct(dri."res_cd")
         from sjzt_dw."dim_res_info_a" dri
         left join sjzt_ods."dsm_spg_spqnmp" dss on trim(dss."rscd") = dri."oth_reg_cd"
         where dss."rscd" is not null
-
         ) G on a."guid" = g."res_cd"
         LEFT JOIN (
-
         SELECT distinct("res_cd") from sjzt_md."att_wy_cd_base" awcb
         where awcb."cd" != '00'
-
         ) h ON a."guid" = h."res_cd"
         LEFT JOIN sjzt_md."att_ad_base" b ON a."interior_ad_guid" = b."guid"
         LEFT JOIN sjzt_md."att_ad_base" c ON b."p_ad_code" = c."guid"
         LEFT JOIN sjzt_md."att_ad_base" d ON c."p_ad_code" = d."guid"
         LEFT JOIN sjzt_md."att_ad_base" e ON d."p_ad_code" = e."guid"
         where (f."res_cd" is not null OR g."res_cd" is not null OR h."res_cd" is not null)
+        <if test="dam.adCode != null and dam.adCode !='' ">
+            AND (c."ad_code" = #{dam.adCode} or d."ad_code" =#{dam.adCode}or e."ad_code" = #{dam.adCode})
+        </if>
         ) baseRes
         LEFT JOIN (
-
-
         select res."res_cd",count(*) wyStation from(
-
             SELECT distinct("res_cd") from sjzt_md."att_wy_cd_base" awcb
             where awcb."cd" != '00'
-
         )res LEFT JOIN SJZT_MD."att_wy_cd_base" acb ON acb."res_cd" = res."res_cd"
         where acb."cd_type" = 'wy' group by res."res_cd"
-
-
         ) wy ON wy."res_cd" = baseRes."guid"
         LEFT JOIN(
-
                 select res."res_cd",count(*) syStation from(
                 SELECT
                 distinct (dri."res_cd")
@@ -826,78 +888,84 @@
                 where dss."rscd" is not null
                 )res LEFT JOIN SJZT_MD."att_cd_base" acb ON acb."res_cd" = res."res_cd"
                 where acb."cd_type" = 'sy' group by res."res_cd"
-
         ) sy ON sy."res_cd" = baseRes."guid"
         LEFT JOIN (
-
-
         select res."res_cd",count(*) slStation from(
-
-
         SELECT distinct(dri."res_cd")
         from sjzt_dw."dim_res_info_a" dri
         left join sjzt_ods."dsm_spg_spqnmp" dss on trim(dss."rscd") = dri."oth_reg_cd"
         where dss."rscd" is not null
-
-
         )res LEFT JOIN SJZT_MD."att_cd_base" acb ON acb."res_cd" = res."res_cd"
         where acb."cd_type" = 'sl' group by res."res_cd"
-
-
         ) sl ON sl."res_cd" = baseRes."guid"
         LEFT JOIN (
         SELECT DAM_ID ,COUNT(*) errorNum FROM NKY_ALARM_GET
         WHERE 1=1
-
         <if test="dam.startTime != null and dam.startTime != ''">
-            AND DATE_FORMAT(time,'%Y-%m-%d') &gt;= #{dam.startTime}
+            AND time &gt;= #{dam.startTime}
         </if>
         <if test="dam.endTime != null and dam.endTime !='' ">
-            AND DATE_FORMAT(time,'%Y-%m-%d') &lt;= #{dam.endTime}
+            AND time &lt;= #{dam.endTime}
         </if>
-
-
         GROUP BY "DAM_ID"
         ) alarm ON alarm.DAM_ID = baseRes."guid"
-
         LEFT JOIN (
         SELECT DAM_ID ,COUNT(*) errorCountNum
         FROM (
         SELECT DAM_ID, COUNT(*) FROM YWXT.NKY_ALARM_GET
         WHERE 1=1
         <if test="dam.startTime != null and dam.startTime != ''">
-            AND DATE_FORMAT(time,'%Y-%m-%d') &gt;= #{dam.startTime}
+            AND time &gt;= #{dam.startTime}
         </if>
         <if test="dam.endTime != null and dam.endTime !='' ">
-            AND DATE_FORMAT(time,'%Y-%m-%d') &lt;= #{dam.endTime}
+            AND time &lt;= #{dam.endTime}
         </if>
         GROUP BY DAM_ID,POINT_ID
         ) baseCount GROUP BY DAM_ID) c1 ON c1.dam_id = baseRes."guid"
-
-        LEFT JOIN SJZT_MD."att_ad_base" town ON town."guid" = "town_ad_code"
-        LEFT JOIN SJZT_MD."att_ad_base" county ON county."guid" = town."p_ad_code"
-        LEFT JOIN SJZT_MD."att_ad_base" city ON city."guid" = county."p_ad_code"
-        LEFT JOIN SJZT_MD."att_ad_base" province ON province."guid" = city."p_ad_code"
         WHERE 1=1
-        <!--这里加条件-->
-        <if test="dam.adCode != null and dam.adCode !='' ">
-            AND (province."ad_code" = #{dam.adCode} or city."ad_code" =#{dam.adCode}or county."ad_code" = #{dam.adCode}
-            )
-        </if>
-
         <if test="dam.resName != null and dam.resName !='' ">
             AND "name" LIKE CONCAT('%',#{dam.resName},'%')
         </if>
-        ) info
+        ) info order by info.errorNum desc
     </select>
 
 
 
 
+    <select id="alarmResCountByZt" resultType="cn.gistack.sm.damSecurity.vo.DamStationStatistics">
+        SELECT
+        arb."center_long" AS longitude,
+        arb."center_lat" AS latitude,
+        arb."name" as resName,
+        sar.reservoir_number resCd,
+        abb."code" AS basCode,
+        abb."name" AS basName
+        FROM
+        (
+
+        select sar.* from YWXT.sm_alarm_record sar
+        left join ywxt.sm_alarm_rule b on (sar.alarm_rule_id = b.id)
+        where sar.create_time >= #{dam.startTime} and sar.create_time &lt;= #{dam.endTime}
+        and b.create_alarm_type not like '%缺失%'
+        and (b.type = '渗压监测' or b.type = '变形监测' or b.type = '渗流监测')
+        and (b.ALARM_LEVEL = '红色预警' or b.ALARM_LEVEL = '橙色预警')
+        ) sar
+        LEFT JOIN SJZT_MD."att_res_base" arb ON arb."guid" = sar.reservoir_number
+        LEFT JOIN SJZT_MD."att_ad_base" town ON town."guid" = arb."interior_ad_guid"
+        LEFT JOIN SJZT_MD."att_ad_base" county ON county."guid" = town."p_ad_code"
+        LEFT JOIN SJZT_MD."att_ad_base" city ON city."guid" = county."p_ad_code"
+        LEFT JOIN SJZT_MD."att_ad_base" province ON province."guid" = city."p_ad_code"
+
+        LEFT JOIN SJZT_MD."rel_res_bas_loc" rrbl ON rrbl."res_guid" = sar.reservoir_number
+        LEFT JOIN SJZT_MD."att_bas_base" abb ON abb."code" = rrbl."bas_guid"
+        LEFT JOIN SJZT_MD."att_bas_base" pabb ON abb."p_code" = pabb."code"
+    </select>
+
     <select id="alarmResCount" resultType="cn.gistack.sm.damSecurity.vo.DamStationStatistics">
         SELECT
         arb."center_long" AS longitude,
         arb."center_lat" AS latitude,
+        arb."name" as resName,
         resCd,
         abb."code" AS basCode,
         abb."name" AS basName
@@ -1479,12 +1547,12 @@
                         LEFT JOIN SJZT_MD."att_bas_base" abb ON abb."code" = rrbl."bas_guid"
                         LEFT JOIN SJZT_MD."att_bas_base" pabb ON abb."p_code" = pabb."code"
                         where (d."ad_code" = aab."guid" or c."ad_code" = aab."guid" or b."ad_code" = aab."guid" )
-                        <if test="dam.startTime != null and dam.startTime != ''">
-                            AND DATE_FORMAT(time,'%Y-%m-%d') &gt;= #{dam.startTime}
-                        </if>
-                        <if test="dam.endTime != null and dam.endTime !='' ">
-                            AND DATE_FORMAT(time,'%Y-%m-%d') &lt;= #{dam.endTime}
-                        </if>
+        <if test="dam.startTime != null and dam.startTime != ''">
+            AND time &gt;= #{dam.startTime}
+        </if>
+        <if test="dam.endTime != null and dam.endTime !='' ">
+            AND time &lt;= #{dam.endTime}
+        </if>
 
                         <if test="dam.engScal != null and dam.engScal !='' ">
                             AND arb."eng_scal" = #{dam.engScal}
@@ -1557,12 +1625,13 @@
                 LEFT JOIN SJZT_MD."att_bas_base" abb ON abb."code" = rrbl."bas_guid"
                 LEFT JOIN SJZT_MD."att_bas_base" pabb ON abb."p_code" = pabb."code"
         where 1=1 and NAG.level != 5
-        AND (province."ad_code" = #{dam.adCode} or city."ad_code" = #{dam.adCode} or county."ad_code" = #{dam.adCode}  or town."ad_code" = #{dam.adCode})
+
+        AND CONCAT(province."ad_code",city."ad_code",county."ad_code",town."ad_code") LIKE CONCAT('%',#{dam.adCode},'%')
         <if test="dam.startTime != null and dam.startTime != ''">
-            AND DATE_FORMAT(time,'%Y-%m-%d') &gt;= #{dam.startTime}
+            AND time &gt;= #{dam.startTime}
         </if>
         <if test="dam.endTime != null and dam.endTime !='' ">
-            AND DATE_FORMAT(time,'%Y-%m-%d') &lt;= #{dam.endTime}
+            AND time &lt;= #{dam.endTime}
         </if>
 
         <if test="dam.engScal != null and dam.engScal !='' ">
@@ -1653,15 +1722,13 @@
         LEFT JOIN SJZT_MD."att_cd_base" acb ON acb."res_cd" = NAG.DAM_ID AND NAG.POINT_ID = acb."cd"
         WHERE 1=1 and level != 5
         <if test=" vo.adCode != null and vo.adCode !='' ">
-            AND (province."ad_code" =#{vo.adCode} or city."ad_code" = #{vo.adCode} or county."ad_code" = #{vo.adCode})
+            AND CONCAT(province."ad_code",city."ad_code",county."ad_code",town."ad_code") LIKE CONCAT('%',#{vo.adCode},'%')
         </if>
-
         <if test="vo.startTime != null and vo.startTime != ''">
-            AND DATE_FORMAT(NAG.time,'%Y-%m-%d')  &gt;= #{vo.startTime}
+            AND NAG.time &gt;= #{vo.startTime}
         </if>
-
         <if test="vo.endTime != null and vo.endTime !='' ">
-            AND DATE_FORMAT(NAG.time,'%Y-%m-%d') &lt;= #{vo.endTime}
+            AND NAG.time &lt;= #{vo.endTime}
         </if>
 
         <if test="vo.level != null and vo.level !='' ">
@@ -1773,15 +1840,15 @@
         LEFT JOIN SJZT_MD."att_wy_cd_base" awcb ON awcb."res_cd" = NAG.DAM_ID AND NAG.POINT_ID = awcb."cd"
         WHERE 1=1 and level != 5
         <if test=" vo.adCode != null and vo.adCode !='' ">
-            AND (province."ad_code" =#{vo.adCode} or city."ad_code" = #{vo.adCode} or county."ad_code" = #{vo.adCode})
+            AND CONCAT(province."ad_code",city."ad_code",county."ad_code",town."ad_code") LIKE CONCAT('%',#{vo.adCode},'%')
         </if>
 
         <if test="vo.startTime != null and vo.startTime != ''">
-            AND DATE_FORMAT(NAG.time,'%Y-%m-%d')  &gt;= #{vo.startTime}
+            AND NAG.time  &gt;= #{vo.startTime}
         </if>
 
         <if test="vo.endTime != null and vo.endTime !='' ">
-            AND DATE_FORMAT(NAG.time,'%Y-%m-%d') &lt;= #{vo.endTime}
+            AND NAG.time &lt;= #{vo.endTime}
         </if>
 
         <if test="vo.level != null and vo.level !='' ">
@@ -1830,7 +1897,6 @@
                 #{item}
             </foreach>
         </if>
-        ORDER BY NAG.TIME DESC
 
     </select>
 
@@ -4049,148 +4115,606 @@
 
 
     <select id="damResInfoCountSy" resultType="cn.gistack.sm.damSecurity.vo.DamStatisticsRes">
-        SELECT
-            base.total,
-            base.errorNum,
-            (base.total-base.errorNum) as normalNum,
-            base.typeName,
-            base.type FROM (
-                SELECT
-                COUNT(*) total,
-                '渗压' AS typeName ,
-                '1' AS type,
-                (SELECT COUNT(*) FROM
-                (
-                SELECT DAM_ID FROM YWXT.NKY_ALARM_GET temp
-                LEFT JOIN SJZT_MD."att_res_base" arb ON arb."guid" = temp.dam_id
-                LEFT JOIN SJZT_MD."att_ad_base" town ON town."guid" = arb."interior_ad_guid"
-                LEFT JOIN SJZT_MD."att_ad_base" county ON county."guid" = town."p_ad_code"
-                LEFT JOIN SJZT_MD."att_ad_base" city ON city."guid" = county."p_ad_code"
-                LEFT JOIN SJZT_MD."att_ad_base" province ON province."guid" = city."p_ad_code"
-                WHERE
-                TYPE = 1
-                AND DATE_FORMAT(time,'%Y-%m-%d')>= CURDATE()
-                <if test=" adCode!= null and adCode !='' ">
-                    AND (province."ad_code" =#{adCode} or city."ad_code" = #{adCode} or county."ad_code" = #{adCode})
-                </if>
-                GROUP BY DAM_ID
-                )
-                ) errorNum
-                FROM
-                (
-                SELECT
-                distinct (dri."res_cd")
-                FROM
-                sjzt_dw."dim_res_info_a" dri
-                LEFT JOIN sjzt_ods."dsm_spg_spprmp" dss ON dri."oth_reg_cd" = dss."rscd"
-                LEFT JOIN SJZT_MD."att_res_base" arb ON arb."guid" = dri."res_cd"
-                LEFT JOIN SJZT_MD."att_ad_base" town ON town."guid" = arb."interior_ad_guid"
-                LEFT JOIN SJZT_MD."att_ad_base" county ON county."guid" = town."p_ad_code"
-                LEFT JOIN SJZT_MD."att_ad_base" city ON city."guid" = county."p_ad_code"
-                LEFT JOIN SJZT_MD."att_ad_base" province ON province."guid" = city."p_ad_code"
 
-                where dss."rscd" is not null
-                <if test=" adCode!= null and adCode !='' ">
-                    AND (province."ad_code" =#{adCode} or city."ad_code" = #{adCode} or county."ad_code" = #{adCode})
-                </if>
-                )
-        )base
+        SELECT '1' as type,'渗压' as typeName, SUM(TMP.allNum) total,sum(TMP.errorNum) errorNum,sum(normalNum) normalNum FROM (
+        select "ad_code","ad_name",allNum,errorNum,allNum-errorNum normalNum from (
+        select "ad_code","ad_name",
+        (
+        select count(*) from  (
+        select max(NAG.dam_id) dam_id
+        FROM ywxt.NKY_ALARM_GET NAG
+        where
+                        TYPE = 1
+                        AND time>= CURDATE()
+        group by NAG.dam_id
+        ) NAG
+        left join sjzt_md."att_res_base" res on (res."guid" = NAG.dam_id)
+        left join sjzt_md."att_ad_base" ada on (ada."guid" = res."interior_ad_guid")
+        left join sjzt_md."att_ad_base" adb on (adb."guid" = ada."p_ad_code")
+        left join sjzt_md."att_ad_base" adc on (adc."guid" = adb."p_ad_code")
+        left join sjzt_md."att_ad_base" addd on (addd."guid" = adc."p_ad_code")
+        where res."interior_ad_guid" = aab."guid" or ada."guid" = aab."guid" or adb."guid" = aab."guid" or adc."guid" = aab."guid" or addd."guid" = aab."guid"
+
+        ) as errorNum,
+        (
+        SELECT COUNT(*) FROM (
+        SELECT a."guid",a."name",a."eng_scal",
+        CASE
+        WHEN b."ad_grad" = 4 THEN
+        b."ad_code"
+        ELSE NULL
+        END AS "town_ad_code",
+        CASE
+        WHEN b."ad_grad" = 4 THEN
+        b."ad_name"
+        ELSE NULL
+        END AS "town_ad_name",
+        CASE
+        WHEN b."ad_grad" = 4 THEN
+        b."order_id"
+        ELSE NULL
+        END AS "town_order_id",
+        CASE
+        WHEN b."ad_grad" = 3 THEN
+        b."ad_code"
+        WHEN c."ad_grad" = 3 THEN
+        c."ad_code"
+        END AS "county_ad_code",
+        CASE
+        WHEN b."ad_grad" = 3 THEN
+        b."ad_name"
+        WHEN c."ad_grad" = 3 THEN
+        C."ad_name"
+        END AS "county_ad_name",
+        CASE
+        WHEN b."ad_grad" = 3 THEN
+        b."order_id"
+        WHEN c."ad_grad" = 3 THEN
+        C."order_id"
+        END AS "county_order_id",
+        CASE
+        WHEN b."ad_grad" = 2 THEN
+        b."ad_code"
+        WHEN c."ad_grad" = 2 THEN
+        c."ad_code"
+        ELSE d."ad_code"
+        END AS "city_ad_code",
+        CASE
+        WHEN b."ad_grad" = 2 THEN
+        b."ad_name"
+        WHEN c."ad_grad" = 2 THEN
+        c."ad_name"
+        ELSE d."ad_name"
+        END AS "city_ad_name",
+        CASE
+        WHEN b."ad_grad" = 2 THEN
+        b."order_id"
+        WHEN c."ad_grad" = 2 THEN
+        c."order_id"
+        ELSE d."order_id"
+        END AS "city_order_id",
+        CASE
+        WHEN b."ad_grad" = 1 THEN
+        b."ad_code"
+        WHEN c."ad_grad" = 1 THEN
+        c."ad_code"
+        WHEN d."ad_grad" = 1 THEN
+        d."ad_code"
+        ELSE e."ad_code"
+        END AS "province_ad_code",
+        CASE
+        WHEN b."ad_grad" = 1 THEN
+        b."ad_name"
+        WHEN c."ad_grad" = 1 THEN
+        c."ad_name"
+        WHEN d."ad_grad" = 1 THEN
+        d."ad_name"
+        ELSE e."ad_name"
+        END AS "province_ad_name",
+        CASE
+        WHEN b."ad_grad" = 1 THEN
+        b."order_id"
+        WHEN c."ad_grad" = 1 THEN
+        c."order_id"
+        WHEN d."ad_grad" = 1 THEN
+        d."order_id"
+        ELSE e."order_id"
+        END AS "province_order_id"
+        FROM sjzt_md."att_res_base" a
+
+        LEFT JOIN (
+        SELECT DISTINCT (dri."res_cd")
+        FROM sjzt_dw."dim_res_info_a" dri
+        LEFT JOIN sjzt_ods."dsm_spg_spprmp" dss
+        ON dri."oth_reg_cd" = dss."rscd"
+        WHERE dss."rscd" is NOT NULL
+        ) f ON a."guid" = f."res_cd"
+
+
+
+        LEFT JOIN sjzt_md."att_ad_base" b ON a."interior_ad_guid" = b."guid"
+        LEFT JOIN sjzt_md."att_ad_base" c ON b."p_ad_code" = c."guid"
+        LEFT JOIN sjzt_md."att_ad_base" d ON c."p_ad_code" = d."guid"
+        LEFT JOIN sjzt_md."att_ad_base" e ON d."p_ad_code" = e."guid"
+        WHERE
+        (
+        f."res_cd" is NOT null
+        )
+        AND (d."ad_code" = aab."guid"
+        OR c."ad_code" = aab."guid"
+        OR b."ad_code" = aab."guid" )
+        )
+        ) allNum
+
+        FROM SJZT_MD."att_ad_base" aab
+        where
+        <choose>
+            <when test="adCode != null and adCode !='' ">
+                "p_ad_code" = #{adCode}
+            </when>
+            <otherwise>
+                "ad_grad" = 2
+            </otherwise>
+        </choose>
+        )
+        )TMP
+
+
+
+
+
+
+
+
+
+
 
 
 
     </select>
     <select id="damResInfoCountSl" resultType="cn.gistack.sm.damSecurity.vo.DamStatisticsRes">
-        SELECT
-        base.total,
-        base.errorNum,
-        (base.total-base.errorNum) as normalNum,
-        base.typeName,
-        base.type FROM (
-            SELECT
-            COUNT(*) total,
-            '渗流' AS typeName ,
-            '2' AS type,
-            (SELECT COUNT(*) FROM
-            (
-            SELECT DAM_ID FROM YWXT.NKY_ALARM_GET temp
-            LEFT JOIN SJZT_MD."att_res_base" arb ON arb."guid" = temp.dam_id
-            LEFT JOIN SJZT_MD."att_ad_base" town ON town."guid" = arb."interior_ad_guid"
-            LEFT JOIN SJZT_MD."att_ad_base" county ON county."guid" = town."p_ad_code"
-            LEFT JOIN SJZT_MD."att_ad_base" city ON city."guid" = county."p_ad_code"
-            LEFT JOIN SJZT_MD."att_ad_base" province ON province."guid" = city."p_ad_code"
-            WHERE
-            TYPE = 2
-            AND DATE_FORMAT(time,'%Y-%m-%d')>= CURDATE()
-            <if test=" adCode!= null and adCode !='' ">
-                AND (province."ad_code" =#{adCode} or city."ad_code" = #{adCode} or county."ad_code" = #{adCode})
-            </if>
-            GROUP BY DAM_ID
-            )
-            ) errorNum
-            FROM
-            (
-            select distinct(dri."res_cd")
-            from sjzt_dw."dim_res_info_a" dri
-            left join sjzt_ods."dsm_spg_spqnmp" dss on trim(dss."rscd") = dri."oth_reg_cd"
-            LEFT JOIN SJZT_MD."att_res_base" arb ON arb."guid" = dri."res_cd"
-            LEFT JOIN SJZT_MD."att_ad_base" town ON town."guid" = arb."interior_ad_guid"
-            LEFT JOIN SJZT_MD."att_ad_base" county ON county."guid" = town."p_ad_code"
-            LEFT JOIN SJZT_MD."att_ad_base" city ON city."guid" = county."p_ad_code"
-            LEFT JOIN SJZT_MD."att_ad_base" province ON province."guid" = city."p_ad_code"
-            where dss."rscd" is not null
-            <if test=" adCode!= null and adCode !='' ">
-                AND (province."ad_code" =#{adCode} or city."ad_code" = #{adCode} or county."ad_code" = #{adCode})
-            </if>
-            )
-        )base
+
+        SELECT  '2' as type,'渗流' as typeName, SUM(TMP.allNum) total,sum(TMP.errorNum) errorNum,sum(normalNum) normalNum FROM (
+        select "ad_code","ad_name",allNum,errorNum,allNum-errorNum normalNum from (
+        select "ad_code","ad_name",
+        (
+        select count(*) from  (
+        select max(NAG.dam_id) dam_id
+        FROM ywxt.NKY_ALARM_GET NAG
+        where TYPE = 2
+        AND time>= CURDATE()
+        group by NAG.dam_id
+        ) NAG
+        left join sjzt_md."att_res_base" res on (res."guid" = NAG.dam_id)
+        left join sjzt_md."att_ad_base" ada on (ada."guid" = res."interior_ad_guid")
+        left join sjzt_md."att_ad_base" adb on (adb."guid" = ada."p_ad_code")
+        left join sjzt_md."att_ad_base" adc on (adc."guid" = adb."p_ad_code")
+        left join sjzt_md."att_ad_base" addd on (addd."guid" = adc."p_ad_code")
+        where res."interior_ad_guid" = aab."guid" or ada."guid" = aab."guid" or adb."guid" = aab."guid" or adc."guid" = aab."guid" or addd."guid" = aab."guid"
+
+
+        ) as errorNum,
+        (
+        SELECT COUNT(*) FROM (
+        SELECT a."guid",a."name",a."eng_scal",
+        CASE
+        WHEN b."ad_grad" = 4 THEN
+        b."ad_code"
+        ELSE NULL
+        END AS "town_ad_code",
+        CASE
+        WHEN b."ad_grad" = 4 THEN
+        b."ad_name"
+        ELSE NULL
+        END AS "town_ad_name",
+        CASE
+        WHEN b."ad_grad" = 4 THEN
+        b."order_id"
+        ELSE NULL
+        END AS "town_order_id",
+        CASE
+        WHEN b."ad_grad" = 3 THEN
+        b."ad_code"
+        WHEN c."ad_grad" = 3 THEN
+        c."ad_code"
+        END AS "county_ad_code",
+        CASE
+        WHEN b."ad_grad" = 3 THEN
+        b."ad_name"
+        WHEN c."ad_grad" = 3 THEN
+        C."ad_name"
+        END AS "county_ad_name",
+        CASE
+        WHEN b."ad_grad" = 3 THEN
+        b."order_id"
+        WHEN c."ad_grad" = 3 THEN
+        C."order_id"
+        END AS "county_order_id",
+        CASE
+        WHEN b."ad_grad" = 2 THEN
+        b."ad_code"
+        WHEN c."ad_grad" = 2 THEN
+        c."ad_code"
+        ELSE d."ad_code"
+        END AS "city_ad_code",
+        CASE
+        WHEN b."ad_grad" = 2 THEN
+        b."ad_name"
+        WHEN c."ad_grad" = 2 THEN
+        c."ad_name"
+        ELSE d."ad_name"
+        END AS "city_ad_name",
+        CASE
+        WHEN b."ad_grad" = 2 THEN
+        b."order_id"
+        WHEN c."ad_grad" = 2 THEN
+        c."order_id"
+        ELSE d."order_id"
+        END AS "city_order_id",
+        CASE
+        WHEN b."ad_grad" = 1 THEN
+        b."ad_code"
+        WHEN c."ad_grad" = 1 THEN
+        c."ad_code"
+        WHEN d."ad_grad" = 1 THEN
+        d."ad_code"
+        ELSE e."ad_code"
+        END AS "province_ad_code",
+        CASE
+        WHEN b."ad_grad" = 1 THEN
+        b."ad_name"
+        WHEN c."ad_grad" = 1 THEN
+        c."ad_name"
+        WHEN d."ad_grad" = 1 THEN
+        d."ad_name"
+        ELSE e."ad_name"
+        END AS "province_ad_name",
+        CASE
+        WHEN b."ad_grad" = 1 THEN
+        b."order_id"
+        WHEN c."ad_grad" = 1 THEN
+        c."order_id"
+        WHEN d."ad_grad" = 1 THEN
+        d."order_id"
+        ELSE e."order_id"
+        END AS "province_order_id"
+        FROM sjzt_md."att_res_base" a
+
+
+
+        LEFT JOIN (
+        SELECT distinct(dri."res_cd")
+        FROM sjzt_dw."dim_res_info_a" dri
+        LEFT JOIN sjzt_ods."dsm_spg_spqnmp" dss ON trim(dss."rscd") = dri."oth_reg_cd"
+        WHERE dss."rscd" is NOT NULL
+        ) G ON a."guid" = g."res_cd"
+
+
+
+        LEFT JOIN sjzt_md."att_ad_base" b ON a."interior_ad_guid" = b."guid"
+        LEFT JOIN sjzt_md."att_ad_base" c ON b."p_ad_code" = c."guid"
+        LEFT JOIN sjzt_md."att_ad_base" d ON c."p_ad_code" = d."guid"
+        LEFT JOIN sjzt_md."att_ad_base" e ON d."p_ad_code" = e."guid"
+        WHERE
+        (
+         g."res_cd" is NOT null
+        )
+        AND (d."ad_code" = aab."guid"
+        OR c."ad_code" = aab."guid"
+        OR b."ad_code" = aab."guid" )
+        )
+        ) allNum
+
+        FROM SJZT_MD."att_ad_base" aab
+        where
+        <choose>
+            <when test="adCode != null and adCode !='' ">
+                "p_ad_code" = #{adCode}
+            </when>
+            <otherwise>
+                "ad_grad" = 2
+            </otherwise>
+        </choose>
+        )
+        )TMP
 
 
     </select>
     <select id="damResInfoCountWy" resultType="cn.gistack.sm.damSecurity.vo.DamStatisticsRes">
-        SELECT
-        base.total,
-        base.errorNum,
-        (base.total-base.errorNum) as normalNum,
-        base.typeName,
-        base.type FROM (
-        SELECT
-        COUNT(*) total,
-        '位移' AS typeName ,
-        '3' AS type,
-        (SELECT COUNT(*) FROM
+
+
+        SELECT  '3' as type,'位移' as typeName, SUM(TMP.allNum) total,sum(TMP.errorNum) errorNum,sum(normalNum) normalNum FROM (
+        select "ad_code","ad_name",allNum,errorNum,allNum-errorNum normalNum from (
+        select "ad_code","ad_name",
         (
-        SELECT DAM_ID FROM YWXT.NKY_ALARM_GET temp
-        LEFT JOIN SJZT_MD."att_res_base" arb ON arb."guid" = temp.dam_id
-        LEFT JOIN SJZT_MD."att_ad_base" town ON town."guid" = arb."interior_ad_guid"
-        LEFT JOIN SJZT_MD."att_ad_base" county ON county."guid" = town."p_ad_code"
-        LEFT JOIN SJZT_MD."att_ad_base" city ON city."guid" = county."p_ad_code"
-        LEFT JOIN SJZT_MD."att_ad_base" province ON province."guid" = city."p_ad_code"
+        select count(*) from  (
+        select max(NAG.dam_id) dam_id
+        FROM ywxt.NKY_ALARM_GET NAG
+        where         (TYPE = 3 or type = 4 or type = 5)
+        AND time>= CURDATE()
+        group by NAG.dam_id
+        ) NAG
+        left join sjzt_md."att_res_base" res on (res."guid" = NAG.dam_id)
+        left join sjzt_md."att_ad_base" ada on (ada."guid" = res."interior_ad_guid")
+        left join sjzt_md."att_ad_base" adb on (adb."guid" = ada."p_ad_code")
+        left join sjzt_md."att_ad_base" adc on (adc."guid" = adb."p_ad_code")
+        left join sjzt_md."att_ad_base" addd on (addd."guid" = adc."p_ad_code")
+        where res."interior_ad_guid" = aab."guid" or ada."guid" = aab."guid" or adb."guid" = aab."guid" or adc."guid" = aab."guid" or addd."guid" = aab."guid"
+
+
+        ) as errorNum,
+        (
+        SELECT COUNT(*) FROM (
+        SELECT a."guid",a."name",a."eng_scal",
+        CASE
+        WHEN b."ad_grad" = 4 THEN
+        b."ad_code"
+        ELSE NULL
+        END AS "town_ad_code",
+        CASE
+        WHEN b."ad_grad" = 4 THEN
+        b."ad_name"
+        ELSE NULL
+        END AS "town_ad_name",
+        CASE
+        WHEN b."ad_grad" = 4 THEN
+        b."order_id"
+        ELSE NULL
+        END AS "town_order_id",
+        CASE
+        WHEN b."ad_grad" = 3 THEN
+        b."ad_code"
+        WHEN c."ad_grad" = 3 THEN
+        c."ad_code"
+        END AS "county_ad_code",
+        CASE
+        WHEN b."ad_grad" = 3 THEN
+        b."ad_name"
+        WHEN c."ad_grad" = 3 THEN
+        C."ad_name"
+        END AS "county_ad_name",
+        CASE
+        WHEN b."ad_grad" = 3 THEN
+        b."order_id"
+        WHEN c."ad_grad" = 3 THEN
+        C."order_id"
+        END AS "county_order_id",
+        CASE
+        WHEN b."ad_grad" = 2 THEN
+        b."ad_code"
+        WHEN c."ad_grad" = 2 THEN
+        c."ad_code"
+        ELSE d."ad_code"
+        END AS "city_ad_code",
+        CASE
+        WHEN b."ad_grad" = 2 THEN
+        b."ad_name"
+        WHEN c."ad_grad" = 2 THEN
+        c."ad_name"
+        ELSE d."ad_name"
+        END AS "city_ad_name",
+        CASE
+        WHEN b."ad_grad" = 2 THEN
+        b."order_id"
+        WHEN c."ad_grad" = 2 THEN
+        c."order_id"
+        ELSE d."order_id"
+        END AS "city_order_id",
+        CASE
+        WHEN b."ad_grad" = 1 THEN
+        b."ad_code"
+        WHEN c."ad_grad" = 1 THEN
+        c."ad_code"
+        WHEN d."ad_grad" = 1 THEN
+        d."ad_code"
+        ELSE e."ad_code"
+        END AS "province_ad_code",
+        CASE
+        WHEN b."ad_grad" = 1 THEN
+        b."ad_name"
+        WHEN c."ad_grad" = 1 THEN
+        c."ad_name"
+        WHEN d."ad_grad" = 1 THEN
+        d."ad_name"
+        ELSE e."ad_name"
+        END AS "province_ad_name",
+        CASE
+        WHEN b."ad_grad" = 1 THEN
+        b."order_id"
+        WHEN c."ad_grad" = 1 THEN
+        c."order_id"
+        WHEN d."ad_grad" = 1 THEN
+        d."order_id"
+        ELSE e."order_id"
+        END AS "province_order_id"
+        FROM sjzt_md."att_res_base" a
+
+
+        LEFT JOIN (
+        SELECT distinct("res_cd")
+        FROM sjzt_md."att_wy_cd_base" awcb
+        WHERE awcb."cd" != '00'
+        ) h ON a."guid" = h."res_cd"
+
+        LEFT JOIN sjzt_md."att_ad_base" b ON a."interior_ad_guid" = b."guid"
+        LEFT JOIN sjzt_md."att_ad_base" c ON b."p_ad_code" = c."guid"
+        LEFT JOIN sjzt_md."att_ad_base" d ON c."p_ad_code" = d."guid"
+        LEFT JOIN sjzt_md."att_ad_base" e ON d."p_ad_code" = e."guid"
         WHERE
-        (TYPE = 3 or type = 4 or type = 5)
-        AND DATE_FORMAT(time,'%Y-%m-%d')>= CURDATE()
-        <if test=" adCode!= null and adCode !='' ">
-            AND (province."ad_code" =#{adCode} or city."ad_code" = #{adCode} or county."ad_code" = #{adCode})
-        </if>
-        GROUP BY DAM_ID
-        )
-        ) errorNum
-        FROM
         (
-
-        select distinct("res_cd") from sjzt_md."att_wy_cd_base" awcb
-        LEFT JOIN SJZT_MD."att_res_base" arb ON arb."guid" = awcb."res_cd"
-        LEFT JOIN SJZT_MD."att_ad_base" town ON town."guid" = arb."interior_ad_guid"
-        LEFT JOIN SJZT_MD."att_ad_base" county ON county."guid" = town."p_ad_code"
-        LEFT JOIN SJZT_MD."att_ad_base" city ON city."guid" = county."p_ad_code"
-        LEFT JOIN SJZT_MD."att_ad_base" province ON province."guid" = city."p_ad_code"
-        where awcb."cd" != '00'
-        <if test=" adCode!= null and adCode !='' ">
-            AND (province."ad_code" =#{adCode} or city."ad_code" = #{adCode} or county."ad_code" = #{adCode})
-        </if>
+        h."res_cd" is NOT null
         )
-        )base
+        AND (d."ad_code" = aab."guid"
+        OR c."ad_code" = aab."guid"
+        OR b."ad_code" = aab."guid" )
+        )
+        ) allNum
 
+        FROM SJZT_MD."att_ad_base" aab
+        where
+        <choose>
+            <when test="adCode != null and adCode !='' ">
+                "p_ad_code" = #{adCode}
+            </when>
+            <otherwise>
+                "ad_grad" = 2
+            </otherwise>
+        </choose>
+        )
+        )TMP
+    </select>
+    <select id="getLatestResRecord" resultType="cn.gistack.nky.vo.AlarmGetVO">
+        SELECT
+            NAG.DAM_ID,
+            NAG.POINT_ID,
+            NAG.TYPE,
+            NAG.TIME,
+            NAG.VALUE,
+            NAG."DESC",
+            NAG.CREATE_TIME,
+            NAG.TASK_CATEGORY,
+            NAG.LEVEL,
+            NAG.BAOJINGZHI,
+            NAG.ORIGIN_ID,
+            NAG.FORWARD,
+            NAG."REVERSE",
+            NAG.RATIO,
 
+            ARB."name" reservoirName,
+            acb."cd_nm" cdName,
+
+            case when town."ad_grad" = 4 THEN town."ad_code" ELSE NULL END AS townCode,
+            case when town."ad_grad" = 4 THEN town."ad_name" ELSE NULL END AS townName,
+            case
+                when town."ad_grad" = 3 THEN town."ad_code"
+                when county."ad_grad" = 3 THEN county."ad_code" END        AS countyCode,
+            case
+                when town."ad_grad" = 3 THEN town."ad_name"
+                when county."ad_grad" = 3 THEN county."ad_name" END        AS countyName,
+            case
+                when town."ad_grad" = 2 THEN town."ad_code"
+                when county."ad_grad" = 2 THEN county."ad_code"
+                ELSE city."ad_code" END                                    AS cityCode,
+            case
+                when town."ad_grad" = 2 THEN town."ad_name"
+                when county."ad_grad" = 2 THEN county."ad_name"
+                ELSE city."ad_name" END                                    AS cityName
+
+        FROM YWXT.NKY_ALARM_GET NAG
+                 right JOIN (
+            SELECT
+                NAG.DAM_ID,
+                NAG.POINT_ID,
+                MAX(NAG.TIME)TIME,
+		        NAG.TYPE
+            FROM YWXT.NKY_ALARM_GET NAG
+                LEFT JOIN SJZT_MD."att_res_base" arb on arb."guid" = nag.dam_id
+
+            WHERE
+                 dam_id = #{alarmGet.damId}
+                and type = #{alarmGet.type}
+            GROUP BY
+                NAG.DAM_ID,
+                NAG.POINT_ID,
+                NAG.TYPE
+
+        )TMP ON (
+                    TMP.DAM_ID = NAG.DAM_ID
+                AND TMP.POINT_ID = NAG.POINT_ID
+                AND TMP.TYPE = NAG.TYPE
+                AND TMP.TIME = NAG.TIME
+            )
+                 LEFT JOIN SJZT_MD."att_res_base" arb on arb."guid" = NAG.DAM_ID
+
+                 LEFT JOIN SJZT_MD."att_ad_base" town ON town."ad_code" = arb."interior_ad_guid"
+                 LEFT JOIN SJZT_MD."att_ad_base" county ON county."ad_code" = town."p_ad_code"
+                 LEFT JOIN SJZT_MD."att_ad_base" city ON city."ad_code" = county."p_ad_code"
+
+                 LEFT JOIN SJZT_MD."att_cd_base" acb on
+                     acb."res_cd" = #{alarmGet.damId}
+                    and acb."cd" = nag.point_id
+                    <if test="alarmGet.type == 1">
+                        and acb."cd_type" = 'sy'
+                    </if>
+                    <if test="alarmGet.type == 2">
+                        and acb."cd_type" = 'sl'
+                    </if>
+        ORDER BY POINT_ID
+    </select>
+    <select id="getLatestResRecordWy" resultType="cn.gistack.nky.vo.AlarmGetVO">
+        SELECT
+        NAG.DAM_ID,
+        NAG.POINT_ID,
+        NAG.TYPE,
+        NAG.TIME,
+        NAG.VALUE,
+        NAG."DESC",
+        NAG.CREATE_TIME,
+        NAG.TASK_CATEGORY,
+        NAG.LEVEL,
+        NAG.BAOJINGZHI,
+        NAG.ORIGIN_ID,
+        NAG.FORWARD,
+        NAG."REVERSE",
+        NAG.RATIO,
+
+        ARB."name" reservoirName,
+        acb."cd_nm" cdName,
+
+        case when town."ad_grad" = 4 THEN town."ad_code" ELSE NULL END AS townCode,
+        case when town."ad_grad" = 4 THEN town."ad_name" ELSE NULL END AS townName,
+        case
+        when town."ad_grad" = 3 THEN town."ad_code"
+        when county."ad_grad" = 3 THEN county."ad_code" END        AS countyCode,
+        case
+        when town."ad_grad" = 3 THEN town."ad_name"
+        when county."ad_grad" = 3 THEN county."ad_name" END        AS countyName,
+        case
+        when town."ad_grad" = 2 THEN town."ad_code"
+        when county."ad_grad" = 2 THEN county."ad_code"
+        ELSE city."ad_code" END                                    AS cityCode,
+        case
+        when town."ad_grad" = 2 THEN town."ad_name"
+        when county."ad_grad" = 2 THEN county."ad_name"
+        ELSE city."ad_name" END                                    AS cityName
+
+        FROM YWXT.NKY_ALARM_GET NAG
+        right JOIN (
+        SELECT
+        NAG.DAM_ID,
+        NAG.POINT_ID,
+        MAX(NAG.TIME)TIME,
+        MAX(NAG.CREATE_TIME) CREATE_TIME,
+        NAG.TYPE
+        FROM YWXT.NKY_ALARM_GET NAG
+        LEFT JOIN SJZT_MD."att_res_base" arb on arb."guid" = nag.dam_id
+
+        WHERE
+         dam_id = #{alarmGet.damId}
+        and (type = '3' or type = '4' or type = '5')
+        GROUP BY
+        NAG.DAM_ID,
+        NAG.POINT_ID,
+        NAG.TYPE
+
+        )TMP ON (
+        TMP.DAM_ID = NAG.DAM_ID
+        AND TMP.POINT_ID = NAG.POINT_ID
+        AND TMP.TYPE = NAG.TYPE
+        AND TMP.TIME = NAG.TIME
+        AND TMP.CREATE_TIME = NAG.CREATE_TIME
+        )
+        LEFT JOIN SJZT_MD."att_res_base" arb on arb."guid" = NAG.DAM_ID
+
+        LEFT JOIN SJZT_MD."att_ad_base" town ON town."ad_code" = arb."interior_ad_guid"
+        LEFT JOIN SJZT_MD."att_ad_base" county ON county."ad_code" = town."p_ad_code"
+        LEFT JOIN SJZT_MD."att_ad_base" city ON city."ad_code" = county."p_ad_code"
+
+        LEFT JOIN SJZT_MD."att_wy_cd_base" acb on
+        acb."res_cd" = #{alarmGet.damId}
+        and acb."cd" = nag.point_id
+            and acb."cd_type" = 'wy'
+        ORDER BY POINT_ID
     </select>
 
 

--
Gitblit v1.9.3