<?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="carInoutV1ServiceDaoImpl">
|
|
|
<!-- 保存车辆进出场信息 add by wuxw 2018-07-03 -->
|
<insert id="saveCarInoutInfo" parameterType="Map">
|
insert into car_inout(
|
in_time,inout_id,pa_id,car_num,state,community_id,out_time
|
) values (
|
#{inTime},#{inoutId},#{paId},#{carNum},#{state},#{communityId},#{outTime}
|
)
|
</insert>
|
|
|
<!-- 查询车辆进出场信息 add by wuxw 2018-07-03 -->
|
<select id="getCarInoutInfo" parameterType="Map" resultType="Map">
|
SELECT
|
-- 出场记录字段
|
out_rec.in_time outInTime,
|
out_rec.inout_id outInoutId,
|
out_rec.pa_id paId,
|
out_rec.car_num carNum,
|
out_rec.vehicle_type vehicleType,
|
out_rec.payment_amount paymentAmount,
|
out_rec.merchant_id merchantId,
|
out_rec.direction,
|
out_rec.status_cd statusCd,
|
out_rec.state outState,
|
out_rec.community_id communityId,
|
out_rec.out_time outTime,
|
-- 关联的进场记录字段
|
in_rec.in_time inTime,
|
in_rec.inout_id inInoutId,
|
in_rec.state inState,
|
-- 其他关联信息
|
td_out.`name` outStateName,
|
td_in.`name` inStateName,
|
pa.num areaNum,
|
tcfc.fee_name feeName,
|
tcfc.config_id configId,
|
MAX(cid_out.car_type) carType,
|
MAX(cid_out.car_type_name) carTypeName,
|
-- 停车时长
|
TIMESTAMPDIFF(MINUTE, in_rec.in_time, out_rec.out_time) parkMinutes
|
FROM car_inout out_rec
|
-- 关联最新的进场记录
|
LEFT JOIN (
|
SELECT
|
car_num, in_time, inout_id, state, pa_id, community_id,
|
ROW_NUMBER() OVER (PARTITION BY car_num ORDER BY in_time DESC) rn
|
FROM car_inout
|
WHERE state = '100300' -- 进场状态
|
AND status_cd = '0'
|
) in_rec ON out_rec.car_num = in_rec.car_num
|
AND out_rec.in_time > in_rec.in_time
|
AND in_rec.rn = 1
|
AND out_rec.pa_id = in_rec.pa_id
|
|
-- 原有关联表(调整为关联出场记录)
|
LEFT JOIN car_inout_detail cid_out ON out_rec.inout_id = cid_out.inout_id
|
AND cid_out.status_cd = '0'
|
AND cid_out.state IN ('100300','100400','100600')
|
LEFT JOIN t_dict td_out ON out_rec.state = td_out.status_cd
|
AND td_out.table_columns = 'state'
|
AND td_out.table_name = 'car_inout'
|
LEFT JOIN t_dict td_in ON in_rec.state = td_in.status_cd
|
AND td_in.table_columns = 'state'
|
AND td_in.table_name = 'car_inout'
|
LEFT JOIN parking_area pa ON out_rec.pa_id = pa.pa_id
|
AND pa.status_cd = '0'
|
LEFT JOIN temp_car_fee_config tcfc ON pa.pa_id = tcfc.pa_id
|
AND tcfc.status_cd = '0'
|
|
WHERE 1 = 1
|
-- 主表筛选离场记录
|
AND out_rec.state = '100500' -- 离场状态
|
AND out_rec.status_cd = '0'
|
|
-- 保留原始所有查询条件(调整别名适配新结构)
|
<if test="inTime != null and inTime != ''">
|
AND in_rec.in_time = #{inTime}
|
</if>
|
<if test="inoutId != null and inoutId != ''">
|
AND out_rec.inout_id = #{inoutId}
|
</if>
|
<if test="paId != null and paId != ''">
|
AND out_rec.pa_id = #{paId}
|
</if>
|
<if test="paIds != null">
|
AND out_rec.pa_id IN
|
<foreach collection="paIds" item="item" open="(" close=")" separator=",">
|
#{item}
|
</foreach>
|
</if>
|
<if test="carNum != null and carNum != ''">
|
AND out_rec.car_num LIKE CONCAT('%', #{carNum}, '%')
|
</if>
|
<if test="carType != null and carType != ''">
|
AND cid_out.car_type = #{carType}
|
</if>
|
<if test="statusCd != null and statusCd != ''">
|
AND out_rec.status_cd = #{statusCd}
|
</if>
|
<if test="state != null and state != ''">
|
AND out_rec.state = #{state}
|
</if>
|
<if test="states != null">
|
AND out_rec.state IN
|
<foreach collection="states" item="item" open="(" close=")" separator=",">
|
#{item}
|
</foreach>
|
</if>
|
<if test="communityId != null and communityId != ''">
|
AND out_rec.community_id = #{communityId}
|
</if>
|
<if test="outTime != null and outTime != ''">
|
AND out_rec.out_time = #{outTime}
|
</if>
|
<if test="startTime != null and startTime != ''">
|
AND in_rec.in_time > #{startTime}
|
</if>
|
<if test="endTime != null and endTime != ''">
|
AND in_rec.in_time < #{endTime}
|
</if>
|
|
GROUP BY
|
out_rec.in_time, out_rec.inout_id, out_rec.pa_id, out_rec.car_num,
|
out_rec.status_cd, out_rec.state, out_rec.community_id, out_rec.out_time,
|
in_rec.in_time, in_rec.inout_id, in_rec.state,
|
td_out.`name`, td_in.`name`, pa.num, tcfc.fee_name, tcfc.config_id
|
|
ORDER BY out_rec.create_time DESC
|
|
<if test="page != -1 and page != null ">
|
limit #{page}, #{row}
|
</if>
|
|
</select>
|
|
|
<!-- 修改车辆进出场信息 add by wuxw 2018-07-03 -->
|
<update id="updateCarInoutInfo" parameterType="Map">
|
update car_inout t set t.status_cd = #{statusCd}
|
<if test="newBId != null and newBId != ''">
|
,t.b_id = #{newBId}
|
</if>
|
<if test="inTime !=null and inTime != ''">
|
, t.in_time= #{inTime}
|
</if>
|
<if test="carNum !=null and carNum != ''">
|
, t.car_num= #{carNum}
|
</if>
|
<if test="state !=null and state != ''">
|
, t.state= #{state}
|
</if>
|
<if test="outTime !=null and outTime != ''">
|
, t.out_time= #{outTime}
|
</if>
|
where 1=1
|
<if test="inoutId !=null and inoutId != ''">
|
and t.inout_id= #{inoutId}
|
</if>
|
<if test="paId !=null and paId != ''">
|
and t.pa_id= #{paId}
|
</if>
|
<if test="communityId !=null and communityId != ''">
|
and t.community_id= #{communityId}
|
</if>
|
|
</update>
|
|
<!-- 查询车辆进出场数量 add by wuxw 2018-07-03 -->
|
<select id="queryCarInoutsCount" parameterType="Map" resultType="Map">
|
select count(1) count
|
from car_inout t
|
where 1 =1
|
<if test="inTime !=null and inTime != ''">
|
and t.in_time= #{inTime}
|
</if>
|
<if test="paId !=null and paId != ''">
|
and t.pa_id= #{paId}
|
</if>
|
<if test="paIds !=null">
|
and t.pa_id in
|
<foreach collection="paIds" item="item" open="(" close=")" separator=",">
|
#{item}
|
</foreach>
|
</if>
|
<if test="carNum !=null and carNum != ''">
|
and t.car_num like concat('%',#{carNum},'%')
|
</if>
|
<if test="statusCd !=null and statusCd != ''">
|
and t.status_cd= #{statusCd}
|
</if>
|
<if test="state !=null and state != ''">
|
and t.state= #{state}
|
</if>
|
<if test="states !=null">
|
and t.state in
|
<foreach collection="states" item="item" open="(" close=")" separator=",">
|
#{item}
|
</foreach>
|
</if>
|
<if test="communityId !=null and communityId != ''">
|
and t.community_id= #{communityId}
|
</if>
|
<if test="outTime !=null and outTime != ''">
|
and t.out_time= #{outTime}
|
</if>
|
<if test="startTime !=null and startTime != ''">
|
and t.in_time > #{startTime}
|
</if>
|
<if test="endTime !=null and endTime != ''">
|
and t.in_time < #{endTime}
|
</if>
|
<if test="merchantId !=null and merchantId != ''">
|
and t.merchant_id < #{merchantId}
|
</if>
|
|
|
</select>
|
|
</mapper>
|