From 1e3eeec2d3a470d066d21900586b912dfef58c91 Mon Sep 17 00:00:00 2001
From: zhubaomin <zhubaomin>
Date: 星期四, 17 四月 2025 15:07:41 +0800
Subject: [PATCH] 优化代码

---
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml |   61 ++++++++++++++++++++++--------
 1 files changed, 44 insertions(+), 17 deletions(-)

diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml
index f90e929..ae9b1ff 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml
@@ -92,7 +92,8 @@
     <!-- 鏍规嵁姘村崱缂栧彿鑾峰彇姘村崱瀵瑰簲鐨勫啘鎴穒d鍜屽鍚� -->
     <select id="getClientIdAndNameByCardAddrAndCardNo" resultType="java.util.Map">
         SELECT cli.id   AS clientId,
-               cli.name AS clientName
+               cli.name AS clientName,
+               cli.address AS clientAddress
         FROM se_client_card card
                  INNER JOIN se_client cli ON card.clientId = cli.id
         WHERE card.cardAddr = #{cardAddr}
@@ -666,14 +667,27 @@
     <!--鑾峰彇鎸囧畾鏃堕棿娈垫按鍗′娇鐢ㄦ儏鍐佃褰曟暟閲�-->
     <select id="getCardUsagesCount" resultType="com.dy.pipIrrGlobal.voSt.VoCardUsage">
         SELECT
-            cli.name AS clientName,
-            card.cardNum,
-            (SELECT ROUND(SUM(rch.amount),2) FROM se_recharge_history rch WHERE rch.cardId = card.id AND rch.operate_valid = 2  AND rch.operateDt BETWEEN #{timeStart} AND #{timeStop}) AS totalRecharge,
-            (SELECT ROUND(SUM(his.cl_this_money),2) FROM rm_open_close_valve_history his WHERE his.cl_ic_card_no = card.cardNum AND his.cl_dt BETWEEN #{timeStart} AND #{timeStop}) AS totalConsumption,
-            ROUND(card.money,2) AS balance
-        FROM se_client_card card
-            INNER JOIN se_client cli ON cli.id = card.clientId
-<!--            INNER JOIN se_recharge_history rch ON rch.cardId = card.id-->
+        card.id as cardId,
+        cli.name AS clientName,
+        card.cardNum,
+        a.cl_ic_card_no,
+        card.money AS balance,
+        a.totalConsumption,
+        b.totalRecharge
+        FROM  se_client_card card
+        INNER JOIN se_client cli ON cli.id = card.clientId
+        LEFT JOIN  (
+        SELECT his.cl_ic_card_no, SUM(his.cl_this_money) AS totalConsumption
+        FROM rm_open_close_valve_history his
+        WHERE his.cl_dt BETWEEN #{timeStart} AND #{timeStop}
+        GROUP BY his.cl_ic_card_no
+        ) a ON  a.cl_ic_card_no = CAST(card.cardNum AS CHAR)
+        LEFT JOIN  (
+        SELECT rch.cardId,ROUND(SUM(rch.amount),2) as totalRecharge
+        FROM se_recharge_history rch
+        WHERE rch.operate_valid = 2  AND rch.operateDt BETWEEN #{timeStart} AND #{timeStop}
+        GROUP BY rch.cardId
+        ) b ON b.cardId = card.id
         <where>
             <if test="clientName != null and clientName != ''">
                 AND cli.name like CONCAT('%', #{clientName}, '%')
@@ -692,14 +706,27 @@
     <!--鑾峰彇鎸囧畾鏃堕棿娈垫按鍗′娇鐢ㄦ儏鍐碉細鍏呭�煎悎璁°�佹秷璐瑰悎璁°�佷綑棰�-->
     <select id="getCardUsages" resultType="com.dy.pipIrrGlobal.voSt.VoCardUsage">
         SELECT
-            cli.name AS clientName,
-            card.cardNum,
-            (SELECT ROUND(SUM(rch.amount),2) FROM se_recharge_history rch WHERE rch.cardId = card.id AND rch.operate_valid = 2  AND rch.operateDt BETWEEN #{timeStart} AND #{timeStop}) AS totalRecharge,
-            (SELECT ROUND(SUM(his.cl_this_money),2) FROM rm_open_close_valve_history his WHERE his.cl_ic_card_no = card.cardNum AND his.cl_dt BETWEEN #{timeStart} AND #{timeStop}) AS totalConsumption,
-            ROUND(card.money,2) AS balance
-        FROM se_client_card card
-            INNER JOIN se_client cli ON cli.id = card.clientId
-<!--            INNER JOIN se_recharge_history rch ON rch.cardId = card.id-->
+        card.id as cardId,
+        cli.name AS clientName,
+        card.cardNum,
+        a.cl_ic_card_no,
+        card.money AS balance,
+        a.totalConsumption,
+        b.totalRecharge
+        FROM  se_client_card card
+        INNER JOIN se_client cli ON cli.id = card.clientId
+        LEFT JOIN  (
+        SELECT his.cl_ic_card_no, SUM(his.cl_this_money) AS totalConsumption
+        FROM rm_open_close_valve_history his
+        WHERE his.cl_dt BETWEEN #{timeStart} AND #{timeStop}
+        GROUP BY his.cl_ic_card_no
+        ) a ON  a.cl_ic_card_no = CAST(card.cardNum AS CHAR)
+        LEFT JOIN  (
+        SELECT rch.cardId,ROUND(SUM(rch.amount),2) as totalRecharge
+        FROM se_recharge_history rch
+        WHERE rch.operate_valid = 2  AND rch.operateDt BETWEEN #{timeStart} AND #{timeStop}
+        GROUP BY rch.cardId
+        ) b ON b.cardId = card.id
         <where>
             <if test="clientName != null and clientName != ''">
                 AND cli.name like CONCAT('%', #{clientName}, '%')

--
Gitblit v1.8.0