From f4624736f4be23966b0ec573816d1b5ceed1cd97 Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Thu, 10 Aug 2023 14:12:56 +0800
Subject: [PATCH] 大坝安全统计接口

---
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/mapper/DamSecurityMapper.xml |  208 +++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 199 insertions(+), 9 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 e45bb51..3d3ec31 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
@@ -69,7 +69,6 @@
                             <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
@@ -252,21 +251,30 @@
         where (f."res_cd" is not null OR g."res_cd" is not null OR h."res_cd" is not null)
         ) baseRes
         LEFT JOIN (
-        SELECT "res_cd",COUNT(*) wyStation
-        FROM ( SELECT b."guid" as "res_cd",'wy' as "sys_resource"
-        FROM (SELECT "station_code" from sjzt_md."att_mqtt_calc_data" group by "station_code") a LEFT JOIN SJZT_MD."att_res_base" b on substr(a."station_code",0,length(a."station_code")-2) = b."guid" )
+            SELECT "res_cd",COUNT(*) wyStation
+            FROM
+                 (
+                SELECT b."guid" as "res_cd",'wy' as "sys_resource"
+                FROM (
+                    SELECT "station_code" from sjzt_md."att_mqtt_calc_data" group by "station_code") a LEFT JOIN SJZT_MD."att_res_base" b on substr(a."station_code",0,length(a."station_code")-2) = b."guid"
+                    WHERE b."guid" is not null
+                 )
         GROUP BY "res_cd"
         ) wy ON wy."res_cd" = baseRes."guid"
         LEFT JOIN(
         SELECT "res_cd", COUNT(*) syStation
         FROM( SELECT b."guid" as "res_cd",'sy' as "sys_resource"
-        FROM sjzt_ods."dsm_spg_spprmp" a LEFT JOIN SJZT_MD."att_res_base" b on a."rscd" = b."res_reg_code")
+        FROM sjzt_ods."dsm_spg_spprmp" a LEFT JOIN SJZT_MD."att_res_base" b on a."rscd" = b."res_reg_code"
+        WHERE b."guid" is not null
+            )
         GROUP BY "res_cd"
         ) sy ON sy."res_cd" = baseRes."guid"
         LEFT JOIN (
         SELECT "res_cd",COUNT(*) slStation
         FROM  ( SELECT b."guid" as "res_cd",'sl' as "sys_resource"
-        FROM sjzt_ods."dsm_spg_spqnmp" a LEFT JOIN SJZT_MD."att_res_base" b on a."rscd" = b."res_reg_code" group by b."guid" )
+        FROM sjzt_ods."dsm_spg_spqnmp" a LEFT JOIN SJZT_MD."att_res_base" b on a."rscd" = b."res_reg_code"
+        WHERE b."guid" is not null
+        group by b."guid" )
         GROUP BY "res_cd"
         ) sl ON sl."res_cd" = baseRes."guid"
         LEFT JOIN (
@@ -367,19 +375,21 @@
         LEFT JOIN (
             SELECT "res_cd",COUNT(*) wyStation
             FROM ( SELECT b."guid" as "res_cd",'wy' as "sys_resource"
-            FROM (SELECT "station_code" from sjzt_md."att_mqtt_calc_data" group by "station_code") a LEFT JOIN SJZT_MD."att_res_base" b on substr(a."station_code",0,length(a."station_code")-2) = b."guid" )
+            FROM (SELECT "station_code" from sjzt_md."att_mqtt_calc_data" group by "station_code") a LEFT JOIN SJZT_MD."att_res_base" b on substr(a."station_code",0,length(a."station_code")-2) = b."guid"
+        WHERE b."guid" is not null)
             GROUP BY "res_cd"
         ) wy ON wy."res_cd" = baseRes."guid"
         LEFT JOIN(
             SELECT "res_cd", COUNT(*) syStation
             FROM( SELECT b."guid" as "res_cd",'sy' as "sys_resource"
-            FROM sjzt_ods."dsm_spg_spprmp" a LEFT JOIN SJZT_MD."att_res_base" b on a."rscd" = b."res_reg_code")
+            FROM sjzt_ods."dsm_spg_spprmp" a LEFT JOIN SJZT_MD."att_res_base" b on a."rscd" = b."res_reg_code"
+        WHERE b."guid" is not null)
             GROUP BY "res_cd"
         ) sy ON sy."res_cd" = baseRes."guid"
         LEFT JOIN (
             SELECT "res_cd",COUNT(*) slStation
             FROM  ( SELECT b."guid" as "res_cd",'sl' as "sys_resource"
-            FROM sjzt_ods."dsm_spg_spqnmp" a LEFT JOIN SJZT_MD."att_res_base" b on a."rscd" = b."res_reg_code" group by b."guid" )
+            FROM sjzt_ods."dsm_spg_spqnmp" a LEFT JOIN SJZT_MD."att_res_base" b on a."rscd" = b."res_reg_code" WHERE b."guid" is not null group by b."guid" )
             GROUP BY "res_cd"
         ) sl ON sl."res_cd" = baseRes."guid"
         LEFT JOIN (
@@ -446,4 +456,184 @@
             AND  (province."ad_code" =#{dam.adCode} or city."ad_code" = #{dam.adCode} or county."ad_code" = #{dam.adCode})
         </if>
     </select>
+    <select id="damResInfoCount" resultType="cn.gistack.sm.damSecurity.vo.DamStatisticsRes">
+
+
+        SELECT
+               base.total AS total,
+               base.errorNum AS errorNum,
+               (base.total - base.errorNum) AS normalNum,
+               base.type AS type,
+               base.typeName AS typeName
+        FROM
+             (
+                    SELECT * FROM
+                    (
+                    --  位移水库数
+                    SELECT
+                    COUNT(*) total,
+                    '位移' AS typeName,
+                    '3' 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 = 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 "res_cd",COUNT(*) wyStation
+                    FROM
+                    (
+                    SELECT b."guid" as "res_cd",'wy' as "sys_resource"
+                    FROM
+                    (
+                    SELECT "station_code" from sjzt_md."att_mqtt_calc_data" group by "station_code"
+                    ) a LEFT JOIN SJZT_MD."att_res_base" b on substr(a."station_code",0,length(a."station_code")-2) = b."guid"
+                    where b."guid" is not null
+                    ) temp
+                    LEFT JOIN SJZT_MD."att_res_base" arb ON arb."guid" = temp."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 1= 1
+                    <if test=" adCode!= null and adCode !='' ">
+                        AND  (province."ad_code" =#{adCode} or city."ad_code" = #{adCode} or county."ad_code" = #{adCode})
+                    </if>
+                    GROUP BY "res_cd"
+                    )
+                    UNION ALL
+                    --  渗压水库数
+                    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 "res_cd", COUNT(*) syStation
+                    FROM
+                    (
+                    SELECT b."guid" as "res_cd",'sy' as "sys_resource"
+                    FROM sjzt_ods."dsm_spg_spprmp" a
+                    LEFT JOIN SJZT_MD."att_res_base" b on a."rscd" = b."res_reg_code"
+                    WHERE b."guid" is not null
+                    ) temp
+                    LEFT JOIN SJZT_MD."att_res_base" arb ON arb."guid" = temp."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 1=1
+                    <if test=" adCode!= null and adCode !='' ">
+                        AND  (province."ad_code" =#{adCode} or city."ad_code" = #{adCode} or county."ad_code" = #{adCode})
+                    </if>
+                    GROUP BY "res_cd"
+                    )
+                    UNION ALL
+                    -- 渗流水库数
+                    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
+                    "res_cd",
+                    COUNT(*) slStation
+                    FROM  ( SELECT b."guid" as "res_cd",'sl' as "sys_resource"
+                    FROM sjzt_ods."dsm_spg_spqnmp" a
+                    LEFT JOIN SJZT_MD."att_res_base" b on a."rscd" = b."res_reg_code"
+                    WHERE b."guid" is not null
+                    group by b."guid" ) temp
+                    LEFT JOIN SJZT_MD."att_res_base" arb ON arb."guid" = temp."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"
+                    <if test=" adCode!= null and adCode !='' ">
+                        AND  (province."ad_code" =#{adCode} or city."ad_code" = #{adCode} or county."ad_code" = #{adCode})
+                    </if>
+                    GROUP BY "res_cd"
+                    )
+                    )
+            ) base
+
+    </select>
+    <select id="getResErrorList" resultType="cn.gistack.sm.damSecurity.vo.DamStationStatistics">
+
+        SELECT
+            DISTINCT
+            arb."guid" AS resCd,
+            arb."name" AS resName,
+            arb."center_long" AS longitude,
+            arb."center_lat" AS latitude
+        FROM YWXT.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" 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
+          DATE_FORMAT(time,'%Y-%m-%d')>= CURDATE()
+        <if test="dam.type != null and dam.type != '' and dam.type == 1">
+              AND NAG.TYPE =  #{dam.type}
+          </if>
+        <if test="dam.type != null and dam.type != '' and dam.type == 2">
+            AND NAG.TYPE =  #{dam.type}
+        </if>
+        <if test="dam.type != null and dam.type !='' and dam.type == 3">
+            AND (NAG.TYPE = '3' or NAG.TYPE  = '4' or NAG.TYPE  = '5')
+        </if>
+        <if test="adCode != null and adCode !='' ">
+            AND  (province."ad_code" =#{adCode} or city."ad_code" = #{adCode} or county."ad_code" = #{adCode})
+        </if>
+    </select>
+
+
 </mapper>

--
Gitblit v1.9.3