guoshilong
2024-01-30 fd2dee0c60271966208c673b718c17ee4e13b0c3
大坝安全监测业务一张图接口优化
4 files modified
805 ■■■■■ changed files
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/controller/DamSecurityController.java 13 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/mapper/DamSecurityMapper.xml 765 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/service/IDamSecurityService.java 2 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/service/impl/DamSecurityServiceImpl.java 25 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/controller/DamSecurityController.java
@@ -188,6 +188,19 @@
    }
    /**
     * 单项---业务一张图 大坝安全监测(优化)
     * @param adCode
     * @param type sy sl wy
     * @return
     */
    @ApiOperation(value = "大坝安全统计-大坝安全监测", notes = "大坝安全统计-大坝安全监测")
    @GetMapping(value = "/damResInfoCountType")
    public R damResInfoCountOptimizeType(String adCode,String type){
        DamStatisticsRes damStatisticsRes = damSecurityService.damResInfoCountOptimizeType(adCode,type);
        return R.data(damStatisticsRes);
    }
    /**
     * 业务一张图 大坝安全监测(地图)(逻辑已修改)
     * @param obj(adCode :行政区划;type:监测类型;status :状态 1全部;2正常;3异常)
     * @return
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>
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/service/IDamSecurityService.java
@@ -69,4 +69,6 @@
    List<DamStatisticsRes> damResInfoCountOptimize(String adCode);
    DamSecurityStatistics getSingleRegionCountOptimize(DamSecurityStatistics damSecurityStatistics);
    DamStatisticsRes damResInfoCountOptimizeType(String adCode, String type);
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/service/impl/DamSecurityServiceImpl.java
@@ -176,9 +176,12 @@
    public List<DamStatisticsRes> damResInfoCountOptimize(String adCode) {
        List<DamStatisticsRes> list = new ArrayList<>();
        DamStatisticsRes sy = damSecurityMapper.damResInfoCountSy(adCode);
        DamStatisticsRes sl = damSecurityMapper.damResInfoCountSl(adCode);
        DamStatisticsRes wy = damSecurityMapper.damResInfoCountWy(adCode);
        DamStatisticsRes sy = damSecurityMapper.damResInfoCountSy(adCode); //7s
        DamStatisticsRes sl = damSecurityMapper.damResInfoCountSl(adCode); //3s
        DamStatisticsRes wy = damSecurityMapper.damResInfoCountWy(adCode);//7s
        list.add(sy);
        list.add(sl);
@@ -186,4 +189,20 @@
        return list;
    }
    @Override
    public DamStatisticsRes damResInfoCountOptimizeType(String adCode, String type) {
        if (type.equals("sy")){
            return  damSecurityMapper.damResInfoCountSy(adCode);
        }else if(type.equals("sl")) {
            return damSecurityMapper.damResInfoCountSl(adCode);
        }else if (type.equals("wy")){
            return damSecurityMapper.damResInfoCountWy(adCode);
        }
        return null;
    }
}