From 8b7258c9427882bb1798f1502eaa35184c6e374e Mon Sep 17 00:00:00 2001
From: linwe <872216996@qq.com>
Date: Fri, 09 Aug 2024 14:29:18 +0800
Subject: [PATCH] 短信指定楼栋发送

---
 src/main/java/org/springblade/modules/house/mapper/HouseRentalMapper.xml |  244 +++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 185 insertions(+), 59 deletions(-)

diff --git a/src/main/java/org/springblade/modules/house/mapper/HouseRentalMapper.xml b/src/main/java/org/springblade/modules/house/mapper/HouseRentalMapper.xml
index 4e624b9..b11983c 100644
--- a/src/main/java/org/springblade/modules/house/mapper/HouseRentalMapper.xml
+++ b/src/main/java/org/springblade/modules/house/mapper/HouseRentalMapper.xml
@@ -54,19 +54,88 @@
             jczz_house_rental
     </sql>
 
+    <sql id="filterData">
+        <if test="isAdministrator==2">
+            <choose>
+                <when test="vo.roleName != null and vo.roleName != ''">
+                    <if test="vo.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="vo.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>
+    </sql>
+
     <!--自定义列表查询-->
     <select id="selectHouseRentalPage" resultType="org.springblade.modules.house.vo.HouseRentalTenantVO">
-        SELECT jhr.*,jda.address_name as houseName,b.tenantName,b.phone,
+        SELECT
+        jhr.*,
+        jh.address as houseName,
+        br.town_name as townStreetName,
+        br.name as neiName,
+        <if test="vo.tenantInfoFlag != null and vo.tenantInfoFlag != 0">
+            b.tenantName,
+            b.phone,
+        </if>
         concat(jh.district_name," ",jh.building," ",unit," ",room) as address,
         case when TIMESTAMPDIFF( MONTH, jhr.rental_time, jhr.due_time )&gt;= 8 then 1
-             when TIMESTAMPDIFF( MONTH, jhr.rental_time, jhr.due_time )&lt;4 then 3
-             else 2 end as dldType,
-        if(jhr.termination_time is null,if(date_format(jhr.due_time,'%Y-%m-%d') >= date_format(now(),'%Y-%m-%d'),0,1),2) as status
+        when TIMESTAMPDIFF( MONTH, jhr.rental_time, jhr.due_time )&lt;4 then 3
+        else 2 end as dldType,
+        if(jhr.termination_time is null,if(date_format(jhr.due_time,'%Y-%m-%d') >= date_format(now(),'%Y-%m-%d'),0,1),2)
+        as status
         FROM jczz_house_rental jhr
-        JOIN jczz_doorplate_address jda ON jda.address_code = jhr.house_code
-        JOIN jczz_house jh ON jh.house_code = jhr.house_code
-        LEFT JOIN jczz_grid_range jgr on jgr.house_code=jda.address_code
-        LEFT JOIN jczz_grid jg on jg.id = jgr.grid_id and jg.is_deleted = 0
+        JOIN jczz_house jh ON jh.house_code = jhr.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
+        <if test="vo.tenantInfoFlag != null and vo.tenantInfoFlag != 0">
         LEFT JOIN (
             SELECT jht.housing_rental_id,jht.name as tenantName,jht.phone_number as phone
             FROM jczz_household jht RIGHT JOIN (
@@ -80,12 +149,22 @@
                 GROUP BY  housing_rental_id
             ) a ON a.id = jht.id and a.housing_rental_id is not null
         ) b ON b.housing_rental_id = jhr.id
+        </if>
         WHERE jhr.is_deleted = 0
