<?xml version="1.0" encoding="UTF-8"?>
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
<mapper namespace="org.springblade.modules.house.mapper.HouseRentalMapper">
|
|
<!-- 通用查询映射结果 -->
|
<resultMap id="houseRentalResultMap" type="org.springblade.modules.house.entity.HouseRentalEntity">
|
<result column="id" property="id"/>
|
<result column="house_code" property="houseCode"/>
|
<result column="house_name" property="houseName"/>
|
<result column="tenant_relationship" property="tenantRelationship"/>
|
<result column="rental_time" property="rentalTime"/>
|
<result column="due_time" property="dueTime"/>
|
<result column="house_status" property="houseStatus"/>
|
<result column="rental_use" property="rentalUse"/>
|
<result column="file_urls" property="fileUrls"/>
|
<result column="audit_status" property="auditStatus"/>
|
<result column="create_user" property="createUser"/>
|
<result column="create_time" property="createTime"/>
|
<result column="update_user" property="updateUser"/>
|
<result column="update_time" property="updateTime"/>
|
<result column="remark" property="remark"/>
|
<result column="is_deleted" property="isDeleted"/>
|
</resultMap>
|
|
<resultMap id="houseRentalTenant" type="org.springblade.modules.house.vo.HouseRentalVO"
|
autoMapping="true">
|
<id property="id" column="id"/>
|
<collection property="householdVOList" javaType="java.util.List"
|
ofType="org.springblade.modules.house.vo.HouseholdVO" autoMapping="true">
|
<id property="id" column="tenantId"/>
|
</collection>
|
</resultMap>
|
|
|
<sql id="selectHouseRental">
|
select
|
id,
|
house_code,
|
tenant_relationship,
|
rental_time,
|
due_time,
|
termination_time,
|
house_status,
|
rental_use,
|
audit_status,
|
file_urls,
|
create_user,
|
create_time,
|
update_user,
|
update_time,
|
remark,
|
is_deleted
|
from
|
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.*,
|
jh.address as houseName,
|
b.tenantName,
|
br.town_name as townStreetName,
|
br.name as neiName,
|
b.phone,
|
concat(jh.district_name," ",jh.building," ",unit," ",room) as address,
|
case when TIMESTAMPDIFF( MONTH, jhr.rental_time, jhr.due_time )>= 8 then 1
|
when TIMESTAMPDIFF( MONTH, jhr.rental_time, jhr.due_time )<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_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
|
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.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 ==10">
|
AND date_format(jhr.due_time,'%Y-%m-%d')>= date_format(now(),'%Y-%m-%d')
|
</if>
|
<if test="vo.auditStatus ==20">
|
AND TIMESTAMPDIFF( day, now(), jhr.due_time )<30
|
AND TIMESTAMPDIFF( day, now(), jhr.due_time )>= 0
|
</if>
|
<if test="vo.auditStatus ==30">
|
AND date_format(jhr.due_time,'%Y-%m-%d')< 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 )>= 8
|
</if>
|
<if test="vo.dldType ==2 ">
|
AND 4 <= TIMESTAMPDIFF( MONTH, jhr.rental_time, jhr.due_time )
|
AND TIMESTAMPDIFF( MONTH, jhr.rental_time, jhr.due_time )<=8
|
</if>
|
<if test="vo.dldType ==3 ">
|
AND TIMESTAMPDIFF( MONTH, jhr.rental_time, jhr.due_time )<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"/>
|
|
order by jhr.id 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.*
|
from jczz_house_rental jhr
|
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}
|
order by jhr.id desc
|
</select>
|
|
<sql id="filterHouseGrid">
|
<if test="vo.roleName!=null and vo.roleName!=''">
|
<if test="vo.roleName=='网格员'">
|
<choose>
|
<when test="list != null and list.size()>0">
|
and jda.address_code in
|
<foreach collection="list" item="houseCode" separator ="," open="(" close=")">
|
#{houseCode}
|
</foreach>
|
</when>
|
<otherwise>
|
and jda.address_code in ('')
|
</otherwise>
|
</choose>
|
</if>
|
</if>
|
</sql>
|
|
<select id="getStatistics" resultType="org.springblade.modules.house.vo.HouseRentalStatistics">
|
SELECT
|
'longTerm' as term,count(1) total,ifnull(sum(num),0) as personNum
|
FROM jczz_house_rental jhr
|
LEFT JOIN
|
(
|
select housing_rental_id,count(*) num from jczz_household
|
where is_deleted = 0 and housing_rental_id is not null
|
GROUP BY housing_rental_id
|
) jht
|
ON jht.housing_rental_id = jhr.id
|
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="filterData"/>
|
|
UNION ALL
|
|
SELECT 'middleTerm' AS term,count(1) total,ifnull(sum(num),0) as personNum
|
FROM jczz_house_rental jhr
|
LEFT JOIN
|
(
|
select housing_rental_id,count(*) num from jczz_household
|
where is_deleted = 0 and housing_rental_id is not null
|
GROUP BY housing_rental_id
|
) jht
|
ON jht.housing_rental_id = jhr.id
|
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 <= TIMESTAMPDIFF( MONTH, rental_time, due_time ) AND TIMESTAMPDIFF( MONTH, rental_time, due_time )<=8
|
<if test="vo.auditStatus != null and vo.auditStatus != '' or vo.auditStatus == 0 ">
|
AND jhr.audit_status = #{vo.auditStatus}
|
</if>
|
<include refid="filterData"/>
|
|
UNION ALL
|
|
SELECT 'shortTerm' AS term,count(1) total,ifnull(sum(num),0) as personNum
|
FROM jczz_house_rental jhr
|
LEFT JOIN
|
(
|
select housing_rental_id,count(*) num from jczz_household
|
where is_deleted = 0 and housing_rental_id is not null
|
GROUP BY housing_rental_id
|
) jht
|
ON jht.housing_rental_id = jhr.id
|
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 )<4
|
<if test="vo.auditStatus != null and vo.auditStatus != '' or vo.auditStatus == 0 ">
|
AND jhr.audit_status = #{vo.auditStatus}
|
</if>
|
<include refid="filterData"/>
|
</select>
|
|
<!--导出租赁信息-->
|
<select id="export" resultType="org.springblade.modules.house.excel.HouseRentalExcel">
|
SELECT
|
jhr.tenant_relationship,jhr.rental_time,jhr.due_time,jhr.house_status,
|
jhr.rental_use,jhr.audit_status,jhr.remark,
|
jda.address_name as houseName,b.tenantName,b.phone,
|
concat(jh.district_name," ",jh.building," ",unit," ",room) as address,
|
case when TIMESTAMPDIFF( MONTH, jhr.rental_time, jhr.due_time )>= 8 then 1
|
when TIMESTAMPDIFF( MONTH, jhr.rental_time, jhr.due_time )<4 then 3
|
else 2 end as dldType
|
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 and jh.is_deleted = 0
|
LEFT JOIN (
|
SELECT jht.housing_rental_id,jht.name as tenantName,jht.phoneNumber phone
|
FROM jczz_household jht RIGHT JOIN (
|
SELECT MAX(ID) as id,housing_rental_id
|
FROM jczz_household
|
WHERE is_deleted = 0 and house_rental_id is not null
|
<if test="vo.tenantName != null and vo.tenantName != ''">
|
AND name LIKE CONCAT('%',#{vo.tenantName},'%')
|
</if>
|
GROUP BY housing_rental_id
|
) a ON a.id = jht.id
|
) b ON b.housing_rental_id = jhr.id
|
WHERE jhr.is_deleted = 0
|
<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 ==10">
|
AND date_format(jhr.due_time,'%Y-%m-%d')>= date_format(now(),'%Y-%m-%d')
|
</if>
|
<if test="vo.auditStatus ==20">
|
AND TIMESTAMPDIFF( day, now(), jhr.due_time )<30
|
</if>
|
<if test="vo.auditStatus ==30">
|
AND date_format(jhr.due_time,'%Y-%m-%d')< 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 )>= 8
|
</if>
|
<if test="vo.dldType ==2 ">
|
AND 4 <= TIMESTAMPDIFF( MONTH, jhr.rental_time, jhr.due_time )
|
AND TIMESTAMPDIFF( MONTH, jhr.rental_time, jhr.due_time )<=8
|
</if>
|
<if test="vo.dldType ==3 ">
|
AND TIMESTAMPDIFF( MONTH, jhr.rental_time, jhr.due_time )<4
|
</if>
|
</if>
|
<include refid="filterHouseGrid"/>
|
</select>
|
|
|
<select id="getStatisticsCount" resultType="java.lang.Integer">
|
SELECT
|
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="vo.auditStatus ==2">
|
AND jhr.audit_status = 0
|
</if>
|
<if test="vo.auditStatus ==10">
|
AND date_format(jhr.due_time,'%Y-%m-%d')>= date_format(now(),'%Y-%m-%d')
|
</if>
|
<if test="vo.auditStatus ==20">
|
AND TIMESTAMPDIFF( day, now(), jhr.due_time )<30
|
AND TIMESTAMPDIFF( day, now(), jhr.due_time )>= 0
|
</if>
|
<if test="vo.auditStatus ==30">
|
AND date_format(jhr.due_time,'%Y-%m-%d')< 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 )>= 8
|
</if>
|
<if test="vo.dldType ==2 ">
|
AND 4 <= TIMESTAMPDIFF( MONTH, jhr.rental_time, jhr.due_time )
|
AND TIMESTAMPDIFF( MONTH, jhr.rental_time, jhr.due_time )<=8
|
</if>
|
<if test="vo.dldType ==3 ">
|
AND TIMESTAMPDIFF( MONTH, jhr.rental_time, jhr.due_time )<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>
|
|
|
</mapper>
|