From 60e1a68fa319cd9e92d632bf678b31af20973508 Mon Sep 17 00:00:00 2001
From: linwe <872216996@qq.com>
Date: Mon, 24 Jun 2024 19:12:05 +0800
Subject: [PATCH] 驾驶舱添加社区筛选优化

---
 src/main/java/org/springblade/modules/house/mapper/HouseMapper.xml |  440 ++++++++++++++++++++++++------------------------------
 1 files changed, 197 insertions(+), 243 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 6b0d693..c1a00b2 100644
--- a/src/main/java/org/springblade/modules/house/mapper/HouseMapper.xml
+++ b/src/main/java/org/springblade/modules/house/mapper/HouseMapper.xml
@@ -406,44 +406,49 @@
         FROM
         jczz_house jh
         LEFT JOIN jczz_doorplate_address jda ON jda.address_code = jh.house_code
-        WHERE
-        jda.nei_code = #{code}
-        AND jh.is_deleted = 0
-        <if test="buildingCode != null  and buildingCode != ''">
-            and jda.building_code=#{buildingCode}
-        </if>
+       <where>
+           jda.nei_code in
+           <foreach collection="communityCodeList" item="code" open="(" close=")" separator=",">
+               #{code}
+           </foreach>
+           AND jh.is_deleted = 0
+           <if test="buildingCode != null  and buildingCode != ''">
+               and jda.building_code=#{buildingCode}
+           </if>
 
-        <if test="unitCode != null  and unitCode != ''">
-            and jda.unit_code=#{unitCode}
-        </if>
+           <if test="unitCode != null  and unitCode != ''">
+               and jda.unit_code=#{unitCode}
+           </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 like concat('%',#{userId},'%'))
-            )
-        </if>
-        ) a
+           <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 like concat('%',#{userId},'%'))
+               )
+           </if>
+           ) a
+       </where>
+
 
     </select>
 
@@ -456,85 +461,84 @@
         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 jda.doorplate_type = '户室牌'
-        <choose>
-            <when test="(buildingCode != null  and buildingCode != '') or
+        <where>
+            jda.nei_code in
+            <foreach collection="communityCodeList" item="code" open="(" close=")" separator=",">
+                #{code}
+            </foreach>
+            and jda.doorplate_type = '户室牌'
+            <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'">
+                    <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 jpag.community_code in
-                                        <foreach collection="regionChildCodesList" item="code" open="(" close=")"
-                                                 separator=",">
+                                        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 jpag.community_code in ('')
+                                        and
+                                        ( jg.grid_code in ('') or 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>
+                            </otherwise>
+                        </choose>
+                    </if>
+                </otherwise>
+            </choose>
+        </where>
+
     </select>
 
 
@@ -544,45 +548,49 @@
         FROM
         jczz_household jhh
         LEFT JOIN jczz_doorplate_address jda ON jda.address_code = jhh.house_code
-        WHERE
-        jda.nei_code = #{code}
-        AND jhh.is_deleted = 0
-        and jda.doorplate_type = '户室牌'
-        <if test="buildingCode != null  and buildingCode != ''">
-            and jda.building_code=#{buildingCode}
-        </if>
+        <where>
+            jda.nei_code in
+            <foreach collection="communityCodeList" item="code" open="(" close=")" separator=",">
+                #{code}
+            </foreach>
+            AND jhh.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="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 like concat('%',#{userId},'%'))
-            )
-        </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 like concat('%',#{userId},'%'))
+                )
+            </if>
+        </where>
     </select>
 
 
@@ -596,47 +604,49 @@
         FROM
         jczz_house jh
         LEFT JOIN jczz_doorplate_address jda ON jda.address_code = jh.house_code
-        WHERE
-        jda.nei_code = #{code}
-        AND jh.is_deleted = 0
-        AND jda.unit_code is not null
-        <if test="buildingCode != null  and buildingCode != ''">
-            and jda.building_code=#{buildingCode}
-        </if>
+        <where>
+            jda.nei_code in
+            <foreach collection="communityCodeList" item="code" open="(" close=")" separator=",">
+                #{code}
+            </foreach>
+            AND jh.is_deleted = 0
+            AND jda.unit_code is not null
+            <if test="buildingCode != null  and buildingCode != ''">
+                and jda.building_code=#{buildingCode}
+            </if>
 
-        <if test="unitCode != null  and unitCode != ''">
-            and jda.unit_code=#{unitCode}
-        </if>
+            <if test="unitCode != null  and unitCode != ''">
+                and jda.unit_code=#{unitCode}
+            </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 like concat('%',#{userId},'%'))
-            )
-        </if>
-        ) a
-
-
+            <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 like concat('%',#{userId},'%'))
+                )
+            </if>
+            ) a
+        </where>
     </select>
 
     <select id="getHouseBuilding" resultType="java.lang.String">
@@ -860,67 +870,11 @@
             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 test="communityCodeList != null">
+                and jda.nei_code in
+                <foreach collection="communityCodeList" item="code" open="(" close=")" separator=",">
+                    #{code}
+                </foreach>
             </if>
             group by juhl.label_name
         ) b on a.label_name =b.labelName

--
Gitblit v1.9.3