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') >= #{dam.startTime}-->
+<!-- </if>-->
+<!-- <if test="dam.endTime != null and dam.endTime !='' ">-->
+<!-- AND DATE_FORMAT(time,'%Y-%m-%d') <= #{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') >= #{dam.startTime} AND DATE_FORMAT(time,'%Y-%m-%d') <= #{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') >= #{dam.startTime}
- </if>
- <if test="dam.endTime != null and dam.endTime !='' ">
- AND DATE_FORMAT(time,'%Y-%m-%d') <= #{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