xieb
2024-05-07 5e972eb9928c39b5abbdfd35e2a0aeff40876e7d
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,106 +94,160 @@
    </select>
    <select id="getSingleRegionCountOptimize" resultType="cn.gistack.sm.damSecurity.vo.DamSecurityStatistics">
        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 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"
        SELECT allNum,errorNum,AllNum-errorNum normalNum,aab."ad_name" adName,aab."guid" adCode FROM
        ) as errorNum,
        (
        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"
        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>
        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
        <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>
        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>
@@ -295,10 +349,10 @@
        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,
@@ -316,114 +370,153 @@
    </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 "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"
        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
            ) 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
        ) 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>
            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 +527,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 +545,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 +564,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 +643,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 +664,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 +774,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 +790,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"
@@ -731,6 +821,7 @@
        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 +842,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",
@@ -801,6 +893,10 @@
        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 (
@@ -850,10 +946,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>
@@ -866,29 +962,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>
@@ -898,6 +988,7 @@
        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 +1570,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 +1648,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 +1745,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 +1863,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 +1920,6 @@
                #{item}
            </foreach>
        </if>
        ORDER BY NAG.TIME DESC
    </select>
@@ -4049,148 +4138,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>