pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCardOperateMapper.xml
@@ -20,11 +20,14 @@
    <result column="remarks" jdbcType="VARCHAR" property="remarks" />
    <result column="operator" jdbcType="BIGINT" property="operator" />
    <result column="operate_dt" jdbcType="TIMESTAMP" property="operateDt" />
    <result column="order_no" jdbcType="VARCHAR" property="orderNo" />
    <result column="operate_valid" jdbcType="TINYINT" property="operateValid" />
  </resultMap>
  <sql id="Base_Column_List">
    <!--@mbg.generated-->
    id, card_id, client_id, money, system_balance, trade_amount, price, card_cost, gift, 
    refund_amount, no_trade_amount, operate_type, payment_id, remarks, `operator`, operate_dt
    refund_amount, no_trade_amount, operate_type, payment_id, remarks, `operator`, operate_dt,
    order_no, operate_valid
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
    <!--@mbg.generated-->
@@ -45,13 +48,15 @@
      price, card_cost, gift, 
      refund_amount, no_trade_amount, operate_type, 
      payment_id, remarks, `operator`, 
      operate_dt)
      operate_dt, order_no, operate_valid
      )
    values (#{id,jdbcType=BIGINT}, #{cardId,jdbcType=BIGINT}, #{clientId,jdbcType=BIGINT}, 
      #{money,jdbcType=FLOAT}, #{systemBalance,jdbcType=FLOAT}, #{tradeAmount,jdbcType=FLOAT}, 
      #{price,jdbcType=FLOAT}, #{cardCost,jdbcType=INTEGER}, #{gift,jdbcType=FLOAT}, 
      #{refundAmount,jdbcType=FLOAT}, #{noTradeAmount,jdbcType=FLOAT}, #{operateType,jdbcType=TINYINT}, 
      #{paymentId,jdbcType=BIGINT}, #{remarks,jdbcType=VARCHAR}, #{operator,jdbcType=BIGINT}, 
      #{operateDt,jdbcType=TIMESTAMP})
      #{operateDt,jdbcType=TIMESTAMP}, #{orderNo,jdbcType=VARCHAR}, #{operateValid,jdbcType=TINYINT}
      )
  </insert>
  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoSe.SeCardOperate">
    <!--@mbg.generated-->
@@ -105,6 +110,12 @@
      <if test="operateDt != null">
        operate_dt,
      </if>
      <if test="orderNo != null">
        order_no,
      </if>
      <if test="operateValid != null">
        operate_valid,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="id != null">
@@ -154,6 +165,12 @@
      </if>
      <if test="operateDt != null">
        #{operateDt,jdbcType=TIMESTAMP},
      </if>
      <if test="orderNo != null">
        #{orderNo,jdbcType=VARCHAR},
      </if>
      <if test="operateValid != null">
        #{operateValid,jdbcType=TINYINT},
      </if>
    </trim>
  </insert>
@@ -206,6 +223,12 @@
      <if test="operateDt != null">
        operate_dt = #{operateDt,jdbcType=TIMESTAMP},
      </if>
      <if test="orderNo != null">
        order_no = #{orderNo,jdbcType=VARCHAR},
      </if>
      <if test="operateValid != null">
        operate_valid = #{operateValid,jdbcType=TINYINT},
      </if>
    </set>
    where id = #{id,jdbcType=BIGINT}
  </update>
