pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml
@@ -401,17 +401,34 @@
    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>
  <!--根据水卡编号获取充值总额-->
@@ -419,7 +436,16 @@
    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-消费-->
@@ -804,7 +830,81 @@
        card.protocol AS cardAgreement
    FROM se_client_card card
        INNER JOIN se_client cli ON cli.id = card.clientId
    WHERE card.cardAddr = #{cardAddr}
    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>