guoshilong
2024-01-29 a70fa4058b304434256a0eec7550c47f4f1832eb
大坝安全监测饼图优化
1 files modified
325 ■■■■ changed files
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/mapper/DamSecurityMapper.xml 325 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/mapper/DamSecurityMapper.xml
@@ -95,105 +95,262 @@
    </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 allNum,errorNum,AllNum-errorNum normalNum,aab."ad_name" adName,aab."guid" 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)-->
<!--        ) 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,-->
<!--        (-->
<!--        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>-->
        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 DATE_FORMAT(time,'%Y-%m-%d') &gt;= #{dam.startTime} AND DATE_FORMAT(time,'%Y-%m-%d') &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>
        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>