From c10d6358b9f014375a13821465bc978d0c0da22e Mon Sep 17 00:00:00 2001
From: linwe <872216996@qq.com>
Date: Wed, 29 May 2024 17:17:08 +0800
Subject: [PATCH] 通过E呼即办数据统计

---
 src/main/java/org/springblade/modules/house/mapper/HouseMapper.xml |  554 +++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 494 insertions(+), 60 deletions(-)

diff --git a/src/main/java/org/springblade/modules/house/mapper/HouseMapper.xml b/src/main/java/org/springblade/modules/house/mapper/HouseMapper.xml
index c52dad2..6b0d693 100644
--- a/src/main/java/org/springblade/modules/house/mapper/HouseMapper.xml
+++ b/src/main/java/org/springblade/modules/house/mapper/HouseMapper.xml
@@ -138,9 +138,9 @@
         br.town_name as townStreetName,br.name as neiName,
         jg.grid_name
         from jczz_house jh
-        left join jczz_grid_range jgr on jgr.house_code = jh.house_code
-        left join jczz_grid jg on jg.id = jgr.grid_id and jg.is_deleted = 0
+        left join jczz_grid jg on jg.grid_code = jh.grid_code and jg.is_deleted = 0
         left join blade_region br on br.code = jg.community_code
+        LEFT JOIN jczz_police_affairs_grid jpag on jh.jw_grid_code= jpag.jw_grid_code and jpag.is_deleted = 0
         <where>
             <if test="house.id != null ">and jh.id = #{house.id}</if>
             <if test="house.streetCode != null and house.streetCode != ''">
