Bonus-Cloud-Material-Mall/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/lease/MaLeaseInfoMapper.xml

490 lines
20 KiB
XML
Raw Normal View History

2024-11-27 17:29:15 +08:00
<?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="com.bonus.material.lease.mapper.MaLeaseInfoMapper">
<insert id="insert" useGeneratedKeys="true" keyProperty="id">
insert into ma_lease_info
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="leaseName != null and leaseName != ''">lease_name,</if>
<if test="leaseCode != null and leaseCode != ''">lease_code,</if>
2024-12-05 11:29:06 +08:00
<if test="provinceCode != null">province_code,</if>
<if test="cityCode != null">city_code,</if>
<if test="address != null and address != ''">address,</if>
<if test="areaCode != null">area_code,</if>
2024-11-27 17:29:15 +08:00
<if test="leaseStatus != null">lease_status,</if>
2024-12-06 14:12:02 +08:00
<if test="leaseStartTime != null">lease_start_time,</if>
<if test="leaseEndTime != null ">lease_end_time,</if>
2024-11-27 17:29:15 +08:00
<if test="startTime != null">start_time,</if>
<if test="publishUser != null">publish_user,</if>
2024-12-04 11:27:05 +08:00
<if test="publishCompany != null">publish_company,</if>
2024-11-27 17:29:15 +08:00
<if test="endTime != null">end_time,</if>
<if test="person != null">person,</if>
<if test="personPhone != null">person_phone,</if>
<if test="description != null and description != ''">description,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="leaseName != null and leaseName != ''">#{leaseName},</if>
<if test="leaseCode != null and leaseCode != ''">#{leaseCode},</if>
2024-12-05 11:29:06 +08:00
<if test="provinceCode != null">#{provinceCode},</if>
<if test="cityCode != null">#{cityCode},</if>
2024-12-06 17:58:35 +08:00
<if test="address != null and address != ''">#{address},</if>
2024-12-05 11:29:06 +08:00
<if test="areaCode != null">#{areaCode},</if>
2024-11-27 17:29:15 +08:00
<if test="leaseStatus != null">#{leaseStatus},</if>
2024-12-06 14:12:02 +08:00
<if test="leaseStartTime != null">#{leaseStartTime},</if>
<if test="leaseEndTime != null ">#{leaseEndTime},</if>
2024-11-27 17:29:15 +08:00
<if test="startTime != null">#{startTime},</if>
<if test="publishUser != null">#{publishUser},</if>
2024-12-04 11:27:05 +08:00
<if test="publishCompany != null">#{publishCompany},</if>
2024-11-27 17:29:15 +08:00
<if test="endTime != null">#{endTime},</if>
<if test="person != null">#{person},</if>
<if test="personPhone != null">#{personPhone},</if>
<if test="description != null and description != ''">#{description},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
</trim>
</insert>
<insert id="insertHotSearch">
insert into ma_hot_search(lease_id, lease_num, create_time)
values(#{id}, 1, now())
</insert>
2024-12-05 11:29:06 +08:00
<insert id="insertDetails" useGeneratedKeys="true" keyProperty="id">
insert into ma_lease_details
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="leaseId != null">lease_id,</if>
<if test="typeId != null">type_id,</if>
<if test="ids != null and ids != ''">type_ids,</if>
<if test="leaseNum != null">lease_num,</if>
2024-12-06 14:12:02 +08:00
<if test="description != null and description != ''">description,</if>
2024-12-05 11:29:06 +08:00
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="leaseId != null">#{leaseId},</if>
<if test="typeId != null">#{typeId},</if>
<if test="ids != null and ids != ''">#{ids},</if>
<if test="leaseNum != null ">#{leaseNum},</if>
2024-12-06 14:12:02 +08:00
<if test="description != null and description != ''">#{description},</if>
2024-12-05 11:29:06 +08:00
</trim>
</insert>
2024-11-27 17:29:15 +08:00
<update id="updateDevInfo">
update ma_lease_info
<trim prefix="SET" suffixOverrides=",">
<if test="leaseName != null and leaseName != ''">lease_name = #{leaseName},</if>
2024-12-05 11:29:06 +08:00
<if test="provinceCode != null">province_code = #{provinceCode},</if>
<if test="cityCode != null">city_code = #{cityCode},</if>
<if test="areaCode != null">area_code = #{areaCode},</if>
2024-12-06 17:58:35 +08:00
<if test="address != null and address != ''">address = #{address},</if>
2024-12-06 14:12:02 +08:00
<if test="leaseStartTime != null ">lease_start_time = #{leaseStartTime},</if>
<if test="leaseEndTime != null ">lease_end_time = #{leaseEndTime},</if>
2024-11-27 17:29:15 +08:00
<if test="leaseStatus != null ">lease_status = #{leaseStatus},</if>
<if test="startTime != null">start_time = #{startTime},</if>
<if test="publishUser != null and publishUser != ''">publish_user = #{publishUser},</if>
<if test="endTime != null">end_time = #{endTime},</if>
<if test="person != null">person = #{person},</if>
<if test="personPhone != null">person_phone = #{personPhone},</if>
<if test="description != null and description != ''">description = #{description},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="orderUser != null and orderUser != ''">order_user = #{orderUser},</if>
2024-12-04 10:50:10 +08:00
<if test="orderCompany != null and orderCompany != ''">order_company = #{orderCompany},</if>
2024-11-27 17:29:15 +08:00
<if test="orderTime != null">order_time = #{orderTime},</if>
2024-12-05 11:29:06 +08:00
<if test="agreeUser != null">agree_user = #{agreeUser},</if>
<if test="rejectUser != null">reject_user = #{rejectUser},</if>
2024-11-27 17:29:15 +08:00
</trim>
where id = #{id}
</update>
<update id="updateHotSearchByLeaseId">
update ma_hot_search
set lease_num = lease_num + 1,
update_time = now()
where lease_id = #{id}
</update>
<delete id="deleteById">
delete from ma_lease_info where id = #{id}
</delete>
2024-12-05 11:29:06 +08:00
<delete id="deleteDetailsById">
delete from ma_lease_details where lease_id = #{id}
</delete>
2024-11-27 17:29:15 +08:00
<select id="selectByName" resultType="com.bonus.material.lease.domain.vo.MaLeaseVo">
SELECT
m.id as id,
m.lease_name as leaseName,
m.lease_code as leaseCode,
m.lease_status as leaseStatus,
2024-12-06 14:12:02 +08:00
m.lease_start_time as leaseStartTime,
m.lease_end_time as leaseEndTime,
2024-11-27 17:29:15 +08:00
m.start_time as startTime,
m.end_time as endTime,
2024-12-12 15:53:24 +08:00
m.order_time as orderTime,
2024-12-12 16:02:13 +08:00
su.nick_name as orderUser,
2024-12-12 16:06:19 +08:00
su.phonenumber as orderPhone,
2024-12-12 15:53:24 +08:00
m.order_company as orderCompany,
sd2.dept_name as orderCompanyName,
2024-11-27 17:29:15 +08:00
m.person as person,
m.person_phone as personPhone,
m.description as description,
2024-11-28 15:53:12 +08:00
IFNULL(h.lease_num, 0) AS searchNum,
2024-12-01 13:30:13 +08:00
m.publish_user as publishUser,
2024-12-05 11:29:06 +08:00
m.publish_company as publishCompany,
m.province_code as provinceCode,
b1.name as provinceName,
m.city_code as cityCode,
b2.name as cityName,
m.area_code as areaCode,
b.name as areaName,
m.address as address,
2025-01-02 17:41:51 +08:00
sd.dept_name as companyName,
CASE
WHEN DATE(m.lease_end_time) = DATE(m.lease_start_time) THEN 1
ELSE TIMESTAMPDIFF(DAY, m.lease_start_time, m.lease_end_time) + 1
END AS leaseDay
2024-11-27 17:29:15 +08:00
FROM
ma_lease_info m
2024-12-05 11:29:06 +08:00
LEFT JOIN base_address b ON b.code = m.area_code
LEFT JOIN base_address b1 on m.province_code = b1.code
LEFT JOIN base_address b2 on m.city_code = b2.code
2024-11-27 17:29:15 +08:00
LEFT JOIN ma_hot_search h ON h.lease_id = m.id
2024-12-05 11:29:06 +08:00
LEFT JOIN sys_dept sd on m.publish_company = sd.dept_id
2024-12-12 15:53:24 +08:00
LEFT JOIN sys_dept sd2 on m.order_company = sd2.dept_id
2024-12-12 16:02:13 +08:00
LEFT JOIN sys_user su on m.order_user = su.user_id
2024-11-27 17:29:15 +08:00
WHERE 1 = 1
<if test="id != null">
and m.id = #{id}
</if>
<if test="leaseCode != null and leaseCode != ''">
and m.lease_code = #{leaseCode}
</if>
<if test="leaseName != null and leaseName != ''">
and m.lease_name = #{leaseName}
</if>
</select>
<select id="selectTaskNumByMonth" resultType="java.lang.String">
SELECT SUBSTRING(lease_code, - 4) as code
FROM ma_lease_info
WHERE DATE_FORMAT(create_time, '%y%m') = DATE_FORMAT(#{date}, '%y%m')
ORDER BY create_time DESC LIMIT 1
</select>
<select id="list" resultType="com.bonus.material.lease.domain.vo.MaLeaseVo">
SELECT
2024-12-05 11:29:06 +08:00
m.id as id,
m.lease_name as leaseName,
m.lease_code as leaseCode,
m.lease_status as leaseStatus,
m.start_time as startTime,
m.end_time as endTime,
CASE
WHEN lease_status = 0 THEN '待接单'
WHEN lease_status = 1 THEN '已接单'
WHEN lease_status = 2 THEN '已过期'
WHEN lease_status = 3 THEN '接单待审核'
WHEN lease_status = 4 THEN '驳回'
ELSE '未知'
END
AS leaseStatusName,
su.nick_name as publishUser,
su1.nick_name as orderUser,
su1.phonenumber as orderPhone,
m.province_code as provinceCode,
b1.name as provinceName,
m.city_code as cityCode,
b2.name as cityName,
m.area_code as areaCode,
b.name as areaName,
2024-12-05 15:50:21 +08:00
m.address as address,
m.publish_company as publishCompany
2024-11-27 17:29:15 +08:00
FROM
ma_lease_info m
2024-12-05 11:29:06 +08:00
LEFT JOIN base_address b ON b.code = m.area_code
LEFT JOIN base_address b1 on m.province_code = b1.code
LEFT JOIN base_address b2 on m.city_code = b2.code
2024-11-27 17:29:15 +08:00
LEFT JOIN sys_user su ON m.publish_user = su.user_id
2024-12-03 19:27:55 +08:00
LEFT JOIN sys_user su1 ON m.order_user = su1.user_id
2024-12-04 10:50:10 +08:00
WHERE 1 = 1 and m.publish_company = #{publishCompany}
2024-11-27 17:29:15 +08:00
<if test="leaseCode != null and leaseCode != ''">
and m.lease_code like concat('%',#{leaseCode},'%')
</if>
<if test="leaseName != null and leaseName != ''">
and m.lease_name like concat('%',#{leaseName},'%')
</if>
<if test="leaseStatus != null">
and m.lease_status = #{leaseStatus}
</if>
2024-12-02 11:15:28 +08:00
<if test="publishStartTime != null and publishStartTime != '' and publishEndTime != null and publishEndTime != ''">
2024-11-27 17:29:15 +08:00
and DATE_FORMAT(m.start_time,'%Y-%m-%d') between #{publishStartTime} and #{publishEndTime}
</if>
2024-12-02 11:15:28 +08:00
<if test="finishStartTime != null and finishStartTime != '' and finishEndTime != null and finishEndTime != ''">
2024-11-27 17:29:15 +08:00
and DATE_FORMAT(m.end_time,'%Y-%m-%d') between #{finishStartTime} and #{finishEndTime}
</if>
GROUP BY m.lease_code
2024-11-28 18:17:12 +08:00
ORDER BY m.start_time DESC
2024-11-27 17:29:15 +08:00
</select>
<select id="getHotSearchCountByLeaseId" resultType="java.lang.Integer">
select count(1) from ma_hot_search
where lease_id = #{leaseId}
</select>
<select id="leaseList" resultType="com.bonus.material.lease.domain.vo.MaLeaseVo">
SELECT
2024-12-05 11:29:06 +08:00
m.id AS id,
m.lease_name AS leaseName,
m.lease_code AS leaseCode,
m.lease_status AS leaseStatus,
2024-12-06 14:12:02 +08:00
m.lease_start_time AS leaseStartTime,
m.lease_end_time AS leaseEndTime,
2024-12-05 11:29:06 +08:00
m.start_time AS startTime,
m.end_time AS endTime,
m.person AS person,
m.person_phone AS personPhone,
m.description AS description,
m.publish_user AS publishUser,
2024-12-04 11:27:05 +08:00
m.publish_company as publishCompany,
2024-12-05 11:29:06 +08:00
sd.dept_name AS companyName,
SUM(m1.lease_num) AS leaseTotalNum,
m.province_code as provinceCode,
b1.name as provinceName,
m.city_code as cityCode,
b2.name as cityName,
m.area_code as areaCode,
2024-12-03 16:23:11 +08:00
b.name as areaName,
2024-12-06 18:25:13 +08:00
m.address as address,
CASE
WHEN DATE(m.lease_end_time) = DATE(m.lease_start_time) THEN 1
ELSE TIMESTAMPDIFF(DAY, m.lease_start_time, m.lease_end_time) + 1
END AS leaseDay
2024-11-27 17:29:15 +08:00
FROM
2024-12-01 16:26:11 +08:00
ma_lease_info m
2024-12-05 11:29:06 +08:00
LEFT JOIN base_address b ON b.code = m.area_code
LEFT JOIN base_address b1 on m.province_code = b1.code
LEFT JOIN base_address b2 on m.city_code = b2.code
LEFT JOIN ma_lease_details m1 ON m.id = m1.lease_id
LEFT JOIN sys_user su ON m.publish_user = su.user_id
LEFT JOIN sys_dept sd ON m.publish_company = sd.dept_id
WHERE m.lease_status = '0'
2024-12-06 14:12:02 +08:00
<if test="companyId != null and companyId != ''"> and m.publish_company = #{companyId}</if>
2024-12-05 11:29:06 +08:00
<if test="cityCode != null"> and m.city_code = #{cityCode}</if>
2024-11-27 17:29:15 +08:00
<if test="keyWord != null and keyWord != ''">
and (
2024-12-06 17:50:01 +08:00
locate(#{keyWord},m.lease_name) > 0
2024-11-27 17:29:15 +08:00
)
</if>
GROUP BY m.lease_code
ORDER BY
m.lease_status
<if test="startTime != '' and startTime == 'ASC'">
,m.start_time
</if>
<if test="startTime != '' and startTime == 'DESC'">
,m.start_time DESC
</if>
2024-12-06 18:25:13 +08:00
<if test="rentDay != null and rentDay == 'ASC'">
,leaseDay
2024-11-27 17:29:15 +08:00
</if>
2024-11-28 18:17:12 +08:00
<if test="rentDay != null and rentDay == 'DESC'">
2024-12-06 18:25:13 +08:00
,leaseDay DESC
</if>
2024-11-27 17:29:15 +08:00
<if test="endTime != '' and endTime == 'ASC'">
,m.end_time
</if>
<if test="endTime != '' and endTime == 'DESC'">
,m.end_time DESC
</if>
2024-11-28 18:17:12 +08:00
<if test="rentNum != null and rentNum == 'ASC'">
2024-12-05 11:29:06 +08:00
,SUM(m1.lease_num)
2024-11-27 17:29:15 +08:00
</if>
2024-11-28 18:17:12 +08:00
<if test="rentNum != null and rentNum == 'DESC'">
2024-12-05 11:29:06 +08:00
,SUM(m1.lease_num) DESC
2024-11-27 17:29:15 +08:00
</if>
</select>
<select id="rentList" resultType="com.bonus.material.lease.domain.vo.MaLeaseVo">
SELECT
m.id as id,
m.lease_name as leaseName,
m.lease_code as leaseCode,
m.lease_status as leaseStatus,
2024-12-06 14:12:02 +08:00
m.lease_start_time as leaseStartTime,
m.lease_end_time as leaseEndTime,
2024-11-27 17:29:15 +08:00
m.start_time as startTime,
m.end_time as endTime,
m.person as person,
m.person_phone as personPhone,
m.description as description,
su.nick_name as publishUser,
su1.nick_name as orderUser,
2024-12-02 11:15:28 +08:00
m.order_time as orderTime,
2024-12-05 11:29:06 +08:00
m.province_code as provinceCode,
b1.name as provinceName,
m.city_code as cityCode,
b2.name as cityName,
m.area_code as areaCode,
b.name as areaName,
m.address as address,
CASE
WHEN m.lease_status = 0 THEN '待接单'
WHEN m.lease_status = 1 THEN '已接单'
WHEN m.lease_status = 2 THEN '已过期'
WHEN m.lease_status = 3 THEN '接单待审核'
WHEN m.lease_status = 4 THEN '驳回'
ELSE '未知'
END
AS leaseStatusName
2024-11-27 17:29:15 +08:00
FROM
ma_lease_info m
2024-12-05 11:29:06 +08:00
LEFT JOIN base_address b ON b.code = m.area_code
LEFT JOIN base_address b1 on m.province_code = b1.code
LEFT JOIN base_address b2 on m.city_code = b2.code
2024-11-27 17:29:15 +08:00
LEFT JOIN sys_user su ON m.publish_user = su.user_id
LEFT JOIN sys_user su1 ON m.order_user = su1.user_id
2024-12-05 11:29:06 +08:00
WHERE 1 = 1 and m.order_company = #{orderCompany}
2024-11-27 17:29:15 +08:00
<if test="leaseCode != null and leaseCode != ''">
and m.lease_code like concat('%',#{leaseCode},'%')
</if>
<if test="leaseName != null and leaseName != ''">
and m.lease_name like concat('%',#{leaseName},'%')
</if>
2024-12-02 11:15:28 +08:00
<if test="finishStartTime != null and finishStartTime != '' and finishEndTime != null and finishEndTime != ''">
2024-11-27 17:29:15 +08:00
and DATE_FORMAT(m.end_time,'%Y-%m-%d') between #{finishStartTime} and #{finishEndTime}
</if>
2024-12-02 11:15:28 +08:00
<if test="orderStartTime != null and orderStartTime != '' and orderEndTime != null and orderEndTime != ''">
and DATE_FORMAT(m.order_time,'%Y-%m-%d') between #{orderStartTime} and #{orderEndTime}
</if>
2024-11-27 17:29:15 +08:00
GROUP BY m.lease_code
</select>
2024-12-05 11:29:06 +08:00
<select id="selectDetailsById" resultType="com.bonus.material.lease.domain.MaLeaseDetails">
select m.id as id,
m.type_id as typeId,
mt4.type_name as typeName,
m.type_ids as ids,
m.lease_num as leaseNum,
2024-12-06 14:12:02 +08:00
m.description as description,
2024-12-05 11:29:06 +08:00
mt3.type_id as thirdId,
mt3.type_name as thirdName,
mt2.type_id as secondId,
mt2.type_name as secondName,
mt1.type_id as firstId,
mt1.type_name as firstName,
CASE
-- 第一级
WHEN mt1.type_id IS NULL
AND mt2.type_id IS NULL
AND mt3.type_id IS NULL
AND mt4.type_id IS NOT NULL THEN
mt4.type_name
-- 第二级
WHEN mt1.type_id IS NULL
AND mt2.type_id IS NULL
AND mt3.type_id IS NOT NULL
AND mt4.type_id IS NOT NULL THEN
CONCAT(mt3.type_name, '/', mt4.type_name)
-- 第三级
WHEN mt1.type_id IS NULL
AND mt2.type_id IS NOT NULL
AND mt3.type_id IS NOT NULL
AND mt4.type_id IS NOT NULL THEN
CONCAT(mt2.type_name, '/', mt3.type_name, '/', mt4.type_name)
-- 第四级
WHEN mt1.type_id IS NOT NULL
AND mt2.type_id IS NOT NULL
AND mt3.type_id IS NOT NULL
AND mt4.type_id IS NOT NULL THEN
CONCAT(mt1.type_name, '/', mt2.type_name, '/', mt3.type_name, '/', mt4.type_name)
ELSE NULL
END AS groupName
from ma_lease_details m
LEFT JOIN ma_type mt4 ON mt4.type_id = m.type_id and mt4.del_flag = '0'
LEFT JOIN ma_type mt3 ON mt3.type_id = mt4.parent_id and mt3.del_flag = '0'
LEFT JOIN ma_type mt2 ON mt2.type_id = mt3.parent_id and mt2.del_flag = '0'
LEFT JOIN ma_type mt1 ON mt1.type_id = mt2.parent_id and mt1.del_flag = '0'
2024-12-06 17:50:01 +08:00
where m.lease_id = #{id}
2024-12-05 11:29:06 +08:00
</select>
<select id="getTodayLeaseCount" resultType="java.lang.Integer">
SELECT
COUNT(1) as leaseNum
FROM
ma_lease_info
WHERE
DATE_FORMAT( create_time, '%Y-%m-%d' ) = DATE_FORMAT(NOW(),'%Y-%m-%d')
</select>
2024-12-31 14:29:25 +08:00
<select id="getTodayLeaseOrderCount" resultType="java.lang.Integer">
SELECT
COUNT(1) as leaseOrderNum
FROM
ma_lease_info
WHERE
DATE_FORMAT( order_time, '%Y-%m-%d' ) = DATE_FORMAT(NOW(),'%Y-%m-%d')
2024-12-31 14:29:25 +08:00
and lease_status in (1,3)
</select>
2024-12-31 14:29:25 +08:00
<select id="getLeaseCount" resultType="java.lang.Integer">
SELECT
COUNT(1) as leaseNum
FROM
ma_lease_info
</select>
<select id="getLeaseOrderCount" resultType="java.lang.Integer">
SELECT
COUNT(1) as leaseOrderNum
FROM
ma_lease_info
WHERE
lease_status in (1,3)
</select>
<select id="getTopPopularTypeName" resultType="java.lang.String">
select mt.type_name from (
SELECT type_id
FROM ma_lease_details
group by type_id
order by count(type_id) desc limit 1
) a
left join ma_type mt on mt.type_id = a.type_id
</select>
<select id="getDevInfoById" resultType="com.bonus.material.lease.domain.MaLeaseInfo">
SELECT
mli.*,
sd.dept_name as publishCompanyName,
sd2.dept_name as orderCompanyName
FROM
ma_lease_info mli
LEFT JOIN sys_dept sd ON mli.publish_company = sd.dept_id
LEFT JOIN sys_dept sd2 ON mli.order_company = sd2.dept_id
WHERE
mli.id = #{id}
</select>
2025-01-02 18:08:33 +08:00
<select id="getLeaseStatusCount" resultType="com.bonus.material.lease.domain.MaLeaseInfo">
select a.lease_status as leaseStatus, count(a.lease_status) as leaseCount from
(
SELECT
mli.id,
min(mli.lease_status) as lease_status
FROM
ma_lease_info mli
WHERE
1=1
<if test="orderCompany != null">
AND mli.order_company = #{orderCompany}
</if>
<if test="publishCompany != null">
AND mli.publish_company = #{publishCompany}
</if>
GROUP BY id
) a
group by a.lease_status
</select>
2024-11-27 17:29:15 +08:00
</mapper>