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 | 234 ++++++++++++++++++++++++++++++++++++---------------------- 1 files changed, 146 insertions(+), 88 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 8935aee..ae9b1ff 100644 --- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml +++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml @@ -61,10 +61,13 @@ </delete> <!--渚濇嵁姘村崱鍦板潃鑾峰彇姘村崱缂栧彿锛�12鏈�19鏃ュ簾寮冿級--> + <!--2024-06-30鍙栨秷搴熷純锛屾仮澶嶄娇鐢�--> <select id="getCardIdByAddr" resultType="java.lang.Long"> SELECT id AS cardId FROM se_client_card WHERE cardAddr = #{cardAddr} + ORDER BY id DESC + LIMIT 1 </select> <!--鏍规嵁姘村崱缂栧彿鑾峰彇姘村崱琛ㄤ富閿紙12鏈�19鏃ユ坊鍔犲悗搴熷純锛�--> @@ -89,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} @@ -346,47 +350,67 @@ <!--鏍规嵁鍐滄埛涓婚敭鑾峰彇姘村崱鍒楄〃锛堢墿鐞嗗崱+铏氭嫙鍗★級--> <select id="getCardInfoByClientId" resultType="com.dy.pipIrrGlobal.voSe.VoCardInfo"> SELECT * - FROM (SELECT '鐗╃悊鍗�' AS cardType, - card.cardNum AS cardNum, - card.money AS money, - (CASE - WHEN card.state = 1 THEN '姝e父' - WHEN card.state = 2 THEN '宸叉敞閿�' - ELSE '宸叉寕澶�' - END) AS state + FROM (SELECT + '鐗╃悊鍗�' AS cardType, + card.cardNum AS cardNum, + card.money AS money, + (CASE + WHEN card.state = 1 THEN '姝e父' + WHEN card.state = 2 THEN '宸叉敞閿�' + ELSE '宸叉寕澶�' + END) AS state FROM se_client_card card - INNER JOIN se_client cli ON cli.id = card.clientId - WHERE card.clientId = #{clientId,jdbcType=BIGINT} + INNER JOIN se_client cli ON cli.id = card.clientId + WHERE state != 4 AND card.clientId = #{clientId,jdbcType=BIGINT} UNION ALL - SELECT '铏氭嫙鍗�' AS cardType, - vc.vc_num AS cardNum, - vc.money AS money, - (CASE - WHEN vc.in_use = 0 THEN '鏈娇鐢�' - WHEN vc.in_use = 1 THEN '浣跨敤涓�' - END) AS state + SELECT + '铏氭嫙鍗�' AS cardType, + vc.vc_num AS cardNum, + ROUND(vc.money /100, 2) AS money, + (CASE + WHEN vc.in_use = 0 THEN '鏈娇鐢�' + WHEN vc.in_use = 1 THEN '浣跨敤涓�' + END) AS state FROM se_virtual_card vc - INNER JOIN se_client cli ON cli.id = vc.client_id - WHERE vc.client_id = #{clientId,jdbcType=BIGINT} - <!-- SELECT '铏氭嫙鍗�' AS cardType,--> - <!-- virtualCard.vc_num AS CardNum,--> - <!-- virtualCard.money AS vcMoney,--> - <!-- (CASE--> - <!-- WHEN virtualCard.in_use = 0 THEN '鏈娇鐢�'--> - <!-- WHEN virtualCard.in_use = 1 THEN '浣跨敤涓�'--> - <!-- END) AS State--> - <!-- FROM se_client client--> - <!-- LEFT JOIN se_virtual_card virtualCard ON client.id = virtualCard.client_id--> - <!-- WHERE client.id = #{clientId,jdbcType=BIGINT}--> + INNER JOIN se_client cli ON cli.id = vc.client_id + WHERE vc.state = 1 AND vc.client_id = #{clientId,jdbcType=BIGINT} ) card ORDER BY card.Money DESC, card.State DESC </select> <!--鏍规嵁姘村崱缂栧彿鑾峰彇鎿嶄綔璁板綍鍒楄〃--> <select id="getOperateRecordsByCardNum" resultType="java.util.HashMap"> - SELECT * - FROM v_operate - WHERE cardNum = #{cardNum,jdbcType=BIGINT} + SELECT + ope.id AS orderNumber, + cli.villageId, + cli.districtTitle, + cli.clientNum, + cli.`name`, + card.cardNum, + cli.idCard, + cli.phone, + IFNULL(ope.money,0) AS money, + IFNULL(ope.gift,0) AS gift, + IFNULL(ope.card_cost,0) AS cardCost, + IFNULL((ope.money + ope.trade_amount + ope.gift),0) AS afterRecharge, + ope.payment_id AS paymentId, + pay.name AS paymentMethod, + CASE + WHEN ope.operate_type = 1 THEN '寮�鍗�' + WHEN ope.operate_type = 2 THEN '鍏呭��' + WHEN ope.operate_type = 3 THEN '閿�鍗�' + END AS operateType, + ope.operate_dt AS operateDt, + user.name AS operatorName + FROM se_card_operate ope + LEFT JOIN se_client cli ON cli.id = ope.client_id + LEFT JOIN se_client_card card ON card.id = ope.card_id + LEFT JOIN se_payment_method pay ON pay.id = ope.payment_id + LEFT JOIN ba_user user ON user.id = ope.operator + WHERE ope.operate_valid = 2 AND ope.operate_type in (1,2,3) AND cardNum = #{cardNum,jdbcType=BIGINT} +<!-- SELECT *--> +<!-- FROM v_operate--> +<!-- WHERE cardNum = #{cardNum,jdbcType=BIGINT}--> </select> <!--鏍规嵁姘村崱缂栧彿鑾峰彇浣欓--> @@ -423,6 +447,7 @@ WHEN state = 1 THEN '姝e父' WHEN state = 2 THEN '宸叉敞閿�' WHEN state = 3 THEN '宸叉寕澶�' + WHEN state = 4 THEN '鏃犳晥鍗$墖' END) AS stateName FROM se_client_card WHERE cardNum = #{cardNum,jdbcType=BIGINT} @@ -432,7 +457,7 @@ <select id="getCardsCount" parameterType="java.util.Map" resultType="java.lang.Long"> SELECT COUNT(*) AS recordCount FROM se_client_card card - INNER JOIN se_client cli ON card.clientId = cli.id + LEFT JOIN se_client cli ON card.clientId = cli.id <where> AND card.state = 1 <if test="clientNum != null and clientNum != ''"> @@ -452,25 +477,16 @@ <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇姘村崱鍒楄〃锛屽簲鐢ㄧ▼搴忎娇鐢�--> <select id="getCards" resultType="com.dy.pipIrrGlobal.voSe.VoCards"> SELECT cli.clientNum, - cli.name AS clientName, - cardNum, - <!-- CASE--> - <!-- WHEN card.cardNum LIKE '10%' THEN CONCAT(SUBSTRING(card.cardNum, 7, 6),SUBSTRING(card.cardNum, 14, 4))--> - <!-- ELSE card.cardNum--> - <!-- END AS cardNum,--> - cli.phone, - cli.idCard, - card.state AS cardState, - <!-- (CASE--> - <!-- WHEN card.state = 1 THEN '姝e父'--> - <!-- WHEN card.state = 2 THEN '宸叉敞閿�'--> - <!-- WHEN card.state = 3 THEN '宸叉寕澶�'--> - <!-- End) AS stateName,--> - '姝e父' AS stateName, - '鍐滄埛鍗�' AS cardType, - FORMAT(card.money, 2) AS money + cli.name AS clientName, + cardNum, + cli.phone, + cli.idCard, + card.state AS cardState, + '姝e父' AS stateName, + '鍐滄埛鍗�' AS cardType, + FORMAT(card.money, 2) AS money FROM se_client_card card - INNER JOIN se_client cli ON card.clientId = cli.id + LEFT JOIN se_client cli ON card.clientId = cli.id <where> AND card.state = 1 <if test="clientNum != null and clientNum != ''"> @@ -504,23 +520,20 @@ <!--鑾峰彇宸叉寕澶辨湭琛ュ崱鐨勮褰�--> <select id="getUnreplaced" resultType="com.dy.pipIrrGlobal.voSe.VoCards"> - SELECT cli.clientNum, - cli.name AS clientName, - cardNum, - <!-- CASE--> - <!-- WHEN card.cardNum LIKE '10%' THEN CONCAT(SUBSTRING(card.cardNum, 7, 6),SUBSTRING(card.cardNum, 14, 4))--> - <!-- ELSE card.cardNum--> - <!-- END AS cardNum,--> - cli.phone, - cli.idCard, - card.state AS cardState, - '宸叉寕澶�' AS stateName, - '鍐滄埛鍗�' AS cardType, - FORMAT(card.money, 2) AS money + SELECT + cli.clientNum, + cli.name AS clientName, + cardNum, + cli.phone, + cli.idCard, + card.state AS cardState, + '宸叉寕澶�' AS stateName, + '鍐滄埛鍗�' AS cardType, + FORMAT(card.money, 2) AS money FROM se_client_card card - INNER JOIN se_client cli ON card.clientId = cli.id + INNER JOIN se_client cli ON card.clientId = cli.id WHERE card.state = 3 - AND NOT EXISTS(SELECT * FROM se_client_card card2 WHERE card2.original_card_id = card.id) + AND NOT EXISTS(SELECT * FROM se_client_card card2 WHERE card2.original_card_id = card.id) ORDER BY card.id <trim prefix="limit "> <if test="start != null and count != null"> @@ -529,7 +542,7 @@ </trim> </select> - <!--鏍规嵁鎸囧畾姘村崱缂栧彿鑾峰彇鎸傚け浜嬭褰曟暟閲忥紙琛ュ崱銆佽В閿佷娇鐢級--> + <!--鏍规嵁鎸囧畾姘村崱缂栧彿鑾峰彇鎸傚け璁板綍鏁伴噺锛堣ˉ鍗°�佽В閿佷娇鐢級--> <select id="getLostCount" resultType="java.lang.Integer"> SELECT COUNT(*) AS recordCount FROM se_client_card card @@ -556,7 +569,7 @@ <select id="getCardsByClientNameAndPhoneCount" resultType="java.lang.Long"> SELECT COUNT(*) AS recordCount FROM se_client_card card - INNER JOIN se_client cli ON card.clientId = cli.id + INNER JOIN se_client cli ON card.clientId = cli.id <where> card.state = 1 <if test="clientName != null and clientName != ''"> @@ -586,7 +599,7 @@ '鍐滄埛鍗�' AS cardType, FORMAT(card.money, 2) AS money FROM se_client_card card - INNER JOIN se_client cli ON card.clientId = cli.id + LEFT JOIN se_client cli ON card.clientId = cli.id <where> card.state = 1 <if test="clientName != null and clientName != ''"> @@ -636,11 +649,11 @@ WHERE state = 1 </select> - <!--鏍规嵁姘村崱鍦板潃鑾峰彇姘村崱鏁伴噺--> + <!--鏍规嵁姘村崱鍦板潃鑾峰彇姘村崱鏁伴噺锛屾棤鏁堝崱鐗囨帓闄ゅ湪澶�--> <select id="getCountByCardAddr" resultType="java.lang.Long"> SELECT COUNT(*) AS recordCount FROM se_client_card - WHERE cardAddr = #{cardAddr} + WHERE cardAddr = #{cardAddr} AND se_client_card.state != 4 </select> <!--鏍规嵁姘村崱鍦板潃鑾峰彇鎸囧畾鐘舵�佺殑姘村崱鏁伴噺--> @@ -654,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.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}, '%') @@ -680,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.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}, '%') @@ -722,4 +761,23 @@ FROM rm_open_close_valve_history WHERE cl_dt BETWEEN #{timeStart} AND #{timeStop} </select> + + <!--渚濇嵁姘村崱鍦板潃灏嗘渶鍚庝竴鏉℃棤鏁堢姸鎬佺殑鎸囧畾鎿嶄綔璁板綍鏀逛负鏈夋晥--> + <update id="turnCardValidByAddr"> + UPDATE se_client_card + SET state = 1 + WHERE id = ( + SELECT id FROM ( + SELECT id + FROM se_client_card + WHERE state = 4 AND cardAddr = #{cardAddr} AND lastOper = #{operateType} + ORDER BY id DESC + LIMIT 1) AS subquery + ); + </update> + + <!--鏍规嵁姘村崱ID鑾峰彇鍘熸按鍗D锛岃ˉ鍗¢�氱煡涓娇鐢�--> + <select id="getOriginalCardIdByCardId" resultType="java.lang.Long"> + SELECT original_card_id AS originalCardId FROM se_client_card WHERE id = #{cardId}; + </select> </mapper> \ No newline at end of file -- Gitblit v1.8.0