wuzeyu
2024-08-28 d65cc4cd967d9c8cbdc8a4dd7c803e952f01098f
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCardOperateMapper.xml
@@ -235,12 +235,12 @@
    select
        COUNT(*) AS recordCount
    FROM se_card_operate ope
        INNER JOIN se_client_card card ON ope.card_id = card.id
        INNER JOIN se_client cli ON ope.client_id = cli.id
        INNER JOIN ba_user us ON ope.operator = us.id
        Left JOIN se_payment_method pay ON ope.payment_id = pay.id
    INNER JOIN se_client_card card ON ope.card_id = card.id
    INNER JOIN se_client cli ON ope.client_id = cli.id
    INNER JOIN ba_user us ON ope.operator = us.id
    Left JOIN se_payment_method pay ON ope.payment_id = pay.id
    <where>
      AND ope.operate_type in(2, 5)
      AND ope.operate_type in(1, 2, 5)
      <if test = "clientName != null and clientName !=''">
        AND cli.name like CONCAT('%',#{clientName},'%')
      </if>
@@ -253,38 +253,52 @@
        AND card.cardNum like CONCAT('%',#{cardNum},'%')
      </if>
<!--      <if test = "paymentId != null and paymentId > 0">-->
<!--        AND ope.payment_id = ${paymentId}-->
<!--      </if>-->
      <!--      <if test = "paymentId != null and paymentId > 0">-->
      <!--        AND ope.payment_id = ${paymentId}-->
      <!--      </if>-->
<!--      <if test = "rechargeTimeStart != null and rechargeTimeStop != null">-->
<!--        AND ope.operate_dt BETWEEN #{rechargeTimeStart} AND #{rechargeTimeStop}-->
<!--      </if>-->
      <!--      <if test = "rechargeTimeStart != null and rechargeTimeStop != null">-->
      <!--        AND ope.operate_dt BETWEEN #{rechargeTimeStart} AND #{rechargeTimeStop}-->
      <!--      </if>-->
    </where>
  </select>
  <!--根据指定条件获取充值记录-->
  <select id="getRecharges" resultType="com.dy.pipIrrGlobal.voSe.VoRecharge">
    SELECT
        CAST(ope.id AS char) AS id,
        cli.name AS clientName,
        cli.clientNum,
        CAST(card.cardNum AS char) AS cardNum,
        IFNULL(ope.trade_amount, 0) AS amount,
        IFNULL(ope.refund_amount, 0) AS refundAmount,
        (IFNULL(ope.money, 0) + IFNULL(ope.trade_amount, 0)) AS afterRecharge,
        --    ope.payment_id AS paymentId,
        pay.name AS paymentName,
        ope.price,
        us.name AS operator,
        ope.operate_dt
      ope.id AS opeId,
      card.id AS cardId,
      cli.name AS clientName,
      cli.phone,
      cli.idCard,
      cli.clientNum,
      cli.address,
      card.money,
      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,-->
      IFNULL(ope.card_cost,0) AS cardCost,
      IFNULL(ope.trade_amount, 0) AS amount,
      IFNULL(ope.refund_amount, 0) AS refundAmount,
      (IFNULL(ope.money, 0) + IFNULL(ope.trade_amount, 0)) AS afterRecharge,
      pay.name AS paymentName,
      ope.price,
      us.name AS opr,
      (CASE
        WHEN ope.operate_type = 1 THEN '开卡'
        WHEN ope.operate_type = 2 THEN '充值'
        WHEN ope.operate_type = 5 THEN '返还'
      END) AS operateType,
      ope.operate_dt
    FROM se_card_operate ope
    INNER JOIN se_client_card card ON ope.card_id = card.id
        INNER JOIN se_client cli ON ope.client_id = cli.id
        INNER JOIN ba_user us ON ope.operator = us.id
        Left JOIN se_payment_method pay ON ope.payment_id = pay.id
    INNER JOIN se_client cli ON ope.client_id = cli.id
    INNER JOIN ba_user us ON ope.operator = us.id
    Left JOIN se_payment_method pay ON ope.payment_id = pay.id
    <where>
      AND ope.operate_type in(2, 5)
      AND ope.operate_type in(1, 2, 5)
      <if test = "clientName != null and clientName !=''">
        AND cli.name like CONCAT('%',#{clientName},'%')
      </if>
@@ -320,7 +334,7 @@
    FROM v_trade_details
    <where>
      <if test = "villageId != null and villageId > 0">
        AND villageId = ${villageId}
        AND villageId = #{villageId}
      </if>
      <if test = "operateTimeStart != null and operateTimeStop != null">
@@ -328,7 +342,7 @@
      </if>
      <if test = "cashierId != null and cashierId > 0">
        AND cashierId = ${cashierId}
        AND cashierId = #{cashierId}
      </if>
      <if test = "tradeTime != null">
@@ -342,7 +356,7 @@
    SELECT * FROM v_trade_details
    <where>
      <if test = "villageId != null and villageId > 0">
        AND villageId = ${villageId}
        AND villageId = #{villageId}
      </if>
      <if test = "operateTimeStart != null and operateTimeStop != null">
@@ -350,12 +364,12 @@
      </if>
      <if test = "cashierId != null and cashierId > 0">
        AND cashierId = ${cashierId}
        AND cashierId = #{cashierId}
      </if>
    </where>
    ORDER BY tradeTime
    <if test="pageCurr != null and pageSize != null">
      LIMIT ${pageCurr}, ${pageSize}
      LIMIT #{pageCurr}, #{pageSize}
    </if>
  </select>
@@ -377,7 +391,7 @@
      </if>
      <if test = "state != null and state > 0">
        AND card.state = ${state}
        AND card.state = #{state}
      </if>
      <if test = "activeTimeStart != null and activeTimeStop != null">
@@ -395,9 +409,9 @@
    card.cardNum AS cardNum,
    card.state AS state,
    (CASE
    WHEN card.state = 1 THEN "正常"
    WHEN card.state = 2 THEN "已注销"
    WHEN card.state = 3 THEN "已挂失"
    WHEN card.state = 1 THEN '正常'
    WHEN card.state = 2 THEN '已注销'
    WHEN card.state = 3 THEN '已挂失'
    END) AS stateName,
    ope.card_cost AS cardCost,
    ope.payment_id AS paymentId,
@@ -417,7 +431,7 @@
      </if>
      <if test = "state != null and state > 0">
        AND card.state = ${state}
        AND card.state = #{state}
      </if>
      <if test = "activeTimeStart != null and activeTimeStop != null">
@@ -501,7 +515,7 @@
        INNER JOIN ba_user us ON ope.operator = us.id
    <where>
      <if test = "operateType != null and operateType > 0">
        AND ope.operate_type = ${operateType}
        AND ope.operate_type = #{operateType}
      </if>
      <if test = "clientName != null and clientName !=''">
@@ -528,7 +542,7 @@
        ope.operate_dt AS operateDt,
        IFNULL(ope.trade_amount,0) AS refund,
        (CASE
            WHEN ope.payment_id = 1 THEN "现金"
            WHEN ope.payment_id = 1 THEN '现金'
        END) AS refundTypeName,
        card.money,
        IFNULL(ope.system_balance,0) AS systemBalance
@@ -538,7 +552,7 @@
        INNER JOIN ba_user us ON ope.operator = us.id
    <where>
      <if test = "operateType != null and operateType > 0">
        AND ope.operate_type = ${operateType}
        AND ope.operate_type = #{operateType}
      </if>
      <if test = "clientName != null and clientName !=''">
@@ -575,7 +589,7 @@
    <where>
      AND ope.operate_type IN(1,2)
      <if test = "operateId != null and operateId > 0">
        AND ope.id = ${operateId}
        AND ope.id = #{operateId}
      </if>
      <if test = "clientName != null and clientName !=''">
@@ -620,7 +634,7 @@
    <where>
      AND ope.operate_type IN(1,2)
      <if test = "operateId != null and operateId > 0">
        AND ope.id = ${operateId}
        AND ope.id = #{operateId}
      </if>
      <if test = "clientName != null and clientName !=''">
@@ -653,7 +667,7 @@
    <where>
      AND ope.operate_type IN(1,2)
      <if test = "operateId != null and operateId > 0">
        AND ope.id = ${operateId}
        AND ope.id = #{operateId}
      </if>
      <if test = "clientName != null and clientName !=''">
@@ -676,5 +690,168 @@
      AND ope.operate_type = 6
      AND card.cardNum = #{cardNum}
    </where>
    ORDER BY ope.operate_dt DESC
    LIMIT 0,1
  </select>
  <!--指定时间段内开卡总数量(物理卡)-->
  <select id="getOpenCountIcCardsCount" resultType="java.lang.Long">
    SELECT
    count(*)
    FROM
    `se_card_operate`
    WHERE
    operate_dt BETWEEN #{timeStart} AND #{timeStop} AND operate_type = 1
  </select>
  <!--指定时间段内挂失总数量(物理卡)-->
  <select id="getLossCountIcCardsCount" resultType="java.lang.Long">
    SELECT
    count(*)
    FROM
    `se_card_operate`
    WHERE
    operate_dt BETWEEN #{timeStart} AND #{timeStop} AND operate_type = 6
  </select>
  <!--指定时间段内充值总数量(物理卡)-->
  <select id="getRechargeCountIcCardsCount" resultType="java.lang.Long">
    SELECT
    count(*)
    FROM
    `se_card_operate`
    WHERE
    operate_dt BETWEEN #{timeStart} AND #{timeStop} AND operate_type = 2
  </select>
  <!--指定时间段内开物理卡农户数量-->
  <select id="getOpenIcCardClientsCount" resultType="java.lang.Long">
    select
    count(*)
    from
      (
    SELECT
    sco.client_id AS clientId,
    sc.`name` AS clientName,
    sc.clientNum AS clientNum,
    sc.address AS address,
    sc.phone AS phone,
    sc.idCard AS idCard,
    COUNT(sc.id) AS openCardCount
    FROM
    `se_card_operate` sco
    INNER JOIN se_client sc ON sc.id = sco.client_id
    WHERE
    sco.operate_dt BETWEEN #{timeStart} AND #{timeStop} AND sco.operate_type = 1 AND sc.deleted = 0 AND sc.disabled = 0
    GROUP BY sc.id) c
    </select>
  <!--指定时间段内开物理卡农户-->
  <select id="getOpenIcCardClients" resultType="com.dy.pipIrrGlobal.voSt.VoClientOpenCardCount">
    SELECT
      sco.client_id AS clientId,
      sc.`name` AS clientName,
      sc.clientNum AS clientNum,
      sc.address AS address,
      sc.phone AS phone,
      sc.idCard AS idCard,
      COUNT(sc.id) AS openCardCount
    FROM
      `se_card_operate` sco
        INNER JOIN se_client sc ON sc.id = sco.client_id
    WHERE
      sco.operate_dt BETWEEN #{timeStart} AND #{timeStop} AND sco.operate_type = 1 AND sc.deleted = 0 AND sc.disabled = 0
    GROUP BY sc.id
    ORDER BY sc.id 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="getRechargeTotalClientsCount" resultType="java.lang.Long">
    select
    count(*)
    from
    (
    SELECT
    sco.client_id AS clientId,
    sc.`name` AS clientName,
    sc.clientNum AS clientNum,
    sc.address AS address,
    sc.phone AS phone,
    sc.idCard AS idCard,
    IFNULL(SUM(sco.trade_amount),0) AS rechargeTotal
    FROM
    `se_card_operate` sco
    INNER JOIN se_client sc ON sc.id = sco.client_id
    WHERE
    sco.operate_dt BETWEEN #{timeStart} AND #{timeStop} AND sco.operate_type = 2 AND sc.deleted = 0 AND sc.disabled = 0
    GROUP BY sc.id) c
  </select>
  <!--指定时间段内每个农户充值合计-->
  <select id="getRechargeTotalClients" resultType="com.dy.pipIrrGlobal.voSt.VoClientRechargeTotal">
    SELECT
      sco.client_id AS clientId,
      sc.`name` AS clientName,
      sc.clientNum AS clientNum,
      sc.address AS address,
      sc.phone AS phone,
      sc.idCard AS idCard,
      IFNULL(SUM(sco.trade_amount),0) AS rechargeTotal
    FROM
      `se_card_operate` sco
        INNER JOIN se_client sc ON sc.id = sco.client_id
    WHERE
      sco.operate_dt BETWEEN #{timeStart} AND #{timeStop} AND sco.operate_type = 2 AND sc.deleted = 0 AND sc.disabled = 0
    GROUP BY sc.id
    ORDER BY sc.id 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="getRechargeTotalGtValueClientsCount" resultType="java.lang.Long">
    select
    count(*)
    from
    (
    SELECT
    sco.client_id AS clientId,
    sc.`name` AS clientName,
    sc.clientNum AS clientNum,
    sc.address AS address,
    sc.phone AS phone,
    sc.idCard AS idCard,
    IFNULL(SUM(sco.trade_amount),0) AS rechargeTotal
    FROM
    `se_card_operate` sco
    INNER JOIN se_client sc ON sc.id = sco.client_id
    WHERE
    sco.operate_dt BETWEEN #{timeStart} AND #{timeStop} AND sco.operate_type = 2 AND sc.deleted = 0 AND sc.disabled = 0
    GROUP BY sc.id
    HAVING IFNULL(SUM(sco.trade_amount),0) > #{value}) c
  </select>
  <!--指定时间段内物理卡充值金额超过指定值的农户-->
  <select id="getRechargeTotalGtValueClients" resultType="com.dy.pipIrrGlobal.voSt.VoClientRechargeTotal">
    SELECT
      sco.client_id AS clientId,
      sc.`name` AS clientName,
      sc.clientNum AS clientNum,
      sc.address AS address,
      sc.phone AS phone,
      sc.idCard AS idCard,
      IFNULL(SUM(sco.trade_amount),0) AS rechargeTotal
    FROM
      `se_card_operate` sco
        INNER JOIN se_client sc ON sc.id = sco.client_id
    WHERE
      sco.operate_dt BETWEEN #{timeStart} AND #{timeStop} AND sco.operate_type = 2 AND sc.deleted = 0 AND sc.disabled = 0
    GROUP BY sc.id
    HAVING IFNULL(SUM(sco.trade_amount),0) &gt; #{value}
    ORDER BY sc.id DESC
    <trim prefix="limit " >
      <if test="start != null and count != null">
        #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER}
      </if>
    </trim>
  </select>
</mapper>