+        <if test="vo.townStreetName!=null and vo.townStreetName!=''">
+            and br.town_name like concat('%',#{vo.townStreetName},'%')
+        </if>
+        <if test="vo.neiName!=null and vo.neiName!=''">
+            and br.name like concat('%',#{vo.neiName},'%')
+        </if>
         <if test="vo.auditStatus != null and vo.auditStatus != ''">
             <if test="vo.auditStatus ==1">
                 AND jhr.audit_status  = 1
             </if>
             <if test="vo.auditStatus ==2">
+                AND jhr.audit_status  = 0
+            </if>
+            <if test="vo.auditStatus ==0">
                 AND jhr.audit_status  = 0
             </if>
             <if test="vo.auditStatus ==10">
@@ -126,35 +205,29 @@
         <if test="vo.startTime != null and vo.startTime != '' and vo.endTime != null and vo.endTime != '' ">
             AND jhr.create_time BETWEEN #{vo.startTime} and #{vo.endTime}
         </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>
-                <otherwise>
-                    and jg.community_code in ('')
-                </otherwise>
-            </choose>
+
+        <if test="vo.communityCode != null and vo.communityCode != ''">
+            AND jpag.community_code = #{vo.communityCode}
         </if>
-        <include refid="filterHouseGrid"/>
-        order by jhr.create_time desc,jhr.id desc
+
+        <include refid="filterData"/>
+
+        order by jhr.update_time desc
     </select>
 
     <!--查询房屋出租情况-->
     <select id="getHouseRentalListByCode" resultMap="houseRentalTenant">
-        select
-            jhr.*,
-            if(termination_time is null,if(date_format(jhr.due_time,'%Y-%m-%d') >= date_format(now(),'%Y-%m-%d'),0,1),2) as status,
-            jht.id as tenantId,
-            jht.*
+        select jhr.*,
+               if(termination_time is null,
+                  if(date_format(jhr.due_time, '%Y-%m-%d') >= date_format(now(), '%Y-%m-%d'), 0, 1), 2) as status,
+               jht.id                                                                                   as tenantId,
+               jht.*
         from jczz_house_rental jhr
-        left join jczz_household jht on jhr.id = jht.housing_rental_id and jht.is_deleted = 0
+                 left join jczz_household jht on jhr.id = jht.housing_rental_id and jht.is_deleted = 0
         where 1 = 1
-        and jhr.is_deleted = 0
-        and jhr.house_code = #{code}
+          and jhr.is_deleted = 0
+          and jhr.house_code = #{code}
+        order by jhr.id desc
     </select>
 
     <sql id="filterHouseGrid">
@@ -186,13 +259,15 @@
         GROUP BY housing_rental_id
         ) jht
         ON jht.housing_rental_id = jhr.id
-        LEFT JOIN jczz_doorplate_address jda ON jda.address_code = jhr.house_code
+        JOIN jczz_house jh ON jh.house_code = jhr.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 jhr.is_deleted = 0
         AND TIMESTAMPDIFF( MONTH, jhr.rental_time, jhr.due_time )>= 8
         <if test="vo.auditStatus != null and vo.auditStatus != '' or vo.auditStatus == 0 ">
             AND jhr.audit_status = #{vo.auditStatus}
         </if>
-        <include refid="filterHouseGrid"/>
+        <include refid="filterData"/>
 
         UNION ALL
 
@@ -205,13 +280,15 @@
         GROUP BY housing_rental_id
         ) jht
         ON jht.housing_rental_id = jhr.id
-        LEFT JOIN jczz_doorplate_address jda ON jda.address_code = jhr.house_code
+        JOIN jczz_house jh ON jh.house_code = jhr.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 jhr.is_deleted = 0
         AND 4 &lt;= TIMESTAMPDIFF( MONTH, rental_time, due_time ) AND TIMESTAMPDIFF( MONTH, rental_time, due_time )&lt;=8
         <if test="vo.auditStatus != null and vo.auditStatus != '' or vo.auditStatus == 0 ">
             AND jhr.audit_status = #{vo.auditStatus}
         </if>
-        <include refid="filterHouseGrid"/>
+        <include refid="filterData"/>
 
         UNION ALL
 
@@ -224,13 +301,15 @@
         GROUP BY housing_rental_id
         ) jht
         ON jht.housing_rental_id = jhr.id
-        LEFT JOIN jczz_doorplate_address jda ON jda.address_code = jhr.house_code
+        JOIN jczz_house jh ON jh.house_code = jhr.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 jhr.is_deleted = 0
         AND TIMESTAMPDIFF( MONTH, rental_time, due_time )&lt;4
         <if test="vo.auditStatus != null and vo.auditStatus != '' or vo.auditStatus == 0 ">
-                AND jhr.audit_status  = #{vo.auditStatus}
-            </if>
-            <include refid="filterHouseGrid"/>
+            AND jhr.audit_status  = #{vo.auditStatus}
+        </if>
+        <include refid="filterData"/>
     </select>
 
     <!--导出租赁信息-->
@@ -306,29 +385,76 @@
 
     <select id="getStatisticsCount" resultType="java.lang.Integer">
         SELECT
