490 lines
20 KiB
XML
490 lines
20 KiB
XML
<?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>
|
|
<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>
|
|
<if test="leaseStatus != null">lease_status,</if>
|
|
<if test="leaseStartTime != null">lease_start_time,</if>
|
|
<if test="leaseEndTime != null ">lease_end_time,</if>
|
|
<if test="startTime != null">start_time,</if>
|
|
<if test="publishUser != null">publish_user,</if>
|
|
<if test="publishCompany != null">publish_company,</if>
|
|
<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>
|
|
<if test="provinceCode != null">#{provinceCode},</if>
|
|
<if test="cityCode != null">#{cityCode},</if>
|
|
<if test="address != null and address != ''">#{address},</if>
|
|
<if test="areaCode != null">#{areaCode},</if>
|
|
<if test="leaseStatus != null">#{leaseStatus},</if>
|
|
<if test="leaseStartTime != null">#{leaseStartTime},</if>
|
|
<if test="leaseEndTime != null ">#{leaseEndTime},</if>
|
|
<if test="startTime != null">#{startTime},</if>
|
|
<if test="publishUser != null">#{publishUser},</if>
|
|
<if test="publishCompany != null">#{publishCompany},</if>
|
|
<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>
|
|
|
|
<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>
|
|
<if test="description != null and description != ''">description,</if>
|
|
</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>
|
|
<if test="description != null and description != ''">#{description},</if>
|
|
</trim>
|
|
</insert>
|
|
|
|
<update id="updateDevInfo">
|
|
update ma_lease_info
|
|
<trim prefix="SET" suffixOverrides=",">
|
|
<if test="leaseName != null and leaseName != ''">lease_name = #{leaseName},</if>
|
|
<if test="provinceCode != null">province_code = #{provinceCode},</if>
|
|
<if test="cityCode != null">city_code = #{cityCode},</if>
|
|
<if test="areaCode != null">area_code = #{areaCode},</if>
|
|
<if test="address != null and address != ''">address = #{address},</if>
|
|
<if test="leaseStartTime != null ">lease_start_time = #{leaseStartTime},</if>
|
|
<if test="leaseEndTime != null ">lease_end_time = #{leaseEndTime},</if>
|
|
<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>
|
|
<if test="orderCompany != null and orderCompany != ''">order_company = #{orderCompany},</if>
|
|
<if test="orderTime != null">order_time = #{orderTime},</if>
|
|
<if test="agreeUser != null">agree_user = #{agreeUser},</if>
|
|
<if test="rejectUser != null">reject_user = #{rejectUser},</if>
|
|
</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>
|
|
|
|
<delete id="deleteDetailsById">
|
|
delete from ma_lease_details where lease_id = #{id}
|
|
</delete>
|
|
|
|
<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,
|
|
m.lease_start_time as leaseStartTime,
|
|
m.lease_end_time as leaseEndTime,
|
|
m.start_time as startTime,
|
|
m.end_time as endTime,
|
|
m.order_time as orderTime,
|
|
su.nick_name as orderUser,
|
|
su.phonenumber as orderPhone,
|
|
m.order_company as orderCompany,
|
|
sd2.dept_name as orderCompanyName,
|
|
m.person as person,
|
|
m.person_phone as personPhone,
|
|
m.description as description,
|
|
IFNULL(h.lease_num, 0) AS searchNum,
|
|
m.publish_user as publishUser,
|
|
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,
|
|
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
|
|
FROM
|
|
ma_lease_info m
|
|
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_hot_search h ON h.lease_id = m.id
|
|
LEFT JOIN sys_dept sd on m.publish_company = sd.dept_id
|
|
LEFT JOIN sys_dept sd2 on m.order_company = sd2.dept_id
|
|
LEFT JOIN sys_user su on m.order_user = su.user_id
|
|
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
|
|
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,
|
|
m.address as address,
|
|
m.publish_company as publishCompany
|
|
FROM
|
|
ma_lease_info m
|
|
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 sys_user su ON m.publish_user = su.user_id
|
|
LEFT JOIN sys_user su1 ON m.order_user = su1.user_id
|
|
WHERE 1 = 1 and m.publish_company = #{publishCompany}
|
|
<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>
|
|
<if test="publishStartTime != null and publishStartTime != '' and publishEndTime != null and publishEndTime != ''">
|
|
and DATE_FORMAT(m.start_time,'%Y-%m-%d') between #{publishStartTime} and #{publishEndTime}
|
|
</if>
|
|
<if test="finishStartTime != null and finishStartTime != '' and finishEndTime != null and finishEndTime != ''">
|
|
and DATE_FORMAT(m.end_time,'%Y-%m-%d') between #{finishStartTime} and #{finishEndTime}
|
|
</if>
|
|
GROUP BY m.lease_code
|
|
ORDER BY m.start_time DESC
|
|
</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
|
|
m.id AS id,
|
|
m.lease_name AS leaseName,
|
|
m.lease_code AS leaseCode,
|
|
m.lease_status AS leaseStatus,
|
|
m.lease_start_time AS leaseStartTime,
|
|
m.lease_end_time AS leaseEndTime,
|
|
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,
|
|
m.publish_company as publishCompany,
|
|
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,
|
|
b.name as areaName,
|
|
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
|
|
FROM
|
|
ma_lease_info m
|
|
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'
|
|
<if test="companyId != null and companyId != ''"> and m.publish_company = #{companyId}</if>
|
|
<if test="cityCode != null"> and m.city_code = #{cityCode}</if>
|
|
<if test="keyWord != null and keyWord != ''">
|
|
and (
|
|
locate(#{keyWord},m.lease_name) > 0
|
|
)
|
|
</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>
|
|
<if test="rentDay != null and rentDay == 'ASC'">
|
|
,leaseDay
|
|
</if>
|
|
<if test="rentDay != null and rentDay == 'DESC'">
|
|
,leaseDay DESC
|
|
</if>
|
|
<if test="endTime != '' and endTime == 'ASC'">
|
|
,m.end_time
|
|
</if>
|
|
<if test="endTime != '' and endTime == 'DESC'">
|
|
,m.end_time DESC
|
|
</if>
|
|
<if test="rentNum != null and rentNum == 'ASC'">
|
|
,SUM(m1.lease_num)
|
|
</if>
|
|
<if test="rentNum != null and rentNum == 'DESC'">
|
|
,SUM(m1.lease_num) DESC
|
|
</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,
|
|
m.lease_start_time as leaseStartTime,
|
|
m.lease_end_time as leaseEndTime,
|
|
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,
|
|
m.order_time as orderTime,
|
|
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
|
|
FROM
|
|
ma_lease_info m
|
|
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 sys_user su ON m.publish_user = su.user_id
|
|
LEFT JOIN sys_user su1 ON m.order_user = su1.user_id
|
|
WHERE 1 = 1 and m.order_company = #{orderCompany}
|
|
<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="finishStartTime != null and finishStartTime != '' and finishEndTime != null and finishEndTime != ''">
|
|
and DATE_FORMAT(m.end_time,'%Y-%m-%d') between #{finishStartTime} and #{finishEndTime}
|
|
</if>
|
|
<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>
|
|
GROUP BY m.lease_code
|
|
</select>
|
|
|
|
<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,
|
|
m.description as description,
|
|
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'
|
|
where m.lease_id = #{id}
|
|
</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>
|
|
|
|
<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')
|
|
and lease_status in (1,3)
|
|
</select>
|
|
|
|
<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>
|
|
|
|
<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>
|
|
</mapper> |