|  |  | 
 |  |  |     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}--> | 
 |  |  | <!--    WHERE ope.operate_valid = 2 AND ope.operate_type in (1,2,3) AND cardNum = #{cardNum,jdbcType=BIGINT}--> | 
 |  |  |     <where> | 
 |  |  |       AND ope.operate_valid = 2 | 
 |  |  |       AND ope.operate_type in (1,2,3) | 
 |  |  |       <if test="cardNum != null and cardNum != ''"> | 
 |  |  |         AND card.cardNum = #{cardNum} | 
 |  |  |       </if> | 
 |  |  |  | 
 |  |  |       <if test="cardAddr != null and cardAddr != ''"> | 
 |  |  |         AND card.cardAddr = #{cardAddr} | 
 |  |  |       </if> | 
 |  |  |     </where> | 
 |  |  |   </select> | 
 |  |  |  | 
 |  |  |   <!--根据水卡编号获取余额--> | 
 |  |  |   <select id="getMoneyByCardNum" resultType="java.lang.Float"> | 
 |  |  |     SELECT money | 
 |  |  |     FROM se_client_card | 
 |  |  |     WHERE cardNum = #{cardNum,jdbcType=BIGINT} | 
 |  |  | <!--    WHERE cardNum = #{cardNum,jdbcType=BIGINT}--> | 
 |  |  |     <where> | 
 |  |  |       <if test="cardNum != null and cardNum != ''"> | 
 |  |  |         AND cardNum = #{cardNum} | 
 |  |  |       </if> | 
 |  |  |  | 
 |  |  |       <if test="cardAddr != null and cardAddr != ''"> | 
 |  |  |         AND cardAddr = #{cardAddr} | 
 |  |  |       </if> | 
 |  |  |     </where> | 
 |  |  |   </select> | 
 |  |  |  | 
 |  |  |   <!--根据水卡编号获取充值总额--> | 
 |  |  | 
 |  |  |     SELECT SUM(his.amount) AS amount | 
 |  |  |     FROM se_recharge_history his | 
 |  |  |     INNER JOIN se_client_card card ON his.cardId = card.id | 
 |  |  |     WHERE card.cardNum = #{cardNum,jdbcType=BIGINT} | 
 |  |  | <!--    WHERE card.cardNum = #{cardNum,jdbcType=BIGINT}--> | 
 |  |  |     <where> | 
 |  |  |       <if test="cardNum != null and cardNum != ''"> | 
 |  |  |         AND card.cardNum = #{cardNum} | 
 |  |  |       </if> | 
 |  |  |  | 
 |  |  |       <if test="cardAddr != null and cardAddr != ''"> | 
 |  |  |         AND card.cardAddr = #{cardAddr} | 
 |  |  |       </if> | 
 |  |  |     </where> | 
 |  |  |   </select> | 
 |  |  |  | 
 |  |  |   <!--根据水卡编号获取卡片状态:1-开卡,2-补卡,3-充值,4-挂失,5-注销,6-解锁,7-冲正,8-消费--> | 
 |  |  | 
 |  |  |     FROM se_client_card card | 
 |  |  |         INNER JOIN se_client cli ON cli.id = card.clientId | 
 |  |  |     WHERE card.cardAddr = #{cardAddr} AND card.state != 4 | 
 |  |  |     ORDER BY card.createDt DESC | 
 |  |  |     LIMIT 1 | 
 |  |  |   </select> | 
 |  |  |  | 
 |  |  |   <!--获取已挂失水卡列表记录数量--> | 
 |  |  |   <select id="getLostCardsCount" parameterType="java.util.Map" resultType="java.lang.Long"> | 
 |  |  |     SELECT COUNT(*) AS recordCount | 
 |  |  |     FROM se_client_card card | 
 |  |  |     LEFT JOIN se_client cli ON card.clientId = cli.id | 
 |  |  |     WHERE card.state = 3 | 
 |  |  |   </select> | 
 |  |  |  | 
 |  |  |   <!--获取已挂失水卡列表--> | 
 |  |  |   <select id="getLostCards" resultType="com.dy.pipIrrGlobal.voSe.VoCards"> | 
 |  |  |     SELECT cli.clientNum, | 
 |  |  |     cli.name AS clientName, | 
 |  |  |     card.cardNum, | 
 |  |  |     cli.phone, | 
 |  |  |     cli.idCard, | 
 |  |  |     card.state AS cardState, | 
 |  |  |     '已挂失' AS stateName, | 
 |  |  |     '农户卡' AS cardType, | 
 |  |  |     FORMAT(card.money, 2) AS money | 
 |  |  |     FROM se_client_card card | 
 |  |  |     LEFT JOIN se_client cli ON card.clientId = cli.id | 
 |  |  |     WHERE card.state = 3 | 
 |  |  |     ORDER BY card.lossDtDt DESC | 
 |  |  |     <trim prefix="limit "> | 
 |  |  |       <if test="start != null and count != null"> | 
 |  |  |         #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER} | 
 |  |  |       </if> | 
 |  |  |     </trim> | 
 |  |  |   </select> | 
 |  |  |  | 
 |  |  |   <!--根据水卡编号获取卡信息--> | 
 |  |  |   <select id="getCardByCardNum" resultType="com.dy.pipIrrGlobal.voSe.VoCardByClientNum"> | 
 |  |  |     SELECT  | 
 |  |  |         card.cardNum, | 
 |  |  |         card.state AS cardState, | 
 |  |  |         '农户卡' AS cardType, | 
 |  |  |         cli.name AS clientName, | 
 |  |  |         cli.clientNum, | 
 |  |  |         cli.idCard, | 
 |  |  |         FORMAT(card.money, 1) AS money, | 
 |  |  |         cli.phone, | 
 |  |  |         (CASE | 
 |  |  |             WHEN card.state = 1 THEN '正常' | 
 |  |  |             WHEN card.state = 2 THEN '已注销' | 
 |  |  |             WHEN card.state = 3 THEN '已挂失' | 
 |  |  |             WHEN card.state = 4 THEN '无效' | 
 |  |  |             ELSE '未知' | 
 |  |  |         END) AS stateName | 
 |  |  |     FROM se_client_card card | 
 |  |  |     INNER JOIN se_client cli ON card.clientId = cli.id | 
 |  |  |     WHERE card.cardNum = #{cardNum}  | 
 |  |  |       AND card.state != 4 | 
 |  |  |     ORDER BY card.createDt DESC | 
 |  |  |     LIMIT 1 | 
 |  |  |   </select> | 
 |  |  |  | 
 |  |  |   <!--检查卡地址是否已存在(管理卡表 + 农户水卡表)--> | 
 |  |  |   <select id="checkCardAddrExists" resultType="java.lang.Long"> | 
 |  |  |     SELECT COUNT(*) AS totalCount FROM ( | 
 |  |  |       -- 检查管理卡表中正常(1)和挂失(3)状态的记录,排除已注销(2)和未写卡(4) | 
 |  |  |       SELECT card_addr FROM se_management_card  | 
 |  |  |       WHERE card_addr = #{cardAddr} | 
 |  |  |         AND state IN (1, 3) | 
 |  |  |        | 
 |  |  |       UNION ALL | 
 |  |  |        | 
 |  |  |       -- 检查农户水卡表中正常(1)和挂失(3)状态的记录 | 
 |  |  |       SELECT cardAddr FROM se_client_card  | 
 |  |  |       WHERE cardAddr = #{cardAddr}  | 
 |  |  |         AND state IN (1, 3) | 
 |  |  |     ) AS combined_result | 
 |  |  |   </select> | 
 |  |  | </mapper> |