WITH RECURSIVE area_tree AS (
SELECT id FROM closed_area WHERE id = #{params.closedAreaId} AND delete_enum = 'FALSE'
UNION ALL
SELECT ca.id FROM closed_area ca INNER JOIN area_tree at ON ca.parent_id = at.id WHERE ca.delete_enum = 'FALSE'
)
SELECT har.*
FROM hk_access_record har
INNER JOIN mkmj_gate mg ON har.door_index_code = mg.hk_index_code AND mg.delete_enum = 'FALSE'
INNER JOIN mkmj m ON mg.mkmj_id = m.id AND m.delete_enum = 'FALSE'
INNER JOIN area_tree at ON m.closed_area_id = at.id
WHERE har.delete_enum = 'FALSE'
AND har.person_name LIKE CONCAT('%', #{params.personName}, '%')
AND har.event_time >= CONCAT(#{params.startTime}, ' 00:00:00')
AND har.event_time <= CONCAT(#{params.endTime}, ' 23:59:59')
WITH RECURSIVE area_tree AS (
SELECT id FROM closed_area WHERE id = #{params.closedAreaId} AND delete_enum = 'FALSE'
UNION ALL
SELECT ca.id FROM closed_area ca INNER JOIN area_tree at ON ca.parent_id = at.id WHERE ca.delete_enum = 'FALSE'
)
SELECT hvar.*
FROM hk_vehicle_access_record hvar
INNER JOIN mkmj_gate mg ON hvar.lane_index_code = mg.hk_index_code AND mg.delete_enum = 'FALSE'
INNER JOIN mkmj m ON mg.mkmj_id = m.id AND m.delete_enum = 'FALSE'
INNER JOIN area_tree at ON m.closed_area_id = at.id
WHERE hvar.delete_enum = 'FALSE'
AND hvar.plate_no LIKE CONCAT('%', #{params.vehiclePlateNumber}, '%')
AND (
OR (
hvar.enter_or_exit = 0
AND hvar.event_time >= CONCAT(#{params.arrivalStartTime}, ' 00:00:00')
AND hvar.event_time <= CONCAT(#{params.arrivalEndTime}, ' 23:59:59')
)
OR (
hvar.enter_or_exit = 1
AND hvar.event_time >= CONCAT(#{params.departureStartTime}, ' 00:00:00')
AND hvar.event_time <= CONCAT(#{params.departureEndTime}, ' 23:59:59')
)
)