@@ -159,6 +159,9 @@
             <if test="house.neiName!=null and house.neiName!=''">
                 and br.name like concat('%',#{house.neiName},'%')
             </if>
+            <if test="house.address!=null and house.address!=''">
+                and jh.address like concat('%',#{house.address},'%')
+            </if>
             <if test="house.houseName != null  and house.houseName != ''">and jh.house_name like
                 concat('%',#{house.houseName},'%')
             </if>
@@ -173,14 +176,60 @@
             <if test="house.buildingNo != null ">and jh.building_no = #{house.buildingNo}</if>
             <if test="isAdministrator==2">
                 <choose>
-                    <when test="regionChildCodesList !=null and regionChildCodesList.size()>0">
-                        and jg.community_code in
-                        <foreach collection="regionChildCodesList" item="code" open="(" close=")" separator=",">
-                            #{code}
-                        </foreach>
+                    <when test="house.roleName != null and house.roleName != ''">
+                        <if test="house.roleName=='wgy'">
+                            <choose>
+                                <when test="gridCodeList !=null and gridCodeList.size()>0">
+                                    and jh.grid_code in
+                                    <foreach collection="gridCodeList" item="code" open="(" close=")" separator=",">
+                                        #{code}
+                                    </foreach>
+                                </when>
+                                <otherwise>
+                                    and jh.grid_code in ('')
+                                </otherwise>
+                            </choose>
+                        </if>
+                        <if test="house.roleName=='mj'">
+                            <choose>
+                                <when test="regionChildCodesList !=null and regionChildCodesList.size()>0">
+                                    and jpag.community_code in
+                                    <foreach collection="regionChildCodesList" item="code" open="(" close=")"
+                                             separator=",">
+                                        #{code}
+                                    </foreach>
+                                </when>
+                                <otherwise>
+                                    and jpag.community_code in ('')
+                                </otherwise>
+                            </choose>
+                        </if>
                     </when>
                     <otherwise>
-                        and jg.community_code in ('')
+                        <choose>
+                            <when test="regionChildCodesList !=null and regionChildCodesList.size()>0">
+                                and
+                                (
+                                jg.grid_code in
+                                <foreach collection="regionChildCodesList" item="code" open="(" close=")" separator=",">
+                                    #{code}
+                                </foreach>
+                                or
+                                jpag.community_code in
+                                <foreach collection="regionChildCodesList" item="code" open="(" close=")" separator=",">
+                                    #{code}
+                                </foreach>
+                                )
+                            </when>
+                            <otherwise>
+                                and
+                                (
+                                jg.grid_code in ('')
+                                or
+                                jpag.community_code in ('')
+                                )
+                            </otherwise>
+                        </choose>
                     </otherwise>
                 </choose>
             </if>
@@ -204,7 +253,7 @@
             </if>
             and jh.is_deleted = 0
             ORDER BY
-            jh.update_time DESC
+            jh.update_time desc,jh.id desc
         </where>
 
 
@@ -245,11 +294,10 @@
         select
         jh.*,
         jhl.id as cid,jhl.*,jhl.remark as cremark,
-        br.code as neiCode,jg.id as gridId,br.town_code as streetCode
+        br.code as neiCode,br.town_code as streetCode
         from jczz_house jh
         left join jczz_user_house_label jhl on jh.house_code = jhl.house_code and jhl.lable_type = 2
-        left join jczz_grid_range jgr on jgr.house_code = jh.house_code
-        left join jczz_grid jg on jg.id = jgr.grid_id and jg.is_deleted = 0
+        left join jczz_grid jg on jg.grid_code = jh.grid_code and jg.is_deleted = 0
         left join blade_region br on br.code = jg.community_code
         where jh.is_deleted = 0
         <if test="house.houseCode!=null and house.houseCode!=''">
@@ -392,7 +440,7 @@
             jczz_doorplate_address jda
             LEFT JOIN jczz_community jc ON jc.CODE = jda.nei_code
             WHERE
-            jc.res_police_user_id = #{userId})
+            jc.res_police_user_id like concat('%',#{userId},'%'))
             )
         </if>
         ) a
@@ -402,55 +450,91 @@
 
     <select id="getHouseStatisticsTwo" resultType="java.lang.Integer">
         SELECT
-        count( 1 )
+        count(*)
         FROM
-        (
-        SELECT DISTINCT
-        jda.address_code
-        FROM
-        jczz_house jh
-        LEFT JOIN jczz_doorplate_address jda ON jda.address_code = jh.house_code
+        jczz_doorplate_address jda
+        LEFT JOIN jczz_house jh ON jda.address_code = jh.house_code AND jh.is_deleted = 0
+        LEFT JOIN jczz_grid jg on jg.grid_code = jh.grid_code and jg.is_deleted = 0
+        LEFT JOIN jczz_police_affairs_grid jpag on jh.jw_grid_code= jpag.jw_grid_code and jpag.is_deleted = 0
         WHERE
         jda.nei_code = #{code}
-        AND jh.is_deleted = 0
         and jda.doorplate_type = '户室牌'
-        <if test="buildingCode != null  and buildingCode != ''">
-            and jda.building_code=#{buildingCode}
-        </if>
-
-        <if test="unitCode != null  and unitCode != ''">
-            and jda.unit_code=#{unitCode}
-            AND jda.unit_code is not null
-        </if>
-
-        <if test="aoiCode != null  and aoiCode != ''">
-            and jda.aoi_code=#{aoiCode}
-        </if>
-        <if test="userId != null and roleType == '1'">
-            AND jda.address_code IN (
-            SELECT DISTINCT
-            jgr.house_code
-            FROM
-            jczz_grid jg
-            LEFT JOIN jczz_gridman jgm ON jg.id = jgm.grid_id
-            LEFT JOIN jczz_grid_range jgr ON jgr.grid_id = jg.id
-            WHERE
-            jgm.user_id = #{userId}
-            AND jg.is_deleted = 0
-            )
-        </if>
-        <if test="userId != null and roleType == '3'">
-            AND jda.address_code IN (SELECT
-            jda.address_code
-            FROM
-            jczz_doorplate_address jda
-            LEFT JOIN jczz_community jc ON jc.CODE = jda.nei_code
-            WHERE
-            jc.res_police_user_id = #{userId})
-            )
-        </if>
-        ) a
-
+        <choose>
+            <when test="(buildingCode != null  and buildingCode != '') or
+                (unitCode != null  and unitCode != '') or (aoiCode != null  and aoiCode != '')">
+                <if test="buildingCode != null  and buildingCode != ''">
+                    and jda.building_code=#{buildingCode}
+                </if>
+                <if test="unitCode != null  and unitCode != ''">
+                    and jda.unit_code=#{unitCode}
+                    AND jda.unit_code is not null
+                </if>
+                <if test="aoiCode != null  and aoiCode != ''">
+                    and jda.aoi_code=#{aoiCode}
+                </if>
+            </when>
+            <otherwise>
+                <if test="isAdministrator==2">
+                    <choose>
+                        <when test="house.roleName != null and house.roleName != ''">
+                            <if test="house.roleName=='wgy'">
+                                <choose>
+                                    <when test="gridCodeList !=null and gridCodeList.size()>0">
+                                        and jh.grid_code in
+                                        <foreach collection="gridCodeList" item="code" open="(" close=")" separator=",">
+                                            #{code}
+                                        </foreach>
+                                    </when>
+                                    <otherwise>
+                                        and jh.grid_code in ('')
+                                    </otherwise>
+                                </choose>
+                            </if>
+                            <if test="house.roleName=='mj'">
+                                <choose>
+                                    <when test="regionChildCodesList !=null and regionChildCodesList.size()>0">
+                                        and jpag.community_code in
+                                        <foreach collection="regionChildCodesList" item="code" open="(" close=")"
+                                                 separator=",">
+                                            #{code}
+                                        </foreach>
+                                    </when>
+                                    <otherwise>
+                                        and jpag.community_code in ('')
+                                    </otherwise>
+                                </choose>
+                            </if>
+                        </when>
+                        <otherwise>
+                            <choose>
+                                <when test="regionChildCodesList !=null and regionChildCodesList.size()>0">
+                                    and
+                                    (
+                                    jg.grid_code in
+                                    <foreach collection="regionChildCodesList" item="code" open="(" close=")" separator=",">
+                                        #{code}
+                                    </foreach>
+                                    or
+                                    jpag.community_code in
+                                    <foreach collection="regionChildCodesList" item="code" open="(" close=")" separator=",">
+                                        #{code}
+                                    </foreach>
+                                    )
+                                </when>
+                                <otherwise>
+                                    and
+                                    (
+                                    jg.grid_code in ('')
+                                    or
+                                    jpag.community_code in ('')
+                                    )
+                                </otherwise>
+                            </choose>
+                        </otherwise>
+                    </choose>
+                </if>
+            </otherwise>
+        </choose>
     </select>
 
 
@@ -496,7 +580,7 @@
             jczz_doorplate_address jda
             LEFT JOIN jczz_community jc ON jc.CODE = jda.nei_code
             WHERE
-            jc.res_police_user_id = #{userId})
+            jc.res_police_user_id like concat('%',#{userId},'%'))
             )
         </if>
     </select>
@@ -547,7 +631,7 @@
             jczz_doorplate_address jda
             LEFT JOIN jczz_community jc ON jc.CODE = jda.nei_code
             WHERE
-            jc.res_police_user_id = #{userId})
+            jc.res_police_user_id like concat('%',#{userId},'%'))
             )
         </if>
         ) a
@@ -579,5 +663,355 @@
 
     </select>
 
+    <select id="labelStatistics" resultType="java.util.Map">
+        SELECT
+        jl.id AS id,
+        jl.parent_id AS parentId,
+        jl.label_name AS name,
+        jl.sort,
+        (SELECT
+        count( DISTINCT jhl.house_code )
+        FROM
+        jczz_user_house_label jhl
+        LEFT JOIN jczz_house jh ON jhl.house_code = jh.house_code
+        LEFT JOIN jczz_grid jg ON jg.grid_code = jh.grid_code
+        AND jg.is_deleted = 0
+        LEFT JOIN blade_region br ON br.CODE = jg.community_code
+        <where>
+            <if test="house.id != null ">and jh.id = #{house.id}</if>
+            <if test="house.streetCode != null and house.streetCode != ''">
+                and jda.town_street_code like concat('%',#{house.streetCode},'%')
+            </if>
+            <if test="house.houseCode != null  and house.houseCode != ''">and jh.house_code = #{house.houseCode}</if>
+            <if test="house.districtCode != null  and house.districtCode != ''">and jh.district_code =
+                #{house.districtCode}
+            </if>
+            <if test="house.districtName != null  and house.districtName != ''">
+                and jh.district_name like concat('%',#{house.districtName},'%')
+            </if>
+            <if test="house.townStreetName!=null and house.townStreetName!=''">
+                and br.town_name like concat('%',#{house.townStreetName},'%')
+            </if>
+            <if test="house.neiName!=null and house.neiName!=''">
+                and br.name like concat('%',#{house.neiName},'%')
+            </if>
+            <if test="house.address!=null and house.address!=''">
+                and jh.address like concat('%',#{house.address},'%')
+            </if>
+            <if test="house.houseName != null  and house.houseName != ''">and jh.house_name like
+                concat('%',#{house.houseName},'%')
+            </if>
+            <if test="house.phone != null  and house.phone != ''">and jh.phone = #{house.phone}</if>
+            <if test="house.area != null ">and jh.area = #{house.area}</if>
+            <if test="house.propertyPrice != null ">and jh.property_price = #{house.propertyPrice}</if>
+            <if test="house.serviceDue != null ">and jh.service_due = #{house.serviceDue}</if>
+            <if test="house.floor != null ">and jh.floor = #{house.floor}</if>
+            <if test="house.building != null  and house.building != ''">and jh.building = #{house.building}</if>
+            <if test="house.unit != null  and house.unit != ''">and jh.unit = #{house.unit}</if>
+            <if test="house.room != null  and house.room != ''">and jh.room = #{house.room}</if>
+            <if test="house.buildingNo != null ">and jh.building_no = #{house.buildingNo}</if>
+            <if test="isAdministrator==2">
+                <choose>
+                    <when test="regionChildCodesList !=null and regionChildCodesList.size()>0">
+                        and jg.community_code in
+                        <foreach collection="regionChildCodesList" item="code" open="(" close=")" separator=",">
+                            #{code}
+                        </foreach>
+                    </when>
+                </choose>
+            </if>
+            <if test="house.parentId != null ">
+                <if test="house.labelId != null ">
+                    AND jl.id = #{house.labelId}
+                </if>
+                <if test="house.parentId != null ">
+                    AND jl.parent_id = #{house.parentId}
+                </if>
+                and jhl.label_id=jl.id
+                AND jhl.lable_type = 2
+                AND jhl.label_id IS NOT NULL
+            </if>
+            and jh.is_deleted = 0
+        </where>
+        ) count
+        FROM
+        jczz_label jl where is_deleted = 0
+        <if test="house.parentId != null ">
+            AND jl.parent_id = #{house.parentId}
+        </if>
+        and jl.id != '1002'
+
+
+    </select>
+
+
+    <select id="labelCommunityStatistics" resultType="java.util.Map">
+        SELECT
+        br.code,
+        br.name,
+        br.id
+        FROM
+        blade_region br
+        <where>
+            <if test="regionChildCodesList !=null and regionChildCodesList.size()>0">
+                br.code IN
+                <foreach collection="regionChildCodesList" item="code" open="(" close=")" separator=",">
+                    #{code}
+                </foreach>
+            </if>
+            and br.parent_code = '361102'
+        </where>
+    </select>
+
+    <select id="getlabelCount" resultType="org.springblade.modules.label.vo.LabelVO">
+
+        SELECT
+        jl.label_name,
+        (	SELECT
+        count( DISTINCT jhl.house_code )
+        FROM
+        jczz_user_house_label jhl
+        LEFT JOIN jczz_house jh ON jhl.house_code = jh.house_code
+        LEFT JOIN jczz_grid jg ON jg.grid_code = jh.grid_code
+        AND jg.is_deleted = 0
+        LEFT JOIN jczz_community jc ON jc.CODE = jg.community_code
+        LEFT JOIN blade_region br ON br.CODE = jg.community_code
+        WHERE
+        jhl.lable_type = 2
+        AND jl.id = jhl.label_id
+        AND jc.street_code = #{streetCode}
+        <if test="house.townStreetName!=null and house.townStreetName!=''">
+            and br.town_name like concat('%',#{house.townStreetName},'%')
+        </if>
+        <if test="house.neiName!=null and house.neiName!=''">
+            and br.name like concat('%',#{house.neiName},'%')
+        </if>
+        <if test="house.neiName!=null and house.neiName!=''">
+            and br.name like concat('%',#{house.neiName},'%')
+        </if>
+        <if test="house.address!=null and house.address!=''">
+            and jh.address like concat('%',#{house.address},'%')
+        </if>
+        <if test="isAdministrator==2">
+            <choose>
+                <when test="regionChildCodesList !=null and regionChildCodesList.size()>0">
+                    and jg.community_code in
+                    <foreach collection="regionChildCodesList" item="code" open="(" close=")" separator=",">
+                        #{code}
+                    </foreach>
+                </when>
+            </choose>
+        </if>
+        <if test="house.parentId != null ">
+            and jh.house_code in (
+            SELECT DISTINCT
+            juhl.house_code
+            FROM
+            jczz_user_house_label juhl
+            LEFT JOIN jczz_label jl ON juhl.label_id = jl.id
+            WHERE
+            juhl.lable_type = 2
+            <if test="house.labelId != null ">
+                AND jl.id = #{house.labelId}
+            </if>
+            <if test="house.parentId != null ">
+                AND jl.parent_id = #{house.parentId}
+            </if>
+            AND juhl.label_id IS NOT NULL
+            )
+        </if>
+        ) num
+        FROM
+        jczz_label jl
+        WHERE
+        jl.parent_id = '1001'
+        ORDER BY
+        jl.sort DESC
+
+    </select>
+
+    <!--查询未绑定网格或警格的数据-->
+    <select id="getNotBindGridOrJwGridList" resultType="org.springblade.modules.house.entity.HouseEntity">
+        select id,lng,lat from jczz_house where is_deleted = 0 and lng != ''
+        <if test="type == 1">
+            and grid_code is null
+        </if>
+        <if test="type == 2">
+            and jw_grid_code is null
+        </if>
+    </select>
+
+    <!--按房屋标签统计-->
+    <select id="getHouseLabelStatistic" resultType="java.util.Map">
+        select a.label_name as labelName,ifnull(b.numbers,0) numbers from
+        (
+        select label_name from jczz_label where parent_id = 1001 and is_deleted = 0
+        union all
+        select '未知' as label_name
+        ) a
+        left join (
+            select
+            ifnull(juhl.label_name,'未知') labelName,
+            count(*) as numbers
+            from jczz_doorplate_address jda
+            LEFT JOIN jczz_house jh on jda.address_code = jh.house_code and jh.is_deleted = 0
+            LEFT JOIN jczz_grid jg on jg.grid_code = jh.grid_code and jg.is_deleted = 0
+            LEFT JOIN blade_region br on br.code = jg.community_code
+            LEFT JOIN jczz_police_affairs_grid jpag on jh.jw_grid_code= jpag.jw_grid_code and jpag.is_deleted = 0
+            LEFT JOIN jczz_user_house_label juhl ON juhl.house_code = jh.house_code and juhl.lable_type = 2
+            where jda.doorplate_type = '户室牌'
+            <if test="house.communityCode != null  and house.communityCode != ''">
+                and jda.nei_code = #{house.communityCode}
+            </if>
+            <if test="isAdministrator==2">
+                <choose>
+                    <when test="house.roleName != null and house.roleName != ''">
+                        <if test="house.roleName=='wgy'">
+                            <choose>
+                                <when test="gridCodeList !=null and gridCodeList.size()>0">
+                                    and jh.grid_code in
+                                    <foreach collection="gridCodeList" item="code" open="(" close=")" separator=",">
+                                        #{code}
+                                    </foreach>
+                                </when>
+                                <otherwise>
+                                    and jh.grid_code in ('')
+                                </otherwise>
+                            </choose>
+                        </if>
+                        <if test="house.roleName=='mj'">
+                            <choose>
+                                <when test="regionChildCodesList !=null and regionChildCodesList.size()>0">
+                                    and jpag.community_code in
+                                    <foreach collection="regionChildCodesList" item="code" open="(" close=")"
+                                             separator=",">
+                                        #{code}
+                                    </foreach>
+                                </when>
+                                <otherwise>
+                                    and jpag.community_code in ('')
+                                </otherwise>
+                            </choose>
+                        </if>
+                    </when>
+                    <otherwise>
+                        <choose>
+                            <when test="regionChildCodesList !=null and regionChildCodesList.size()>0">
+                                and
+                                (
+                                jg.grid_code in
+                                <foreach collection="regionChildCodesList" item="code" open="(" close=")" separator=",">
+                                    #{code}
+                                </foreach>
+                                or
+                                jpag.community_code in
+                                <foreach collection="regionChildCodesList" item="code" open="(" close=")" separator=",">
+                                    #{code}
+                                </foreach>
+                                )
+                            </when>
+                            <otherwise>
+                                and
+                                (
+                                jg.grid_code in ('')
+                                or
+                                jpag.community_code in ('')
+                                )
+                            </otherwise>
+                        </choose>
+                    </otherwise>
+                </choose>
+            </if>
+            group by juhl.label_name
+        ) b on a.label_name =b.labelName
+    </select>
+
+    <!--查询对应的社区编号-->
+    <select id="getCommunityCode" resultType="java.lang.String">
+        SELECT
+        jpag.community_code
+        FROM
+        jczz_house jh
+        LEFT JOIN jczz_police_affairs_grid jpag on jh.jw_grid_code= jpag.jw_grid_code and jpag.is_deleted = 0
+        where jh.is_deleted = 0
+        and jh.id = #{id}
+    </select>
+
+    <!--查询所有房屋总数-->
+    <select id="getAllListTotal" resultType="java.lang.Integer">
+        SELECT
+        count(*)
+        FROM
+        jczz_house jh
+        where jh.is_deleted = 0
+    </select>
+
+    <!--查询所有的房屋-->
+    <select id="getAllList" resultType="org.springblade.modules.house.vo.HouseVO">
+        SELECT
+        jh.*,
+        jpag.community_code
+        FROM
+        jczz_house jh
+        LEFT JOIN jczz_police_affairs_grid jpag on jh.jw_grid_code= jpag.jw_grid_code and jpag.is_deleted = 0
+        where jh.is_deleted = 0
+        limit #{i},#{size}
+    </select>
+
+    <!--查询无房屋状态的房屋数量-->
+    <select id="getNotBindLabelHouseNum" resultType="java.lang.Integer">
+        select count(*) from (
+            SELECT
+            jh.house_code,
+            case when c.house_code is not null then 1
+            when a.house_code is not null and b.house_code is null then 2
+            when b.house_code is not null then 3
+            end as status
+            FROM
+            jczz_house jh
+            left join
+            (
+            select house_code from jczz_household where is_deleted = 0 and relationship = 1 and house_code is not null and house_code != '' GROUP BY house_code
+            ) a on a.house_code = jh.house_code
+            left join
+            (
+            select house_code from jczz_household where is_deleted = 0 and relationship = 18 and house_code is not null and house_code != '' GROUP BY house_code
+            ) b on b.house_code = jh.house_code
+            left join
+            (
+            select house_code from jczz_household where is_deleted = 0 and relationship is null or (relationship!=1 and relationship!=18) and house_code is not null and house_code != '' GROUP BY house_code
+            ) c on c.house_code = jh.house_code
+        ) d left join jczz_user_house_label juhl on d.house_code = juhl.house_code and lable_type = 2
+        where juhl.id is null and status is not null
+    </select>
+
+    <!--查询无房屋状态的房屋列表集合-->
+    <select id="getNotBindLabelHouseList" resultType="org.springblade.modules.house.vo.HouseVO">
+        select d.* from (
+            SELECT
+            jh.house_code,
+            case when c.house_code is not null then 1
+            when a.house_code is not null and b.house_code is null then 2
+            when b.house_code is not null then 3
+            end as status
+            FROM
+            jczz_house jh
+            left join
+            (
+            select house_code from jczz_household where is_deleted = 0 and relationship = 1 and house_code is not null and house_code != '' GROUP BY house_code
+            ) a on a.house_code = jh.house_code
+            left join
+            (
+            select house_code from jczz_household where is_deleted = 0 and relationship = 18 and house_code is not null and house_code != '' GROUP BY house_code
+            ) b on b.house_code = jh.house_code
+            left join
+            (
+            select house_code from jczz_household where is_deleted = 0 and relationship is null or (relationship!=1 and relationship!=18) and house_code is not null and house_code != '' GROUP BY house_code
+            ) c on c.house_code = jh.house_code
+        ) d left join jczz_user_house_label juhl on d.house_code = juhl.house_code and lable_type = 2
+        where juhl.id is null and status is not null
+        limit #{i},#{size}
+    </select>
+
 
 </mapper>

--
Gitblit v1.9.3