zhubaomin
2024-08-30 bc8ab2ccb801ece9f2638098e8acd07f3ef1978d
2024-08-30 朱宝民 解决获取水卡列表接口错误,无虚拟卡时不显示空对象
2个文件已修改
172 ■■■■■ 已修改文件
pipIrr-platform/pipIrr-global/src/main/resources/application-database-ym.yml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml 171 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/application-database-ym.yml
@@ -7,7 +7,6 @@
            driverClassName: com.mysql.cj.jdbc.Driver
#            url: jdbc:mysql://192.168.40.166:3306/pipIrr_ym?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
#            url: jdbc:mysql://8.130.130.233:3306/pipIrr_ym?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
            #url: jdbc:mysql://8.140.179.55:3306/pipIrr_ym?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
            url: jdbc:mysql://127.0.0.1:3306/pipIrr_ym?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
            username: root
            password: dysql,;.abc!@#
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml
@@ -26,8 +26,25 @@
  </resultMap>
  <sql id="Base_Column_List">
    <!--@mbg.generated-->
    id, protocol, cardAddr, cardNum, clientId, money, `state`, original_card_id, createDt, replaceDt, rechargeDt,
    lossDtDt, cancelDt, unlockDt, reversalDt, refundDt, consumeDt, lastOper, remarks
        id,
        protocol,
        cardAddr,
        cardNum,
        clientId,
        money,
        `state`,
        original_card_id,
        createDt,
        replaceDt,
        rechargeDt,
        lossDtDt,
        cancelDt,
        unlockDt,
        reversalDt,
        refundDt,
        consumeDt,
        lastOper,
        remarks
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
    <!--@mbg.generated-->
@@ -38,25 +55,29 @@
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
    <!--@mbg.generated-->
    delete from se_client_card
        delete
        from se_client_card
    where id = #{id,jdbcType=BIGINT}
  </delete>
  <!--依据水卡地址获取水卡编号(12月19日废弃)-->
  <select id="getCardIdByAddr" resultType="java.lang.Long">
    SELECT id AS cardId FROM se_client_card WHERE cardAddr = #{cardAddr}
        SELECT id AS cardId
        FROM se_client_card
        WHERE cardAddr = #{cardAddr}
  </select>
  <!--根据水卡编号获取水卡表主键(12月19日添加后废弃)-->
  <select id="getCardIdByNum" resultType="java.lang.Long">
    SELECT id AS cardId FROM se_client_card WHERE cardNum = #{cardNum}
        SELECT id AS cardId
        FROM se_client_card
        WHERE cardNum = #{cardNum}
  </select>
  <!--根据水卡编号获取水卡表主键及农户编号-->
  <select id="getCardIdAndClientNum" resultType="java.util.Map">
    <!--    SELECT id AS cardId, clientNum FROM se_client_card WHERE cardNum = #{cardNum}-->
    SELECT
      card.id AS cardId,
        SELECT card.id AS cardId,
      cli.clientNum,
      cli.id AS clientId,
      protocol
@@ -67,22 +88,22 @@
  <!-- 根据水卡编号获取水卡对应的农户id和姓名 -->
  <select id="getClientIdAndNameByCardAddrAndCardNo" resultType="java.util.Map">
    SELECT
    cli.id AS clientId,
        SELECT cli.id   AS clientId,
    cli.name AS clientName
    FROM se_client_card card
    INNER JOIN se_client cli ON card.clientId = cli.id
    WHERE card.cardAddr = #{cardAddr} and  card.cardNum = #{cardNum}
        WHERE card.cardAddr = #{cardAddr}
          and card.cardNum = #{cardNum}
  </select>
  <!-- 根据水卡编号获取水卡 -->
  <select id="getCardsByAddrAndNum"  resultType="com.dy.pipIrrGlobal.voSe.VoCardInfo1">
    SELECT
    id,
        SELECT id,
    money
    FROM se_client_card
    WHERE cardAddr = #{cardAddr} and  cardNum = #{cardNum}
        WHERE cardAddr = #{cardAddr}
          and cardNum = #{cardNum}
  </select>
  <!--根据行政区划串模糊查询水卡编号-->
