liurunyu
2024-10-12 708dce320caedf9973ff0282098fb70dafd6702e
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日添加后废弃)-->
@@ -356,7 +359,7 @@
                         END)     AS state
              FROM se_client_card card
                       INNER JOIN se_client cli ON cli.id = card.clientId
              WHERE card.clientId = #{clientId,jdbcType=BIGINT}
              WHERE state != 4 AND card.clientId = #{clientId,jdbcType=BIGINT}
              UNION ALL
              SELECT '虚拟卡'     AS cardType,
                     vc.vc_num AS cardNum,
@@ -368,25 +371,43 @@
              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}-->
        ) 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 +444,7 @@
                    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}
@@ -454,18 +476,9 @@
        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
@@ -504,13 +517,10 @@
    <!--获取已挂失未补卡的记录-->
    <select id="getUnreplaced" resultType="com.dy.pipIrrGlobal.voSe.VoCards">
        SELECT cli.clientNum,
        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,
@@ -529,7 +539,7 @@
        </trim>
    </select>
    <!--根据指定水卡编号获取挂失事记录数量(补卡、解锁使用)-->
    <!--根据指定水卡编号获取挂失记录数量(补卡、解锁使用)-->
    <select id="getLostCount" resultType="java.lang.Integer">
        SELECT COUNT(*) AS recordCount
        FROM se_client_card card
@@ -586,7 +596,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 +646,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>
    <!--根据水卡地址获取指定状态的水卡数量-->
@@ -722,4 +732,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获取原水卡ID,补卡通知中使用-->
    <select id="getOriginalCardIdByCardId" resultType="java.lang.Long">
        SELECT original_card_id AS originalCardId FROM se_client_card WHERE id = #{cardId};
    </select>
</mapper>