|  |  | 
 |  |  |     </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日添加后废弃)--> | 
 |  |  | 
 |  |  |     <!--根据农户主键获取水卡列表(物理卡+虚拟卡)--> | 
 |  |  |     <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 | 
 |  |  |               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> | 
 |  |  |  | 
 |  |  |     <!--根据水卡编号获取余额--> | 
 |  |  | 
 |  |  |                     WHEN state = 1 THEN '正常' | 
 |  |  |                     WHEN state = 2 THEN '已注销' | 
 |  |  |                     WHEN state = 3 THEN '已挂失' | 
 |  |  |                     WHEN state = 4 THEN '无效卡片' | 
 |  |  |             END) AS stateName | 
 |  |  |         FROM se_client_card | 
 |  |  |         WHERE cardNum = #{cardNum,jdbcType=BIGINT} | 
 |  |  | 
 |  |  |     <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 != ''"> | 
 |  |  | 
 |  |  |     <!--根据指定条件获取水卡列表,应用程序使用--> | 
 |  |  |     <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 '正常'--> | 
 |  |  |         <!--            WHEN card.state = 2 THEN '已注销'--> | 
 |  |  |         <!--            WHEN card.state = 3 THEN '已挂失'--> | 
 |  |  |         <!--        End) AS stateName,--> | 
 |  |  |         '正常'                  AS stateName, | 
 |  |  |         '农户卡'                 AS cardType, | 
 |  |  |         FORMAT(card.money, 2) AS money | 
 |  |  |             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 | 
 |  |  |             LEFT JOIN se_client cli ON card.clientId = cli.id | 
 |  |  |         <where> | 
 |  |  |             AND card.state = 1 | 
 |  |  |             <if test="clientNum != null and clientNum != ''"> | 
 |  |  | 
 |  |  |  | 
 |  |  |     <!--获取已挂失未补卡的记录--> | 
 |  |  |     <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"> | 
 |  |  | 
 |  |  |         </trim> | 
 |  |  |     </select> | 
 |  |  |  | 
 |  |  |     <!--根据指定水卡编号获取挂失事记录数量(补卡、解锁使用)--> | 
 |  |  |     <!--根据指定水卡编号获取挂失记录数量(补卡、解锁使用)--> | 
 |  |  |     <select id="getLostCount" resultType="java.lang.Integer"> | 
 |  |  |         SELECT COUNT(*) AS recordCount | 
 |  |  |         FROM se_client_card card | 
 |  |  | 
 |  |  |     <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 != ''"> | 
 |  |  | 
 |  |  |                '农户卡'                 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 != ''"> | 
 |  |  | 
 |  |  |         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> | 
 |  |  |  | 
 |  |  |     <!--根据水卡地址获取指定状态的水卡数量--> | 
 |  |  | 
 |  |  |         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获取原水卡ID,补卡通知中使用--> | 
 |  |  |     <select id="getOriginalCardIdByCardId" resultType="java.lang.Long"> | 
 |  |  |         SELECT original_card_id AS originalCardId FROM se_client_card WHERE id = #{cardId}; | 
 |  |  |     </select> | 
 |  |  | </mapper> |