-        count( 1 )
-        FROM
-        jczz_house_rental jhr
-        LEFT JOIN jczz_doorplate_address jda ON jhr.house_code = jda.address_code
-        <where>
-            <if test="neiCode != null and neiCode != ''">
-                and jda.nei_code = #{neiCode}
+        count(1)
+        FROM jczz_house_rental jhr
+        JOIN jczz_house jh ON jh.house_code = jhr.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
+        LEFT JOIN (
+        SELECT jht.housing_rental_id,jht.name as tenantName,jht.phone_number as phone
+        FROM jczz_household jht RIGHT JOIN (
+        SELECT MAX(ID) as id,housing_rental_id
+        FROM jczz_household
+        WHERE is_deleted = 0
+        <if test="vo.tenantName != null and vo.tenantName != ''">
+            AND name LIKE CONCAT('%',#{vo.tenantName},'%')
+        </if>
+        and housing_rental_id is not null
+        GROUP BY  housing_rental_id
+        ) a ON a.id = jht.id and a.housing_rental_id is not null
+        ) b ON b.housing_rental_id = jhr.id
+        WHERE jhr.is_deleted = 0
+        <if test="vo.auditStatus != null">
+            <if test="vo.auditStatus ==1">
+                AND jhr.audit_status  = 1
             </if>
-            <if test="userId != null">
-                AND jhr.house_code IN (
-                SELECT
-                jgr.house_code
-                FROM
-                jczz_grid_range jgr
-                LEFT JOIN jczz_grid jg ON jg.id = jgr.grid_id
-                LEFT JOIN jczz_gridman jgm ON jg.id = jgm.grid_id
-                WHERE
-                jg.is_deleted = 0
-                AND jgm.user_id = #{userId} )
+            <if test="vo.auditStatus ==2">
+                AND jhr.audit_status  = 0
             </if>
-            and jhr.is_deleted = 0
-            and jhr.audit_status = 0
-        </where>
+            <if test="vo.auditStatus ==10">
+                AND date_format(jhr.due_time,'%Y-%m-%d')&gt;= date_format(now(),'%Y-%m-%d')
+            </if>
+            <if test="vo.auditStatus ==20">
+                AND TIMESTAMPDIFF( day, now(), jhr.due_time )&lt;30
+                AND TIMESTAMPDIFF( day, now(), jhr.due_time )&gt;= 0
+            </if>
+            <if test="vo.auditStatus ==30">
+                AND date_format(jhr.due_time,'%Y-%m-%d')&lt; date_format(now(),'%Y-%m-%d')
+            </if>
+        </if>
+        <if test="vo.tenantName != null and vo.tenantName != ''">
+            AND b.tenantName LIKE CONCAT('%',#{vo.tenantName},'%')
+        </if>
+        <if test="vo.tenantRelationship != null">
+            AND jhr.tenant_relationship = #{vo.tenantRelationship}
+        </if>
+        <if test="vo.houseStatus != null">
+            AND jhr.house_status = #{vo.houseStatus}
+        </if>
+        <if test="vo.rentalUse != null">
+            AND jhr.rental_use = #{vo.rentalUse}
+        </if>
+        <if test="vo.dldType != null">
+            <if test="vo.dldType ==1 ">
+                AND TIMESTAMPDIFF( MONTH, jhr.rental_time, jhr.due_time )&gt;= 8
+            </if>
+            <if test="vo.dldType ==2 ">
+                AND  4 &lt;= TIMESTAMPDIFF( MONTH, jhr.rental_time, jhr.due_time )
+                AND TIMESTAMPDIFF( MONTH, jhr.rental_time, jhr.due_time )&lt;=8
+            </if>
+            <if test="vo.dldType ==3 ">
+                AND TIMESTAMPDIFF( MONTH, jhr.rental_time, jhr.due_time )&lt;4
+            </if>
+        </if>
+        <if test="vo.startTime != null and vo.startTime != '' and vo.endTime != null and vo.endTime != '' ">
+            AND jhr.create_time BETWEEN #{vo.startTime} and #{vo.endTime}
+        </if>
+
+        <if test="vo.communityCode != null and vo.communityCode != ''">
+            AND jpag.community_code = #{vo.communityCode}
+        </if>
+
+        <include refid="filterData"/>
 
     </select>
 

--
Gitblit v1.9.3