@@ -100,17 +121,18 @@
      money, `state`, original_card_id, createDt,
      replaceDt, rechargeDt, lossDtDt, 
      cancelDt, unlockDt, reversalDt, refundDt,
      consumeDt, lastOper, remarks
      )
    values (#{id,jdbcType=BIGINT}, #{protocol,jdbcType=VARCHAR}, #{cardaddr,jdbcType=VARCHAR}, #{cardnum,jdbcType=BIGINT}, #{clientid,jdbcType=BIGINT},
      #{money,jdbcType=FLOAT}, #{state,jdbcType=TINYINT}, #{originalCardId,jdbcType=BIGINT}, #{createdt,jdbcType=TIMESTAMP},
                                    consumeDt, lastOper, remarks)
        values (#{id,jdbcType=BIGINT}, #{protocol,jdbcType=VARCHAR}, #{cardaddr,jdbcType=VARCHAR},
                #{cardnum,jdbcType=BIGINT}, #{clientid,jdbcType=BIGINT},
                #{money,jdbcType=FLOAT}, #{state,jdbcType=TINYINT}, #{originalCardId,jdbcType=BIGINT},
                #{createdt,jdbcType=TIMESTAMP},
      #{replacedt,jdbcType=TIMESTAMP}, #{rechargedt,jdbcType=TIMESTAMP}, #{lossdtdt,jdbcType=TIMESTAMP}, 
      #{canceldt,jdbcType=TIMESTAMP}, #{unlockdt,jdbcType=TIMESTAMP}, #{reversaldt,jdbcType=TIMESTAMP},
      #{refunddt,jdbcType=TIMESTAMP}, #{consumedt,jdbcType=TIMESTAMP}, #{lastoper,jdbcType=TINYINT}, #{remarks,jdbcType=VARCHAR}
      )
                #{refunddt,jdbcType=TIMESTAMP}, #{consumedt,jdbcType=TIMESTAMP}, #{lastoper,jdbcType=TINYINT},
                #{remarks,jdbcType=VARCHAR})
  </insert>
  <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeClientCard" useGeneratedKeys="true">
    <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeClientCard"
            useGeneratedKeys="true">
    <!--@mbg.generated-->
    insert into se_client_card
    <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -323,51 +345,60 @@
  </update>
  <!--根据农户主键获取水卡列表(物理卡+虚拟卡)-->
  <select id="getCardInfoByClientId" resultType="com.dy.pipIrrGlobal.voSe.VoCardInfo">
    SELECT
    *
    FROM
    (SELECT
    '物理卡' AS cardType,
    clientCard.cardNum   AS CardNum,
    clientCard.money   AS Money,
        SELECT *
        FROM (SELECT '物理卡'              AS cardType,
                     clientCard.cardNum AS cardNum,
                     clientCard.money   AS money,
    (CASE
    WHEN clientCard.state = 1 THEN '正常'
    WHEN clientCard.state = 2 THEN '已注销'
    ELSE '已挂失'
    END) AS State
                         END)           AS state
    FROM se_client client
    LEFT JOIN se_client_card clientCard ON clientCard.clientId = client.id
    WHERE client.id = #{clientId,jdbcType=BIGINT}
    UNION ALL
    SELECT
    '虚拟卡' AS cardType,
    virtualCard.vc_num   AS CardNum,
    virtualCard.money   AS vcMoney,
              SELECT '虚拟卡'     AS cardType,
                     vc.vc_num AS cardNum,
                     vc.money  AS money,
    (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}
                          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}-->
    ) 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 *
        FROM v_operate
        WHERE cardNum = #{cardNum,jdbcType=BIGINT}
  </select>
  <!--根据水卡编号获取余额-->
  <select id="getMoneyByCardNum" resultType="java.lang.Float">
    SELECT money FROM se_client_card WHERE cardNum = #{cardNum,jdbcType=BIGINT}
        SELECT money
        FROM se_client_card
        WHERE cardNum = #{cardNum,jdbcType=BIGINT}
  </select>
  <!--根据水卡编号获取充值总额-->
  <select id="sumRechargeByCardNum" resultType="java.lang.Float">
    SELECT
      SUM(his.amount) AS amount
        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}
