(abr.to_return_company is null or abr.to_return_company = #{endCompanyId})
)
...
...
@@ -1060,6 +1092,9 @@
</sql>
<!-- 时间参数循环 -->
<!-- 包含 vbi:车辆预约信息 -->
<!-- vbi年月相等 或者 年月为空-->
<!-- booked_date 与换算 判断是否有重叠 日期-->
<sqlid ="yearMonthAndParamSql">
<!-- 若需根据预定日期条件查询,针对换为位操作 -->
( (vbi.`year_month` = #{yearMonth} or vbi.`year_month` is null) and
...
...
@@ -1069,23 +1104,51 @@
</sql>
<!-- 前后被预定的情况 -->
<!-- 大于预约结束时间,小于预约开始时间的预约记录) -->
<sqlid ="aroundBookRecord">
select sevbr.*
, vbre.ret_company as to_lift_company
, sevbr.max_book_end_date as to_lift_must_after_date
, vbrs.lift_company as to_return_company
, sevbr.min_book_start_date as to_return_must_before_date
from
<!--
查询开始时间 前面的最后一条 预约记录
查询结束时间 后面的第一条 预约记录
添加比较actual_start_date 和 actual_end_date-->
<!-- sevbr表:车辆联表预约记录,统计获得预约开始时间前最大预约记录时间、、预约结束时间后最小预约记录时间,过滤掉status != 4 and status != 6,和 -->
(select vehicle_id
, max(if(IFNULL(actual_end_date, book_end_date) < #{startDateExtend}, IFNULL(actual_end_date,book_end_date), null)) as max_book_end_date
, min(if(IFNULL(actual_start_date, book_start_date) > #{endDateExtend}, IFNULL(actual_start_date, book_start_date), null)) as min_book_start_date
from vehicle_book_record where status != 4 and status != 6 group by vehicle_id) sevbr
left join vehicle_book_record vbre
on sevbr.vehicle_id = vbre.vehicle_id and sevbr.max_book_end_date = vbre.book_end_date and vbre.status != 4 and vbre.status != 6
on sevbr.vehicle_id = vbre.vehicle_id and sevbr.max_book_end_date = IFNULL(vbre.actual_end_date, vbre.book_end_date) and vbre.status != 4 and vbre.status != 6
left join vehicle_book_record vbrs
on sevbr.vehicle_id = vbrs.vehicle_id and sevbr.min_book_start_date = IFNULL(vbrs.actual_start_date, vbrs.book_start_date) and vbrs.status != 4 and vbrs.status != 6
</sql>
<!-- 前后被预定的情况(相交叉) -->
<!-- (大于预约开始时间,小于预约结束时间的预约记录) -->
<sqlid ="aroundBookRecordIntersection">
select sevbr.*
, vbre.ret_company as to_lift_company
, sevbr.max_book_end_date as to_lift_must_after_date
, vbrs.lift_company as to_return_company
, sevbr.min_book_start_date as to_return_must_before_date
from
<!--
查询【结束】时间 前面的最后一条 预约记录
查询【开始】时间 后面的第一条 预约记录
添加比较actual_start_date 和 actual_end_date-->
<!-- sevbr表:车辆联表预约记录,统计获得预约开始时间前最大预约记录时间、、预约结束时间后最小预约记录时间,过滤掉status != 4 and status != 6,和 -->
(select vehicle_id
, max(if(IFNULL(actual_end_date, book_end_date) < #{endDateExtend}, IFNULL(actual_end_date,book_end_date), null)) as max_book_end_date
, min(if(IFNULL(actual_start_date, book_start_date) > #{startDateExtend}, IFNULL(actual_start_date, book_start_date), null)) as min_book_start_date
from vehicle_book_record where status != 4 and status != 6 group by vehicle_id) sevbr
left join vehicle_book_record vbre
on sevbr.vehicle_id = vbre.vehicle_id and sevbr.max_book_end_date = IFNULL(vbre.actual_end_date, vbre.book_end_date) and vbre.status != 4 and vbre.status != 6
left join vehicle_book_record vbrs
on sevbr.vehicle_id = vbrs.vehicle_id and sevbr.min_book_start_date = vbrs.book_start_date and vbrs.status != 4 and vbrs.status != 6
on sevbr.vehicle_id = vbrs.vehicle_id and sevbr.min_book_start_date = IFNULL(vbrs.actual_start_date, vbrs.book_start_date) and vbrs.status != 4 and vbrs.status != 6