From fd2dee0c60271966208c673b718c17ee4e13b0c3 Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Tue, 30 Jan 2024 11:58:20 +0800
Subject: [PATCH] 大坝安全监测业务一张图接口优化

---
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/mapper/DamSecurityMapper.xml |  765 +++++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 507 insertions(+), 258 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 7acd8e4..458f2ec 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,109 +94,6 @@
 
     </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-->
-<!--        (-->
-<!--        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",
@@ -204,7 +101,7 @@
         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}
+        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)
@@ -452,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,
@@ -479,7 +376,7 @@
             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}
+            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)
@@ -748,10 +645,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>
 
 
@@ -764,10 +661,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"
@@ -880,10 +777,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>
 
 
@@ -896,10 +793,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"
@@ -1050,10 +947,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>
 
 
@@ -1066,10 +963,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"
@@ -1673,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}
@@ -1753,10 +1650,10 @@
         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})
         <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 !='' ">
@@ -1851,11 +1748,10 @@
         </if>
 
         <if test="vo.startTime != null and vo.startTime != ''">
-            AND DATE_FORMAT(NAG.time,'%Y-%m-%d')  &gt;= #{vo.startTime}
+            AND NAG.time &gt;= #{dam.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;= #{dam.endTime}
         </if>
 
         <if test="vo.level != null and vo.level !='' ">
@@ -4243,148 +4139,501 @@
 
 
     <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"
+<!--        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
+<!--                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 DATE_FORMAT(time,'%Y-%m-%d')>= 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 DATE_FORMAT(time,'%Y-%m-%d')>= 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"
-        WHERE
-        (TYPE = 3 or type = 4 or type = 5)
+        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 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
+        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
 
-        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>
+
+        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
+        (
+        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>
 
 

--
Gitblit v1.9.3