From a70fa4058b304434256a0eec7550c47f4f1832eb Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Mon, 29 Jan 2024 17:32:41 +0800
Subject: [PATCH] 大坝安全监测饼图优化

---
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/mapper/DamSecurityMapper.xml |  325 ++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 241 insertions(+), 84 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 5e39bc9..136d540 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
@@ -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>
 

--
Gitblit v1.9.3