|  |  | 
 |  |  |     <!-- 根据水卡编号获取水卡对应的农户id和姓名 --> | 
 |  |  |     <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} | 
 |  |  | 
 |  |  |     <!--根据农户主键获取水卡列表(物理卡+虚拟卡)--> | 
 |  |  |     <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 '正常' | 
 |  |  |                           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 '正常' | 
 |  |  |                     WHEN card.state = 2 THEN '已注销' | 
 |  |  |                     ELSE '已挂失' | 
 |  |  |                 END) AS state | 
 |  |  |               FROM se_client_card card | 
 |  |  |                        INNER JOIN se_client cli ON cli.id = card.clientId | 
 |  |  |                 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} | 
 |  |  |                 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="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 != ''"> | 
 |  |  | 
 |  |  |             '农户卡' 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 != ''"> | 
 |  |  | 
 |  |  |     <!--获取指定时间段水卡使用情况记录数量--> | 
 |  |  |     <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}, '%') | 
 |  |  | 
 |  |  |     <!--获取指定时间段水卡使用情况:充值合计、消费合计、余额--> | 
 |  |  |     <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}, '%') |