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,13 +253,13 @@
        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>
@@ -274,11 +274,12 @@
      cli.clientNum,
      cli.address,
      card.money,
      CASE
        WHEN card.cardNum LIKE '10%' THEN CONCAT(SUBSTRING(card.cardNum, 7, 6),SUBSTRING(card.cardNum, 14, 4))
        ELSE card.cardNum
      END AS cardNum,
      ope2.card_cost AS cardCost,
      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,
@@ -286,19 +287,18 @@
      ope.price,
      us.name AS opr,
      (CASE
      WHEN ope.operate_type = 2 THEN "充值"
      WHEN ope.operate_type = 5 THEN "返还"
        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
      INNER JOIN se_card_operate ope2 ON ope2.card_id = ope.card_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 ope2.operate_type = 1
      AND ope.operate_type in(1, 2, 5)
      <if test = "clientName != null and clientName !=''">
        AND cli.name like CONCAT('%',#{clientName},'%')
      </if>
@@ -334,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">
@@ -342,7 +342,7 @@
      </if>
      <if test = "cashierId != null and cashierId > 0">
        AND cashierId = ${cashierId}
        AND cashierId = #{cashierId}
      </if>
      <if test = "tradeTime != null">
@@ -356,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">
@@ -364,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>
@@ -391,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">
@@ -409,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,
@@ -431,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">
@@ -515,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 !=''">
@@ -542,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
@@ -552,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 !=''">
@@ -589,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 !=''">
@@ -634,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 !=''">
@@ -667,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 !=''">
@@ -690,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>