@@ -388,8 +419,7 @@
<!--        END) AS stateName-->
<!--    FROM se_client_card-->
<!--    WHERE cardNum = ${cardNum}-->
    SELECT
        (CASE
        SELECT (CASE
            WHEN state = 1 THEN '正常'
            WHEN state = 2 THEN '已注销'
            WHEN state = 3 THEN '已挂失'
@@ -400,8 +430,7 @@
  <!--根据指定条件获取水卡列表记录数,应用程序使用-->
  <select id="getCardsCount" parameterType="java.util.Map" resultType="java.lang.Long">
    SELECT
        COUNT(*) AS recordCount
        SELECT COUNT(*) AS recordCount
    FROM se_client_card card
      INNER JOIN se_client cli ON card.clientId = cli.id
    <where>
@@ -422,8 +451,7 @@
  <!--根据指定条件获取水卡列表,应用程序使用-->
  <select id="getCards" resultType="com.dy.pipIrrGlobal.voSe.VoCards">
    SELECT
        cli.clientNum,
        SELECT cli.clientNum,
        cli.name AS clientName,
        cardNum,
<!--        CASE-->
@@ -467,17 +495,16 @@
  <!--获取已挂失未补卡的记录数量-->
  <select id="getUnreplacedRecordCount" resultType="java.lang.Long">
    SELECT
        COUNT(*) AS recordCount
        SELECT COUNT(*) AS recordCount
    FROM se_client_card card
           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.cardNum)
        WHERE card.state = 3
          AND NOT EXISTS(SELECT * FROM se_client_card card2 WHERE card2.original_card_id = card.cardNum)
  </select>
  <!--获取已挂失未补卡的记录-->
  <select id="getUnreplaced" resultType="com.dy.pipIrrGlobal.voSe.VoCards">
    SELECT
        cli.clientNum,
        SELECT cli.clientNum,
        cli.name AS clientName,
        cardNum,
<!--        CASE-->
@@ -492,7 +519,8 @@
        FORMAT(card.money,2) AS money
    FROM se_client_card card
        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)
        WHERE card.state = 3
          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">
@@ -503,8 +531,7 @@
  <!--根据指定水卡编号获取挂失事记录数量(补卡、解锁使用)-->
  <select id="getLostCount" resultType="java.lang.Integer">
    SELECT
        COUNT(*) AS recordCount
        SELECT COUNT(*) AS recordCount
    FROM se_client_card card
    <where>
      AND card.state = 3
@@ -516,8 +543,7 @@
  <!--根据指定水卡编号获取已补卡数量(补卡、解锁使用)-->
  <select id="getReplacedCount" resultType="java.lang.Integer">
    SELECT
        COUNT(*) AS recordCount
        SELECT COUNT(*) AS recordCount
    FROM se_client_card card
        INNER JOIN se_client_card card2 ON card2.original_card_id = card.id
    <where>
@@ -528,8 +554,7 @@
  </select>
  <!--根据农户姓名和手机号获取水卡列表记录数,应用程序使用-->
  <select id="getCardsByClientNameAndPhoneCount" resultType="java.lang.Long">
    SELECT
      COUNT(*) AS recordCount
        SELECT COUNT(*) AS recordCount
    FROM se_client_card card
    INNER JOIN se_client cli ON card.clientId = cli.id
    <where>
@@ -545,8 +570,7 @@
    </select>
  <!--根据农户姓名和手机号获取水卡列表,应用程序使用-->
  <select id="getCardsByClientNameAndPhone" resultType="com.dy.pipIrrGlobal.voSe.VoCards2">
    SELECT
    card.id AS clientCardId,
        SELECT card.id               AS clientCardId,
    cli.id AS clientId,
    cli.clientNum,
    cli.name AS clientName,
@@ -582,8 +606,7 @@
  </select>
  <!--根据农户ID查询正常状态的水卡列表,小程序使用-->
  <select id="getCardsByClientID" resultType="com.dy.pipIrrGlobal.voWe.VoCards3">
    SELECT
    card.id AS clientCardId,
        SELECT card.id               AS clientCardId,
    cli.id AS clientId,
    cli.clientNum,
    cli.name AS clientName,
@@ -600,8 +623,7 @@
    FORMAT(card.money, 2) AS money
    FROM se_client_card card
    INNER JOIN se_client cli ON card.clientId = cli.id
    where
      card.state = 1
        where card.state = 1
      AND cli.id like CONCAT('%',#{clientId},'%')
@@ -609,20 +631,23 @@
  </select>
  <!--当前余额总量(物理卡)-->
  <select id="getTotalMoneyIcCards" resultType="java.lang.Double">
    SELECT
      IFNULL(SUM(money),0) AS totalMoney
    FROM
      `se_client_card`
        SELECT IFNULL(SUM(money), 0) AS totalMoney
        FROM `se_client_card`
    WHERE state = 1
  </select>
  <!--根据水卡地址获取水卡数量-->
  <select id="getCountByCardAddr" resultType="java.lang.Long">
    SELECT COUNT(*) AS recordCount FROM se_client_card WHERE cardAddr = #{cardAddr}
        SELECT COUNT(*) AS recordCount
        FROM se_client_card
        WHERE cardAddr = #{cardAddr}
  </select>
  <!--根据水卡地址获取指定状态的水卡数量-->
  <select id="getCountByCardAddrAndState" resultType="java.lang.Long">
    SELECT COUNT(*) AS recordCount FROM se_client_card WHERE cardAddr = #{cardAddr} AND state IN(1,3)
        SELECT COUNT(*) AS recordCount
        FROM se_client_card
        WHERE cardAddr = #{cardAddr}
          AND state IN (1, 3)
  </select>
</mapper>