From b88a288f4f787b509463678e3cd9ccfa3f37014b Mon Sep 17 00:00:00 2001
From: chengf <cgf12138@163.com>
Date: 星期三, 11 三月 2026 12:01:05 +0800
Subject: [PATCH] 导入测试

---
 java110-db/src/main/resources/mapper/common/CarInoutV1ServiceDaoImplMapper.xml |  148 +++++++++++++++++++++++++++++++++++++------------
 1 files changed, 111 insertions(+), 37 deletions(-)

diff --git a/java110-db/src/main/resources/mapper/common/CarInoutV1ServiceDaoImplMapper.xml b/java110-db/src/main/resources/mapper/common/CarInoutV1ServiceDaoImplMapper.xml
index b6892f1..6356d32 100644
--- a/java110-db/src/main/resources/mapper/common/CarInoutV1ServiceDaoImplMapper.xml
+++ b/java110-db/src/main/resources/mapper/common/CarInoutV1ServiceDaoImplMapper.xml
@@ -17,59 +17,127 @@
 
     <!-- 鏌ヨ杞﹁締杩涘嚭鍦轰俊鎭� add by wuxw 2018-07-03 -->
     <select id="getCarInoutInfo" parameterType="Map" resultType="Map">
-        select t.in_time,t.in_time inTime,t.inout_id,t.inout_id inoutId,t.pa_id,t.pa_id paId,t.car_num,t.car_num
-        carNum,t.status_cd,t.status_cd statusCd,t.state,t.community_id,t.community_id communityId,t.out_time,t.out_time
-        outTime,td.`name` stateName,pa.num areaNum,tcfc.fee_name feeName,tcfc.config_id configId,max(cid.car_type) carType
-        from car_inout t
-        LEFT JOIN car_inout_detail cid on t.inout_id = cid.inout_id and cid.status_cd = '0' and cid.state in ('100300','100400','100600')
-        left join t_dict td on t.state = td.status_cd and td.table_columns='state' and td.table_name = 'car_inout'
-        left join parking_area pa on t.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
-        <if test="inTime !=null and inTime != ''">
-            and t.in_time= #{inTime}
+        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 t.inout_id= #{inoutId}
+        <if test="inoutId != null and inoutId != ''">
+            AND out_rec.inout_id = #{inoutId}
         </if>
-        <if test="paId !=null and paId != ''">
-            and t.pa_id= #{paId}
+        <if test="paId != null and paId != ''">
+            AND out_rec.pa_id = #{paId}
         </if>
-        <if test="paIds !=null">
-            and t.pa_id in
+        <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 t.car_num= #{carNum}
+        <if test="carNum != null and carNum != ''">
+            AND out_rec.car_num LIKE CONCAT('%', #{carNum}, '%')
         </if>
-        <if test="carType !=null and carType != ''">
-            and cid.car_type= #{carType}
+        <if test="carType != null and carType != ''">
+            AND cid_out.car_type = #{carType}
         </if>
-        <if test="statusCd !=null and statusCd != ''">
-            and t.status_cd= #{statusCd}
+        <if test="statusCd != null and statusCd != ''">
+            AND out_rec.status_cd = #{statusCd}
         </if>
-        <if test="state !=null and state != ''">
-            and t.state= #{state}
+        <if test="state != null and state != ''">
+            AND out_rec.state = #{state}
         </if>
-        <if test="states !=null">
-            and t.state in
+        <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 t.community_id= #{communityId}
+        <if test="communityId != null and communityId != ''">
+            AND out_rec.community_id = #{communityId}
         </if>
-        <if test="outTime !=null and outTime != ''">
-            and t.out_time= #{outTime}
+        <if test="outTime != null and outTime != ''">
+            AND out_rec.out_time = #{outTime}
         </if>
-        group by t.in_time,t.inout_id,t.pa_id,t.car_num,t.status_cd,t.state,t.community_id,t.out_time,td.`name`,pa.num,tcfc.fee_name,tcfc.config_id
-        order by t.create_time desc
+        <if test="startTime != null and startTime != ''">
+            AND in_rec.in_time &gt; #{startTime}
+        </if>
+        <if test="endTime != null and endTime != ''">
+            AND in_rec.in_time &lt; #{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>
 
 
@@ -112,9 +180,6 @@
         <if test="inTime !=null and inTime != ''">
             and t.in_time= #{inTime}
         </if>
-        <if test="inoutId !=null and inoutId != ''">
-            and t.inout_id= #{inoutId}
-        </if>
         <if test="paId !=null and paId != ''">
             and t.pa_id= #{paId}
         </if>
@@ -125,7 +190,7 @@
             </foreach>
         </if>
         <if test="carNum !=null and carNum != ''">
-            and t.car_num= #{carNum}
+            and t.car_num like concat('%',#{carNum},'%')
         </if>
         <if test="statusCd !=null and statusCd != ''">
             and t.status_cd= #{statusCd}
@@ -145,6 +210,15 @@
         <if test="outTime !=null and outTime != ''">
             and t.out_time= #{outTime}
         </if>
+        <if test="startTime !=null and startTime != ''">
+            and t.in_time &gt; #{startTime}
+        </if>
+        <if test="endTime !=null and endTime != ''">
+            and t.in_time &lt; #{endTime}
+        </if>
+        <if test="merchantId !=null and merchantId != ''">
+            and t.merchant_id &lt; #{merchantId}
+        </if>
 
 
     </select>

--
Gitblit v1.8.0