<?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="houseTenantVOList" javaType="java.util.List"
|
ofType="org.springblade.modules.house.vo.HouseTenantVO" autoMapping="true">
|
<id property="id" column="tenantId"/>
|
</collection>
|
</resultMap>
|
|
|
<select id="selectHouseRentalPage" resultType="org.springblade.modules.house.vo.HouseRentalTenantVO">
|
SELECT jhr.*,jda.address_name as houseName,b.tenantName,b.phone
|
FROM jczz_house_rental jhr
|
LEFT JOIN jczz_doorplate_address jda ON jda.address_code = jhr.house_code
|
LEFT JOIN (
|
SELECT jht.housing_rental_id,jht.name as tenantName,jht.phone
|
FROM jczz_house_tenant jht RIGHT JOIN (
|
SELECT MAX(ID) as id,housing_rental_id
|
FROM jczz_house_tenant
|
WHERE is_deleted = 0
|
<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 != '' or vo.auditStatus == 0 ">
|
AND jhr.audit_status = #{vo.auditStatus}
|
</if>
|
<if test="vo.tenantName != null and vo.tenantName != ''">
|
AND b.tenantName LIKE CONCAT('%',#{vo.tenantName},'%')
|
</if>
|
</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_house_tenant jht on jhr.id = jht.housing_rental_id and jht.is_deleted = 0
|
where 1 = 1
|
and jhr.is_deleted = 0
|
and house_code = #{code}
|
</select>
|
|
<select id="getStatistics" resultType="org.springblade.modules.house.vo.HouseRentalStatistics">
|
SELECT
|
'longTerm' AS term,COUNT( 1 ) total,temp.personNum
|
FROM(
|
SELECT COUNT( 1 ) personNum
|
FROM jczz_house_rental jhr
|
LEFT JOIN jczz_house_tenant jht ON jht.housing_rental_id = jhr.id
|
WHERE
|
TIMESTAMPDIFF( MONTH, jhr.rental_time, jhr.due_time )>= 8
|
AND jhr.is_deleted = 0 and jht.is_deleted = 0
|
GROUP BY jht.housing_rental_id
|
) TEMP
|
GROUP BY TEMP.personNum
|
|
UNION ALL
|
|
SELECT 'middleTerm' AS term,COUNT( 1 ) total, temp.personNum
|
FROM(
|
SELECT COUNT( 1 ) personNum
|
FROM jczz_house_rental jhr
|
LEFT JOIN jczz_house_tenant jht ON jht.housing_rental_id = jhr.id
|
WHERE
|
4 <= TIMESTAMPDIFF( MONTH, rental_time, due_time )
|
AND TIMESTAMPDIFF( MONTH, rental_time, due_time )<=8
|
AND jhr.is_deleted = 0 and jht.is_deleted = 0
|
GROUP BY jht.housing_rental_id
|
) TEMP
|
GROUP BY TEMP.personNum
|
|
UNION ALL
|
|
SELECT 'shortTerm' AS term,COUNT( 1 ) total,temp.personNum
|
FROM(
|
SELECT COUNT( 1 ) personNum
|
FROM jczz_house_rental jhr
|
LEFT JOIN jczz_house_tenant jht ON jht.housing_rental_id = jhr.id
|
WHERE
|
TIMESTAMPDIFF( MONTH, rental_time, due_time )<4
|
AND jhr.is_deleted = 0 and jht.is_deleted = 0
|
GROUP BY jht.housing_rental_id
|
) TEMP
|
GROUP BY TEMP.personNum
|
</select>
|
|
|
</mapper>
|