@@ -226,21 +249,24 @@
      payment_id = #{paymentId,jdbcType=BIGINT},
      remarks = #{remarks,jdbcType=VARCHAR},
      `operator` = #{operator,jdbcType=BIGINT},
      operate_dt = #{operateDt,jdbcType=TIMESTAMP}
      operate_dt = #{operateDt,jdbcType=TIMESTAMP},
      order_no = #{orderNo,jdbcType=VARCHAR},
      operate_valid = #{operateValid,jdbcType=TINYINT}
    where id = #{id,jdbcType=BIGINT}
  </update>
  <!--根据指定条件获取充值记录数量-->
  <select id="getRecordCount" parameterType="java.util.Map" resultType="java.lang.Long">
    select
        COUNT(*) AS recordCount
    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
    LEFT JOIN se_client_card card ON ope.card_id = card.id
    LEFT JOIN se_client cli ON ope.client_id = cli.id
    LEFT 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(1, 2, 5)
      AND ope.operate_type in(1, 2, 5,10)
      AND ope.operate_valid = 2
      <if test = "clientName != null and clientName !=''">
        AND cli.name like CONCAT('%',#{clientName},'%')
      </if>
@@ -266,35 +292,40 @@
  <!--根据指定条件获取充值记录-->
  <select id="getRecharges" resultType="com.dy.pipIrrGlobal.voSe.VoRecharge">
    SELECT
      ope.id AS opeId,
      card.id AS cardId,
      cli.name AS clientName,
      cli.phone,
      cli.idCard,
      cli.clientNum,
      cli.address,
      card.money,
      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
    ope.id AS opeId,
    card.id AS cardId,
    cli.name AS clientName,
    cli.phone,
    cli.idCard,
    cli.clientNum,
    dis.name AS villageName,
    cli.address,
    card.money,
    cardNum,
    IFNULL(ope.card_cost,0) AS cardCost,
    IFNULL(ope.trade_amount, 0) AS amount,
    IFNULL(ope.gift, 0) AS gift,
    IFNULL(ope.refund_amount, 0) AS refundAmount,
    (IFNULL(ope.money, 0) + IFNULL(ope.trade_amount, 0) + IFNULL(ope.gift, 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 '返还'
    WHEN ope.operate_type = 10 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_client_card card ON ope.card_id = card.id
    LEFT JOIN se_client cli ON ope.client_id = cli.id
    LEFT JOIN ba_district dis ON dis.id = cli.villageId
    LEFT 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(1, 2, 5)
      AND ope.operate_type in(1, 2, 5,10)
      AND ope.operate_valid = 2
      <if test = "clientName != null and clientName !=''">
        AND cli.name like CONCAT('%',#{clientName},'%')
      </if>
@@ -318,15 +349,15 @@
  <!--根据指定条件获取交易记录数-->
  <select id="getTransactionRecordCount" parameterType="java.util.Map" resultType="java.lang.Long">
    SELECT
        COUNT(*) AS recordCount
    COUNT(*) AS recordCount
    FROM se_card_operate ope
        INNER JOIN se_client cli ON ope.client_id = cli.id
        INNER JOIN se_client_card card ON card.id = ope.card_id
        LEFT JOIN se_payment_method pay ON ope.payment_id = pay.id
        INNER JOIN ba_user us ON ope.operator = us.id
    LEFT JOIN se_client cli ON ope.client_id = cli.id
    LEFT JOIN se_client_card card ON card.id = ope.card_id
    LEFT JOIN se_payment_method pay ON ope.payment_id = pay.id
    LEFT JOIN ba_user us ON ope.operator = us.id
    <where>
      AND ope.operate_type IN(1,2,3,5)
      AND ope.operate_type IN(1,2,3,5,10)
      AND ope.operate_valid = 2
      <if test = "villageId != null and villageId > 0">
        AND cli.villageId = #{villageId}
      </if>
@@ -344,43 +375,44 @@
  <!--根据指定条件获取交易记录-->
  <select id="getTransactions" resultType="com.dy.pipIrrGlobal.voSe.VoTradeDetails">
    SELECT
        ope.id AS orderNumber,
        cli.name AS clientName,
        card.cardNum AS cardNum,
        cli.idCard,
        cli.clientNum,
        cli.phone,
        (CASE ope.operate_type
            WHEN 1 THEN '开卡'
            WHEN 2 THEN '充值'
            WHEN 3 THEN '销卡'
            WHEN 5 THEN '补扣'
        END) AS operateType,
        (IFNULL(ope.trade_amount,0.00) + IFNULL(ope.card_cost,0.00)) AS tradeAmount,
        IFNULL(ope.trade_amount,0.00) AS waterCost,
        IFNULL(ope.card_cost,0.00) AS cardCost,
        IFNULL(ope.gift,0.00) AS gift,
        IFNULL(ope.refund_amount,0.00) AS refundAmount,
        ope.money,
        pay.name AS paymentName,
        ope.operate_dt as tradeTime,
        us.id AS cashierId,
        us.name AS cashierName,
        (CASE card.state
            WHEN 1 THEN '正常'
            WHEN 2 THEN '已注销'
            WHEN 3 THEN '已挂失'
        END) AS cardState,
        cli.districtTitle,
        cli.villageId AS villageId
    ope.id AS orderNumber,
    cli.name AS clientName,
    card.cardNum AS cardNum,
    cli.idCard,
    cli.clientNum,
    cli.phone,
    (CASE ope.operate_type
    WHEN 1 THEN '开卡'
    WHEN 2 THEN '充值'
    WHEN 3 THEN '销卡'
    WHEN 5 THEN '补扣'
    WHEN 10 THEN '反写'
    END) AS operateType,
    (IFNULL(ope.trade_amount,0.00) + IFNULL(ope.card_cost,0.00)) AS tradeAmount,
    IFNULL(ope.trade_amount,0.00) AS waterCost,
    IFNULL(ope.card_cost,0.00) AS cardCost,
    IFNULL(ope.gift,0.00) AS gift,
    IFNULL(ope.refund_amount,0.00) AS refundAmount,
    (IFNULL(ope.money, 0) + IFNULL(ope.trade_amount, 0) + IFNULL(ope.gift, 0)) AS money,
    pay.name AS paymentName,
    ope.operate_dt as tradeTime,
    us.id AS cashierId,
    us.name AS cashierName,
    (CASE card.state
    WHEN 1 THEN '正常'
    WHEN 2 THEN '已注销'
    WHEN 3 THEN '已挂失'
    END) AS cardState,
    cli.districtTitle,
    cli.villageId AS villageId
    FROM se_card_operate ope
        INNER JOIN se_client cli ON ope.client_id = cli.id
        INNER JOIN se_client_card card ON card.id = ope.card_id
        LEFT JOIN se_payment_method pay ON ope.payment_id = pay.id
        INNER JOIN ba_user us ON ope.operator = us.id
    LEFT JOIN se_client cli ON ope.client_id = cli.id
    LEFT JOIN se_client_card card ON card.id = ope.card_id
    LEFT JOIN se_payment_method pay ON ope.payment_id = pay.id
    LEFT JOIN ba_user us ON ope.operator = us.id
    <where>
      AND ope.operate_type IN(1,2,3,5)
      AND ope.operate_type IN(1,2,3,5,10)
      AND ope.operate_valid = 2
      <if test = "villageId != null and villageId > 0">
        AND cli.villageId = #{villageId}
      </if>
@@ -406,10 +438,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
    LEFT JOIN se_client_card card ON ope.card_id = card.id
    LEFT JOIN se_client cli ON ope.client_id = cli.id
    LEFT JOIN se_payment_method pay ON pay.id = ope.payment_id
    <where>
      AND ope.operate_type = 1
      AND ope.operate_valid = 2
      <if test = "clientName != null and clientName !=''">
        AND cli.name like CONCAT('%',#{clientName},'%')
      </if>
@@ -431,7 +465,7 @@
  <!--根据指定条件获取开卡记录-->
  <select id="getActiveCards" resultType="com.dy.pipIrrGlobal.voSe.VoActiveCard">
    SELECT
    CAST(ope.id AS char) AS id ,
    ope.id,
    cli.name AS clientName,
    cli.clientNum AS clientNum,
    card.cardNum AS cardNum,
@@ -442,14 +476,16 @@
    WHEN card.state = 3 THEN '已挂失'
    END) AS stateName,
    ope.card_cost AS cardCost,
    ope.payment_id AS paymentId,
    pay.name AS paymentName,
    (SELECT `name` FROM ba_user WHERE id =  ope.operator) AS operator,
    ope.operate_dt AS operateDt
    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
    LEFT JOIN se_client_card card ON ope.card_id = card.id
    LEFT JOIN se_client cli ON ope.client_id = cli.id
    LEFT JOIN se_payment_method pay ON pay.id = ope.payment_id
    <where>
      AND ope.operate_type = 1
      AND ope.operate_valid = 2
      <if test = "clientName != null and clientName !=''">
        AND cli.name like CONCAT('%',#{clientName},'%')
      </if>
@@ -479,10 +515,11 @@
    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
    LEFT JOIN se_client_card card ON ope.card_id = card.id
    LEFT JOIN se_client cli ON ope.client_id = cli.id
    <where>
      AND ope.operate_type = 4
      AND ope.operate_valid = 2
      <if test = "clientName != null and clientName !=''">
        AND cli.name like CONCAT('%',#{clientName},'%')
      </if>
@@ -509,10 +546,11 @@
    (SELECT `name` FROM ba_user WHERE id =  ope.operator) AS operator,
    ope.operate_dt AS operateDt
    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
    LEFT JOIN se_client_card card ON ope.card_id = card.id
    LEFT JOIN se_client cli ON ope.client_id = cli.id
    <where>
      AND ope.operate_type = 4
      AND ope.operate_valid = 2
      <if test = "clientName != null and clientName !=''">
        AND cli.name like CONCAT('%',#{clientName},'%')
      </if>
@@ -536,12 +574,13 @@
  <!--根据指定条件获取通用操作记录数量-->
  <select id="getCommonOperationRecordCount" parameterType="java.util.Map" resultType="java.lang.Long">
    select
        COUNT(*) AS recordCount
    COUNT(*) AS recordCount
    FROM se_card_operate ope
        INNER JOIN se_client cli ON ope.client_id = cli.id
        INNER JOIN se_client_card card ON ope.card_id = card.id
        INNER JOIN ba_user us ON ope.operator = us.id
    LEFT JOIN se_client cli ON ope.client_id = cli.id
    LEFT JOIN se_client_card card ON ope.card_id = card.id
    LEFT JOIN ba_user us ON ope.operator = us.id
    <where>
      AND ope.operate_valid = 2
      <if test = "operateType != null and operateType > 0">
        AND ope.operate_type = #{operateType}
      </if>
@@ -563,22 +602,23 @@
  <!--根据指定条件获取通用操作记录-->
  <select id="getCommonOperations" resultType="com.dy.pipIrrGlobal.voSe.VoOperate">
    SELECT
        cli.name AS clientName,
        cli.clientNum,
        CAST(card.cardNum AS char) AS cardNum,
        us.name AS operator,
        ope.operate_dt AS operateDt,
        IFNULL(ope.trade_amount,0) AS refund,
        (CASE
            WHEN ope.payment_id = 1 THEN '现金'
        END) AS refundTypeName,
        card.money,
        IFNULL(ope.system_balance,0) AS systemBalance
    cli.name AS clientName,
    cli.clientNum,
    CAST(card.cardNum AS char) AS cardNum,
    us.name AS operator,
    ope.operate_dt AS operateDt,
    IFNULL(ope.trade_amount,0) AS refund,
    (CASE
    WHEN ope.payment_id = 1 THEN '现金'
    END) AS refundTypeName,
    card.money,
    IFNULL(ope.system_balance,0) AS systemBalance
    FROM se_card_operate ope
        INNER JOIN se_client cli ON ope.client_id = cli.id
        INNER JOIN se_client_card card ON ope.card_id = card.id
        INNER JOIN ba_user us ON ope.operator = us.id
    LEFT JOIN se_client cli ON ope.client_id = cli.id
    LEFT JOIN se_client_card card ON ope.card_id = card.id
    LEFT JOIN ba_user us ON ope.operator = us.id
    <where>
      AND ope.operate_valid = 2
      <if test = "operateType != null and operateType > 0">
        AND ope.operate_type = #{operateType}
      </if>
@@ -608,20 +648,29 @@
    SELECT
    COUNT(*) AS recordCount
    FROM se_card_operate ope
    INNER JOIN se_client cli ON ope.client_id = cli.id
    INNER JOIN se_client_card card ON ope.card_id = card.id
    INNER JOIN se_payment_method pay ON ope.payment_id = pay.id
    INNER JOIN ba_user us ON ope.operator = us.id
    INNER JOIN ba_district vil ON cli.villageId = vil.id
    INNER JOIN ba_district tow ON cli.townId = tow.id
    LEFT JOIN se_client cli ON ope.client_id = cli.id
    LEFT JOIN se_client_card card ON ope.card_id = card.id
    LEFT JOIN se_payment_method pay ON ope.payment_id = pay.id
    LEFT JOIN ba_user us ON ope.operator = us.id
    LEFT JOIN ba_district vil ON cli.villageId = vil.id
    LEFT JOIN ba_district tow ON cli.townId = tow.id
    <where>
      AND ope.operate_type IN(1,2)
      AND ope.operate_valid = 2
      <if test = "operateId != null and operateId > 0">
        AND ope.id = #{operateId}
      </if>
      <if test = "clientName != null and clientName !=''">
        AND cli.name like CONCAT('%',#{clientName},'%')
      </if>
      <if test = "onlyGift != null and onlyGift ==true">
        AND ope.gift > 0
      </if>
      <if test = "cashierId != null and cashierId > 0">
        AND ope.operator = #{cashierId}
      </if>
      <if test = "timeStart != null and timeStop != null">
@@ -633,40 +682,51 @@
  <!--根据指定条件获取收据列表-->
  <select id="getReceipts" resultType="com.dy.pipIrrGlobal.voSe.VoReceipt">
    SELECT
    CAST(ope.id AS char) AS orderNumber,
    ope.id AS orderNumber,
    tow.name AS townName,
    vil.name AS villageName,
    cli.`name`,
    cli.phone,
    CAST(cli.clientNum AS char) AS clientNum,
    CAST(card.cardNum AS char) AS cardNum,
    cli.clientNum,
    card.cardNum,
    (CASE
    WHEN ope.operate_type = 1 THEN '开卡'
    WHEN ope.operate_type = 2 THEN '充值'
    END) AS operateType,
    IFNULL(ope.trade_amount,0) AS waterCost,
    IFNULL(ope.gift,0) AS gift,
    IFNULL(ope.card_cost,0) AS cardCost,
    (IFNULL(ope.trade_amount,0) + IFNULL(ope.card_cost,0)) AS amount,
    card.money,
    pay.`name` AS paymentName,
    us.`name` AS operatorName,
    ope.operate_dt AS operateTime,
    ope.operator AS cashierId,
    NOW() AS currentTime
    FROM se_card_operate ope
    INNER JOIN se_client cli ON ope.client_id = cli.id
    INNER JOIN se_client_card card ON ope.card_id = card.id
    INNER JOIN se_payment_method pay ON ope.payment_id = pay.id
    INNER JOIN ba_user us ON ope.operator = us.id
    INNER JOIN ba_district vil ON cli.villageId = vil.id
    INNER JOIN ba_district tow ON cli.townId = tow.id
    LEFT JOIN se_client cli ON ope.client_id = cli.id
    LEFT JOIN se_client_card card ON ope.card_id = card.id
    LEFT JOIN se_payment_method pay ON ope.payment_id = pay.id
    LEFT JOIN ba_user us ON ope.operator = us.id
    LEFT JOIN ba_district vil ON cli.villageId = vil.id
    LEFT JOIN ba_district tow ON cli.townId = tow.id
    <where>
      AND ope.operate_type IN(1,2)
      AND ope.operate_valid = 2
      <if test = "operateId != null and operateId > 0">
        AND ope.id = #{operateId}
      </if>
      <if test = "clientName != null and clientName !=''">
        AND cli.name like CONCAT('%',#{clientName},'%')
      </if>
      <if test = "onlyGift != null and onlyGift ==true">
        AND ope.gift > 0
      </if>
      <if test = "cashierId != null and cashierId > 0">
        AND ope.operator = #{cashierId}
      </if>
      <if test = "timeStart != null and timeStop != null">
@@ -686,14 +746,15 @@
    SELECT
    SUM(IFNULL(ope.trade_amount,0) + IFNULL(ope.card_cost,0)) AS totalAmount
    FROM se_card_operate ope
    INNER JOIN se_client cli ON ope.client_id = cli.id
    INNER JOIN se_client_card card ON ope.card_id = card.id
    INNER JOIN se_payment_method pay ON ope.payment_id = pay.id
    INNER JOIN ba_user us ON ope.operator = us.id
    INNER JOIN ba_district vil ON cli.villageId = vil.id
    INNER JOIN ba_district tow ON cli.townId = tow.id
    LEFT JOIN se_client cli ON ope.client_id = cli.id
    LEFT JOIN se_client_card card ON ope.card_id = card.id
    LEFT JOIN se_payment_method pay ON ope.payment_id = pay.id
    LEFT JOIN ba_user us ON ope.operator = us.id
    LEFT JOIN ba_district vil ON cli.villageId = vil.id
    LEFT JOIN ba_district tow ON cli.townId = tow.id
    <where>
      AND ope.operate_type IN(1,2)
      AND ope.operate_valid = 2
      <if test = "operateId != null and operateId > 0">
        AND ope.id = #{operateId}
      </if>
@@ -728,7 +789,7 @@
    FROM
    `se_card_operate`
    WHERE
    operate_dt BETWEEN #{timeStart} AND #{timeStop} AND operate_type = 1
    operate_dt BETWEEN #{timeStart} AND #{timeStop} AND operate_type = 1 AND operate_valid = 2
  </select>
  <!--指定时间段内挂失总数量(物理卡)-->
  <select id="getLossCountIcCardsCount" resultType="java.lang.Long">
@@ -737,7 +798,7 @@
    FROM
    `se_card_operate`
    WHERE
    operate_dt BETWEEN #{timeStart} AND #{timeStop} AND operate_type = 6
    operate_dt BETWEEN #{timeStart} AND #{timeStop} AND operate_type = 6 AND operate_valid = 2
  </select>
  <!--指定时间段内充值总数量(物理卡)-->
  <select id="getRechargeCountIcCardsCount" resultType="java.lang.Long">
@@ -746,14 +807,14 @@
    FROM
    `se_card_operate`
    WHERE
    operate_dt BETWEEN #{timeStart} AND #{timeStop} AND operate_type = 2
    operate_dt BETWEEN #{timeStart} AND #{timeStop} AND operate_type = 2 AND operate_valid = 2
  </select>
  <!--指定时间段内开物理卡农户数量-->
  <select id="getOpenIcCardClientsCount" resultType="java.lang.Long">
    select
    count(*)
    from
      (
    (
    SELECT
    sco.client_id AS clientId,
    sc.`name` AS clientName,
@@ -766,24 +827,24 @@
    `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
    sco.operate_dt BETWEEN #{timeStart} AND #{timeStop} AND sco.operate_type = 1 AND sc.deleted = 0 AND sc.disabled = 0 AND sco.operate_valid = 2
    GROUP BY sc.id) c
    </select>
  </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
    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
    `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
    sco.operate_dt BETWEEN #{timeStart} AND #{timeStop} AND sco.operate_type = 1 AND sc.deleted = 0 AND sc.disabled = 0 AND sco.operate_valid = 2
    GROUP BY sc.id
    ORDER BY sc.id DESC
    <trim prefix="limit " >
@@ -810,24 +871,24 @@
    `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
    sco.operate_dt BETWEEN #{timeStart} AND #{timeStop} AND sco.operate_type = 2 AND sc.deleted = 0 AND sc.disabled = 0 AND sco.operate_valid = 2
    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
    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
    `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
    sco.operate_dt BETWEEN #{timeStart} AND #{timeStop} AND sco.operate_type = 2 AND sc.deleted = 0 AND sc.disabled = 0 AND sco.operate_valid = 2
    GROUP BY sc.id
    ORDER BY sc.id DESC
    <trim prefix="limit " >
@@ -854,25 +915,25 @@
    `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
    sco.operate_dt BETWEEN #{timeStart} AND #{timeStop} AND sco.operate_type = 2 AND sc.deleted = 0 AND sc.disabled = 0 AND sco.operate_valid = 2
    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
    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
    `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
    sco.operate_dt BETWEEN #{timeStart} AND #{timeStop} AND sco.operate_type = 2 AND sc.deleted = 0 AND sc.disabled = 0 AND sco.operate_valid = 2
    GROUP BY sc.id
    HAVING IFNULL(SUM(sco.trade_amount),0) &gt; #{value}
    ORDER BY sc.id DESC
@@ -887,11 +948,12 @@
  <select id="getRechargesCountNew" resultType="java.lang.Long">
    SELECT COUNT(*) AS recordCount
    FROM se_client_card card
        INNER JOIN se_client cli ON cli.id = card.clientId
        LEFT JOIN se_recharge_history rch ON rch.cardId = card.id
        LEFT JOIN se_payment_method pay ON pay.id = rch.paymentId
        INNER JOIN ba_user us ON us.id = rch.operator
    LEFT JOIN se_client cli ON cli.id = card.clientId
    LEFT JOIN se_recharge_history rch ON rch.cardId = card.id
    LEFT JOIN se_payment_method pay ON pay.id = rch.paymentId
    LEFT JOIN ba_user us ON us.id = rch.operator
    <where>
      AND rch.operate_valid = 2
      <if test = "clientName != null and clientName !=''">
        AND cli.name like CONCAT('%',#{clientName},'%')
      </if>
@@ -909,21 +971,22 @@
  <!--获取充值记录,管理平台充值列表使用,APP未使用-->
  <select id="getRechargesNew" resultType="com.dy.pipIrrGlobal.voSe.VoRechargeNew">
    SELECT
        cli.name AS clientName,
        cli.clientNum,
        card.cardNum,
        IFNULL(rch.amount, 0) AS amount,
        IFNULL(rch.gift, 0) AS gift,
        IFNULL(rch.afterRecharge, 0) AS afterRecharge,
        pay.name AS paymentName,
        us.name AS operator,
        rch.operateDt AS operateTime
    cli.name AS clientName,
    cli.clientNum,
    card.cardNum,
    IFNULL(rch.amount, 0) AS amount,
    IFNULL(rch.gift, 0) AS gift,
    IFNULL(rch.afterRecharge, 0) AS afterRecharge,
    pay.name AS paymentName,
    us.name AS operator,
    rch.operateDt AS operateTime
    FROM se_client_card card
        INNER JOIN se_client cli ON cli.id = card.clientId
        LEFT JOIN se_recharge_history rch ON rch.cardId = card.id
        LEFT JOIN se_payment_method pay ON pay.id = rch.paymentId
        INNER JOIN ba_user us ON us.id = rch.operator
    LEFT JOIN se_client cli ON cli.id = card.clientId
    LEFT JOIN se_recharge_history rch ON rch.cardId = card.id
    LEFT JOIN se_payment_method pay ON pay.id = rch.paymentId
    LEFT JOIN ba_user us ON us.id = rch.operator
    <where>
      AND rch.operate_valid = 2
      <if test = "clientName != null and clientName !=''">
        AND cli.name like CONCAT('%',#{clientName},'%')
      </if>
@@ -943,4 +1006,86 @@
      </if>
    </trim>
  </select>
  <!--获取返还记录数量,管理平台充值列表使用-->
  <select id="getRefundsCount" resultType="java.lang.Long">
    SELECT COUNT(*) AS recordCount
    FROM se_client_card card
    INNER JOIN se_client cli ON cli.id = card.clientId
    LEFT JOIN se_card_operate ope ON ope.card_id = card.id
    INNER JOIN ba_user us ON us.id = ope.operator
    <where>
      AND ope.operate_type = 5
      AND ope.operate_valid = 2
      <if test = "clientName != null and clientName !=''">
        AND cli.name like CONCAT('%',#{clientName},'%')
      </if>
      <if test = "clientNum != null and clientNum > 0">
        AND cli.clientNum like CONCAT('%',#{clientNum},'%')
      </if>
      <if test = "cardNum != null and cardNum !=''">
        AND card.cardNum like CONCAT('%',#{cardNum},'%')
      </if>
    </where>
  </select>
  <!--获取返还记录,管理平台充值列表使用-->
  <select id="getRefunds" resultType="com.dy.pipIrrGlobal.voSe.VoRefund">
    SELECT
    cli.name AS clientName,
    cli.clientNum,
    card.cardNum,
    IFNULL(ope.money, 0) AS money,
    IFNULL(ope.refund_amount, 0) AS refundAmount,
    us.name AS operator,
    ope.operate_dt AS operateTime
    FROM se_client_card card
    INNER JOIN se_client cli ON cli.id = card.clientId
    LEFT JOIN se_card_operate ope ON ope.card_id = card.id
    INNER JOIN ba_user us ON us.id = ope.operator
    <where>
      AND ope.operate_type = 5
      AND ope.operate_valid = 2
      <if test = "clientName != null and clientName !=''">
        AND cli.name like CONCAT('%',#{clientName},'%')
      </if>
      <if test = "clientNum != null and clientNum > 0">
        AND cli.clientNum like CONCAT('%',#{clientNum},'%')
      </if>
      <if test = "cardNum != null and cardNum !=''">
        AND card.cardNum like CONCAT('%',#{cardNum},'%')
      </if>
    </where>
    ORDER BY ope.operate_dt DESC
    <trim prefix="limit " >
      <if test="start != null and count != null">
        #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER}
      </if>
    </trim>
  </select>
  <!--根据水卡ID、操作类型获取获取最后一条记录,判断开卡是否同步充值使用-->
  <update id="turnOperateValidByCardId">
    UPDATE se_card_operate
    SET operate_valid = 2
    WHERE id = (
    SELECT id FROM (
    SELECT id
    FROM se_card_operate
    WHERE operate_valid = 1 AND operate_type = #{operateType} AND card_id = #{cardId}
    ORDER BY id DESC
    LIMIT 1) AS subquery
    );
  </update>
  <!--根据操作类型、水卡ID获取获取最后一条记录-->
  <select id="getCardOperate" resultType="com.dy.pipIrrGlobal.pojoSe.SeCardOperate">
    SELECT * FROM se_card_operate
    WHERE operate_type = #{operateType} AND card_id = #{cardId} ORDER BY operate_dt DESC LIMIT 1
  </select>
</mapper>