wuzeyu
2024-09-20 99ef794e9ef300268c527aa6d55e55145a37d991
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveHistoryMapper.xml
@@ -1,304 +1,1122 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dy.pipIrrGlobal.daoRm.RmOpenCloseValveHistoryMapper">
  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveHistory">
    <!--@mbg.generated-->
    <!--@Table rm_open_close_valve_history-->
    <id column="id" jdbcType="BIGINT" property="id" />
    <result column="controller_id" jdbcType="BIGINT" property="controllerId" />
    <result column="intake_id" jdbcType="BIGINT" property="intakeId" />
    <result column="rtu_addr" jdbcType="VARCHAR" property="rtuAddr" />
    <result column="op_dt" jdbcType="DATE" property="opDt" />
    <result column="op_type" jdbcType="TINYINT" property="opType" />
    <result column="op_total_amount" jdbcType="DOUBLE" property="opTotalAmount" />
    <result column="op_ic_card_no" jdbcType="VARCHAR" property="opIcCardNo" />
    <result column="op_ic_card_addr" jdbcType="VARCHAR" property="opIcCardAddr" />
    <result column="op_remain_money" jdbcType="DOUBLE" property="opRemainMoney" />
    <result column="open_dt" jdbcType="DATE" property="openDt" />
    <result column="cl_dt" jdbcType="DATE" property="clDt" />
    <result column="cl_type" jdbcType="TINYINT" property="clType" />
    <result column="cl_total_amount" jdbcType="DOUBLE" property="clTotalAmount" />
    <result column="cl_ic_card_no" jdbcType="VARCHAR" property="clIcCardNo" />
    <result column="cl_ic_card_addr" jdbcType="VARCHAR" property="clIcCardAddr" />
    <result column="cl_remain_money" jdbcType="DOUBLE" property="clRemainMoney" />
    <result column="cl_this_amount" jdbcType="DOUBLE" property="clThisAmount" />
    <result column="cl_this_money" jdbcType="DOUBLE" property="clThisMoney" />
    <result column="cl_this_time" jdbcType="INTEGER" property="clThisTime" />
    <result column="cl_open_dt" jdbcType="DATE" property="clOpenDt" />
    <result column="close_dt" jdbcType="DATE" property="closeDt" />
  </resultMap>
  <sql id="Base_Column_List">
    <!--@mbg.generated-->
    id, controller_id, intake_id, rtu_addr, op_dt, op_type, op_total_amount, op_ic_card_no,
    op_ic_card_addr, op_remain_money, open_dt, cl_dt, cl_type, cl_total_amount, cl_ic_card_no,
    cl_ic_card_addr, cl_remain_money, cl_this_amount, cl_this_money, cl_this_time, cl_open_dt,
    close_dt
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
    <!--@mbg.generated-->
    select
    <include refid="Base_Column_List" />
    from rm_open_close_valve_history
    where id = #{id,jdbcType=BIGINT}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
    <!--@mbg.generated-->
    delete from rm_open_close_valve_history
    where id = #{id,jdbcType=BIGINT}
  </delete>
  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveHistory">
    <!--@mbg.generated-->
    insert into rm_open_close_valve_history (id, controller_id, intake_id,
      rtu_addr, op_dt, op_type,
      op_total_amount, op_ic_card_no, op_ic_card_addr,
      op_remain_money, open_dt, cl_dt,
      cl_type, cl_total_amount, cl_ic_card_no,
      cl_ic_card_addr, cl_remain_money, cl_this_amount,
      cl_this_money, cl_this_time, cl_open_dt,
      close_dt)
    values (#{id,jdbcType=BIGINT}, #{controllerId,jdbcType=BIGINT}, #{intakeId,jdbcType=BIGINT},
      #{rtuAddr,jdbcType=VARCHAR}, #{opDt,jdbcType=DATE}, #{opType,jdbcType=TINYINT},
      #{opTotalAmount,jdbcType=DOUBLE}, #{opIcCardNo,jdbcType=VARCHAR}, #{opIcCardAddr,jdbcType=VARCHAR},
      #{opRemainMoney,jdbcType=DOUBLE}, #{openDt,jdbcType=DATE}, #{clDt,jdbcType=DATE},
      #{clType,jdbcType=TINYINT}, #{clTotalAmount,jdbcType=DOUBLE}, #{clIcCardNo,jdbcType=VARCHAR},
      #{clIcCardAddr,jdbcType=VARCHAR}, #{clRemainMoney,jdbcType=DOUBLE}, #{clThisAmount,jdbcType=DOUBLE},
      #{clThisMoney,jdbcType=DOUBLE}, #{clThisTime,jdbcType=INTEGER}, #{clOpenDt,jdbcType=DATE},
      #{closeDt,jdbcType=DATE})
  </insert>
  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveHistory">
    <!--@mbg.generated-->
    insert into rm_open_close_valve_history
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="id != null">
    <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveHistory">
        <!--@mbg.generated-->
        <!--@Table rm_open_close_valve_history-->
        <id column="id" jdbcType="BIGINT" property="id"/>
        <result column="client_id" jdbcType="BIGINT" property="clientId"/>
        <result column="client_name" jdbcType="VARCHAR" property="clientName"/>
        <result column="controller_id" jdbcType="BIGINT" property="controllerId"/>
        <result column="intake_id" jdbcType="BIGINT" property="intakeId"/>
        <result column="rtu_addr" jdbcType="VARCHAR" property="rtuAddr"/>
        <result column="op_dt" jdbcType="TIMESTAMP" property="opDt"/>
        <result column="op_type" jdbcType="TINYINT" property="opType"/>
        <result column="op_total_amount" jdbcType="DOUBLE" property="opTotalAmount"/>
        <result column="op_ic_card_no" jdbcType="VARCHAR" property="opIcCardNo"/>
        <result column="op_ic_card_addr" jdbcType="VARCHAR" property="opIcCardAddr"/>
        <result column="op_remain_money" jdbcType="DOUBLE" property="opRemainMoney"/>
        <result column="open_dt" jdbcType="TIMESTAMP" property="openDt"/>
        <result column="op_order_no" jdbcType="VARCHAR" property="opOrderNo"/>
        <result column="op_ele_total_amount" jdbcType="FLOAT" property="opEleTotalAmount"/>
        <result column="op_water_remain_user" jdbcType="FLOAT" property="opWaterRemainUser"/>
        <result column="cl_dt" jdbcType="TIMESTAMP" property="clDt"/>
        <result column="cl_type" jdbcType="TINYINT" property="clType"/>
        <result column="cl_total_amount" jdbcType="DOUBLE" property="clTotalAmount"/>
        <result column="cl_ic_card_no" jdbcType="VARCHAR" property="clIcCardNo"/>
        <result column="cl_ic_card_addr" jdbcType="VARCHAR" property="clIcCardAddr"/>
        <result column="cl_remain_money" jdbcType="DOUBLE" property="clRemainMoney"/>
        <result column="cl_this_amount" jdbcType="DOUBLE" property="clThisAmount"/>
        <result column="cl_this_money" jdbcType="DOUBLE" property="clThisMoney"/>
        <result column="cl_this_time" jdbcType="INTEGER" property="clThisTime"/>
        <result column="cl_open_dt" jdbcType="TIMESTAMP" property="clOpenDt"/>
        <result column="close_dt" jdbcType="TIMESTAMP" property="closeDt"/>
        <result column="cl_order_no" jdbcType="VARCHAR" property="clOrderNo"/>
        <result column="cl_ele_total_amount" jdbcType="FLOAT" property="clEleTotalAmount"/>
        <result column="cl_water_remain_user" jdbcType="FLOAT" property="clWaterRemainUser"/>
        <result column="cl_this_ele" jdbcType="FLOAT" property="clThisEle"/>
    </resultMap>
    <sql id="Base_Column_List">
        <!--@mbg.generated-->
        id,
      </if>
      <if test="controllerId != null">
        client_id,
        client_name,
        controller_id,
      </if>
      <if test="intakeId != null">
        intake_id,
      </if>
      <if test="rtuAddr != null">
        rtu_addr,
      </if>
      <if test="opDt != null">
        op_dt,
      </if>
      <if test="opType != null">
        op_type,
      </if>
      <if test="opTotalAmount != null">
        op_total_amount,
      </if>
      <if test="opIcCardNo != null">
        op_ic_card_no,
      </if>
      <if test="opIcCardAddr != null">
        op_ic_card_addr,
      </if>
      <if test="opRemainMoney != null">
        op_remain_money,
      </if>
      <if test="openDt != null">
        open_dt,
      </if>
      <if test="clDt != null">
        op_order_no,
        op_ele_total_amount,
        op_water_remain_user,
        cl_dt,
      </if>
      <if test="clType != null">
        cl_type,
      </if>
      <if test="clTotalAmount != null">
        cl_total_amount,
      </if>
      <if test="clIcCardNo != null">
        cl_ic_card_no,
      </if>
      <if test="clIcCardAddr != null">
        cl_ic_card_addr,
      </if>
      <if test="clRemainMoney != null">
        cl_remain_money,
      </if>
      <if test="clThisAmount != null">
        cl_this_amount,
      </if>
      <if test="clThisMoney != null">
        cl_this_money,
      </if>
      <if test="clThisTime != null">
        cl_this_time,
      </if>
      <if test="clOpenDt != null">
        cl_open_dt,
      </if>
      <if test="closeDt != null">
        close_dt,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="id != null">
        #{id,jdbcType=BIGINT},
      </if>
      <if test="controllerId != null">
        #{controllerId,jdbcType=BIGINT},
      </if>
      <if test="intakeId != null">
        #{intakeId,jdbcType=BIGINT},
      </if>
      <if test="rtuAddr != null">
        #{rtuAddr,jdbcType=VARCHAR},
      </if>
      <if test="opDt != null">
        #{opDt,jdbcType=DATE},
      </if>
      <if test="opType != null">
        #{opType,jdbcType=TINYINT},
      </if>
      <if test="opTotalAmount != null">
        #{opTotalAmount,jdbcType=DOUBLE},
      </if>
      <if test="opIcCardNo != null">
        #{opIcCardNo,jdbcType=VARCHAR},
      </if>
      <if test="opIcCardAddr != null">
        #{opIcCardAddr,jdbcType=VARCHAR},
      </if>
      <if test="opRemainMoney != null">
        #{opRemainMoney,jdbcType=DOUBLE},
      </if>
      <if test="openDt != null">
        #{openDt,jdbcType=DATE},
      </if>
      <if test="clDt != null">
        #{clDt,jdbcType=DATE},
      </if>
      <if test="clType != null">
        #{clType,jdbcType=TINYINT},
      </if>
      <if test="clTotalAmount != null">
        #{clTotalAmount,jdbcType=DOUBLE},
      </if>
      <if test="clIcCardNo != null">
        #{clIcCardNo,jdbcType=VARCHAR},
      </if>
      <if test="clIcCardAddr != null">
        #{clIcCardAddr,jdbcType=VARCHAR},
      </if>
      <if test="clRemainMoney != null">
        #{clRemainMoney,jdbcType=DOUBLE},
      </if>
      <if test="clThisAmount != null">
        #{clThisAmount,jdbcType=DOUBLE},
      </if>
      <if test="clThisMoney != null">
        #{clThisMoney,jdbcType=DOUBLE},
      </if>
      <if test="clThisTime != null">
        #{clThisTime,jdbcType=INTEGER},
      </if>
      <if test="clOpenDt != null">
        #{clOpenDt,jdbcType=DATE},
      </if>
      <if test="closeDt != null">
        #{closeDt,jdbcType=DATE},
      </if>
    </trim>
  </insert>
  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveHistory">
    <!--@mbg.generated-->
    update rm_open_close_valve_history
    <set>
      <if test="controllerId != null">
        controller_id = #{controllerId,jdbcType=BIGINT},
      </if>
      <if test="intakeId != null">
        intake_id = #{intakeId,jdbcType=BIGINT},
      </if>
      <if test="rtuAddr != null">
        rtu_addr = #{rtuAddr,jdbcType=VARCHAR},
      </if>
      <if test="opDt != null">
        op_dt = #{opDt,jdbcType=DATE},
      </if>
      <if test="opType != null">
        op_type = #{opType,jdbcType=TINYINT},
      </if>
      <if test="opTotalAmount != null">
        op_total_amount = #{opTotalAmount,jdbcType=DOUBLE},
      </if>
      <if test="opIcCardNo != null">
        op_ic_card_no = #{opIcCardNo,jdbcType=VARCHAR},
      </if>
      <if test="opIcCardAddr != null">
        op_ic_card_addr = #{opIcCardAddr,jdbcType=VARCHAR},
      </if>
      <if test="opRemainMoney != null">
        op_remain_money = #{opRemainMoney,jdbcType=DOUBLE},
      </if>
      <if test="openDt != null">
        open_dt = #{openDt,jdbcType=DATE},
      </if>
      <if test="clDt != null">
        cl_dt = #{clDt,jdbcType=DATE},
      </if>
      <if test="clType != null">
        cl_type = #{clType,jdbcType=TINYINT},
      </if>
      <if test="clTotalAmount != null">
        cl_total_amount = #{clTotalAmount,jdbcType=DOUBLE},
      </if>
      <if test="clIcCardNo != null">
        cl_ic_card_no = #{clIcCardNo,jdbcType=VARCHAR},
      </if>
      <if test="clIcCardAddr != null">
        cl_ic_card_addr = #{clIcCardAddr,jdbcType=VARCHAR},
      </if>
      <if test="clRemainMoney != null">
        cl_remain_money = #{clRemainMoney,jdbcType=DOUBLE},
      </if>
      <if test="clThisAmount != null">
        cl_this_amount = #{clThisAmount,jdbcType=DOUBLE},
      </if>
      <if test="clThisMoney != null">
        cl_this_money = #{clThisMoney,jdbcType=DOUBLE},
      </if>
      <if test="clThisTime != null">
        cl_this_time = #{clThisTime,jdbcType=INTEGER},
      </if>
      <if test="clOpenDt != null">
        cl_open_dt = #{clOpenDt,jdbcType=DATE},
      </if>
      <if test="closeDt != null">
        close_dt = #{closeDt,jdbcType=DATE},
      </if>
    </set>
    where id = #{id,jdbcType=BIGINT}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveHistory">
    <!--@mbg.generated-->
    update rm_open_close_valve_history
    set controller_id = #{controllerId,jdbcType=BIGINT},
      intake_id = #{intakeId,jdbcType=BIGINT},
      rtu_addr = #{rtuAddr,jdbcType=VARCHAR},
      op_dt = #{opDt,jdbcType=DATE},
      op_type = #{opType,jdbcType=TINYINT},
      op_total_amount = #{opTotalAmount,jdbcType=DOUBLE},
      op_ic_card_no = #{opIcCardNo,jdbcType=VARCHAR},
      op_ic_card_addr = #{opIcCardAddr,jdbcType=VARCHAR},
      op_remain_money = #{opRemainMoney,jdbcType=DOUBLE},
      open_dt = #{openDt,jdbcType=DATE},
      cl_dt = #{clDt,jdbcType=DATE},
      cl_type = #{clType,jdbcType=TINYINT},
      cl_total_amount = #{clTotalAmount,jdbcType=DOUBLE},
      cl_ic_card_no = #{clIcCardNo,jdbcType=VARCHAR},
      cl_ic_card_addr = #{clIcCardAddr,jdbcType=VARCHAR},
      cl_remain_money = #{clRemainMoney,jdbcType=DOUBLE},
      cl_this_amount = #{clThisAmount,jdbcType=DOUBLE},
      cl_this_money = #{clThisMoney,jdbcType=DOUBLE},
      cl_this_time = #{clThisTime,jdbcType=INTEGER},
      cl_open_dt = #{clOpenDt,jdbcType=DATE},
      close_dt = #{closeDt,jdbcType=DATE}
    where id = #{id,jdbcType=BIGINT}
  </update>
        cl_order_no,
        cl_ele_total_amount,
        cl_water_remain_user,
        cl_this_ele
    </sql>
    <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
        <!--@mbg.generated-->
        select
        <include refid="Base_Column_List"/>
        from rm_open_close_valve_history
        where id = #{id,jdbcType=BIGINT}
    </select>
    <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
        <!--@mbg.generated-->
        delete
        from rm_open_close_valve_history
        where id = #{id,jdbcType=BIGINT}
    </delete>
    <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveHistory">
        <!--@mbg.generated-->
        insert into rm_open_close_valve_history (id, client_id, client_name,
                                                 controller_id, intake_id,
                                                 rtu_addr, op_dt, op_type,
                                                 op_total_amount, op_ic_card_no, op_ic_card_addr,
                                                 op_remain_money, open_dt, op_order_no,
                                                 op_ele_total_amount, op_water_remain_user, cl_dt,
                                                 cl_type, cl_total_amount, cl_ic_card_no,
                                                 cl_ic_card_addr, cl_remain_money, cl_this_amount,
                                                 cl_this_money, cl_this_time, cl_open_dt,
                                                 close_dt, cl_order_no, cl_ele_total_amount,
                                                 cl_water_remain_user, cl_this_ele)
        values (#{id,jdbcType=BIGINT}, #{clientId,jdbcType=BIGINT}, #{clientName,jdbcType=VARCHAR},
                #{controllerId,jdbcType=BIGINT}, #{intakeId,jdbcType=BIGINT},
                #{rtuAddr,jdbcType=VARCHAR}, #{opDt,jdbcType=TIMESTAMP}, #{opType,jdbcType=TINYINT},
                #{opTotalAmount,jdbcType=DOUBLE}, #{opIcCardNo,jdbcType=VARCHAR}, #{opIcCardAddr,jdbcType=VARCHAR},
                #{opRemainMoney,jdbcType=DOUBLE}, #{openDt,jdbcType=TIMESTAMP}, #{opOrderNo,jdbcType=VARCHAR},
                #{opEleTotalAmount,jdbcType=FLOAT}, #{opWaterRemainUser,jdbcType=FLOAT}, #{clDt,jdbcType=TIMESTAMP},
                #{clType,jdbcType=TINYINT}, #{clTotalAmount,jdbcType=DOUBLE}, #{clIcCardNo,jdbcType=VARCHAR},
                #{clIcCardAddr,jdbcType=VARCHAR}, #{clRemainMoney,jdbcType=DOUBLE}, #{clThisAmount,jdbcType=DOUBLE},
                #{clThisMoney,jdbcType=DOUBLE}, #{clThisTime,jdbcType=INTEGER}, #{clOpenDt,jdbcType=TIMESTAMP},
                #{closeDt,jdbcType=TIMESTAMP}, #{clOrderNo,jdbcType=VARCHAR}, #{clEleTotalAmount,jdbcType=FLOAT},
                #{clWaterRemainUser,jdbcType=FLOAT}, #{clThisEle,jdbcType=FLOAT})
    </insert>
    <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveHistory">
        <!--@mbg.generated-->
        insert into rm_open_close_valve_history
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">
                id,
            </if>
            <if test="clientId != null">
                client_id,
            </if>
            <if test="clientName != null">
                client_name,
            </if>
            <if test="controllerId != null">
                controller_id,
            </if>
            <if test="intakeId != null">
                intake_id,
            </if>
            <if test="rtuAddr != null">
                rtu_addr,
            </if>
            <if test="opDt != null">
                op_dt,
            </if>
            <if test="opType != null">
                op_type,
            </if>
            <if test="opTotalAmount != null">
                op_total_amount,
            </if>
            <if test="opIcCardNo != null">
                op_ic_card_no,
            </if>
            <if test="opIcCardAddr != null">
                op_ic_card_addr,
            </if>
            <if test="opRemainMoney != null">
                op_remain_money,
            </if>
            <if test="openDt != null">
                open_dt,
            </if>
            <if test="opOrderNo != null">
                op_order_no,
            </if>
            <if test="opEleTotalAmount != null">
                op_ele_total_amount,
            </if>
            <if test="opWaterRemainUser != null">
                op_water_remain_user,
            </if>
            <if test="clDt != null">
                cl_dt,
            </if>
            <if test="clType != null">
                cl_type,
            </if>
            <if test="clTotalAmount != null">
                cl_total_amount,
            </if>
            <if test="clIcCardNo != null">
                cl_ic_card_no,
            </if>
            <if test="clIcCardAddr != null">
                cl_ic_card_addr,
            </if>
            <if test="clRemainMoney != null">
                cl_remain_money,
            </if>
            <if test="clThisAmount != null">
                cl_this_amount,
            </if>
            <if test="clThisMoney != null">
                cl_this_money,
            </if>
            <if test="clThisTime != null">
                cl_this_time,
            </if>
            <if test="clOpenDt != null">
                cl_open_dt,
            </if>
            <if test="closeDt != null">
                close_dt,
            </if>
            <if test="clOrderNo != null">
                cl_order_no,
            </if>
            <if test="clEleTotalAmount != null">
                cl_ele_total_amount,
            </if>
            <if test="clWaterRemainUser != null">
                cl_water_remain_user,
            </if>
            <if test="clThisEle != null">
                cl_this_ele,
            </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="id != null">
                #{id,jdbcType=BIGINT},
            </if>
            <if test="clientId != null">
                #{clientId,jdbcType=BIGINT},
            </if>
            <if test="clientName != null">
                #{clientName,jdbcType=VARCHAR},
            </if>
            <if test="controllerId != null">
                #{controllerId,jdbcType=BIGINT},
            </if>
            <if test="intakeId != null">
                #{intakeId,jdbcType=BIGINT},
            </if>
            <if test="rtuAddr != null">
                #{rtuAddr,jdbcType=VARCHAR},
            </if>
            <if test="opDt != null">
                #{opDt,jdbcType=TIMESTAMP},
            </if>
            <if test="opType != null">
                #{opType,jdbcType=TINYINT},
            </if>
            <if test="opTotalAmount != null">
                #{opTotalAmount,jdbcType=DOUBLE},
            </if>
            <if test="opIcCardNo != null">
                #{opIcCardNo,jdbcType=VARCHAR},
            </if>
            <if test="opIcCardAddr != null">
                #{opIcCardAddr,jdbcType=VARCHAR},
            </if>
            <if test="opRemainMoney != null">
                #{opRemainMoney,jdbcType=DOUBLE},
            </if>
            <if test="openDt != null">
                #{openDt,jdbcType=TIMESTAMP},
            </if>
            <if test="opOrderNo != null">
                #{opOrderNo,jdbcType=VARCHAR},
            </if>
            <if test="opEleTotalAmount != null">
                #{opEleTotalAmount,jdbcType=FLOAT},
            </if>
            <if test="opWaterRemainUser != null">
                #{opWaterRemainUser,jdbcType=FLOAT},
            </if>
            <if test="clDt != null">
                #{clDt,jdbcType=TIMESTAMP},
            </if>
            <if test="clType != null">
                #{clType,jdbcType=TINYINT},
            </if>
            <if test="clTotalAmount != null">
                #{clTotalAmount,jdbcType=DOUBLE},
            </if>
            <if test="clIcCardNo != null">
                #{clIcCardNo,jdbcType=VARCHAR},
            </if>
            <if test="clIcCardAddr != null">
                #{clIcCardAddr,jdbcType=VARCHAR},
            </if>
            <if test="clRemainMoney != null">
                #{clRemainMoney,jdbcType=DOUBLE},
            </if>
            <if test="clThisAmount != null">
                #{clThisAmount,jdbcType=DOUBLE},
            </if>
            <if test="clThisMoney != null">
                #{clThisMoney,jdbcType=DOUBLE},
            </if>
            <if test="clThisTime != null">
                #{clThisTime,jdbcType=INTEGER},
            </if>
            <if test="clOpenDt != null">
                #{clOpenDt,jdbcType=TIMESTAMP},
            </if>
            <if test="closeDt != null">
                #{closeDt,jdbcType=TIMESTAMP},
            </if>
            <if test="clOrderNo != null">
                #{clOrderNo,jdbcType=VARCHAR},
            </if>
            <if test="clEleTotalAmount != null">
                #{clEleTotalAmount,jdbcType=FLOAT},
            </if>
            <if test="clWaterRemainUser != null">
                #{clWaterRemainUser,jdbcType=FLOAT},
            </if>
            <if test="clThisEle != null">
                #{clThisEle,jdbcType=FLOAT},
            </if>
        </trim>
    </insert>
    <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveHistory">
        <!--@mbg.generated-->
        update rm_open_close_valve_history
        <set>
            <if test="clientId != null">
                client_id = #{clientId,jdbcType=BIGINT},
            </if>
            <if test="clientName != null">
                client_name = #{clientName,jdbcType=VARCHAR},
            </if>
            <if test="controllerId != null">
                controller_id = #{controllerId,jdbcType=BIGINT},
            </if>
            <if test="intakeId != null">
                intake_id = #{intakeId,jdbcType=BIGINT},
            </if>
            <if test="rtuAddr != null">
                rtu_addr = #{rtuAddr,jdbcType=VARCHAR},
            </if>
            <if test="opDt != null">
                op_dt = #{opDt,jdbcType=TIMESTAMP},
            </if>
            <if test="opType != null">
                op_type = #{opType,jdbcType=TINYINT},
            </if>
            <if test="opTotalAmount != null">
                op_total_amount = #{opTotalAmount,jdbcType=DOUBLE},
            </if>
            <if test="opIcCardNo != null">
                op_ic_card_no = #{opIcCardNo,jdbcType=VARCHAR},
            </if>
            <if test="opIcCardAddr != null">
                op_ic_card_addr = #{opIcCardAddr,jdbcType=VARCHAR},
            </if>
            <if test="opRemainMoney != null">
                op_remain_money = #{opRemainMoney,jdbcType=DOUBLE},
            </if>
            <if test="openDt != null">
                open_dt = #{openDt,jdbcType=TIMESTAMP},
            </if>
            <if test="opOrderNo != null">
                op_order_no = #{opOrderNo,jdbcType=VARCHAR},
            </if>
            <if test="opEleTotalAmount != null">
                op_ele_total_amount = #{opEleTotalAmount,jdbcType=FLOAT},
            </if>
            <if test="opWaterRemainUser != null">
                op_water_remain_user = #{opWaterRemainUser,jdbcType=FLOAT},
            </if>
            <if test="clDt != null">
                cl_dt = #{clDt,jdbcType=TIMESTAMP},
            </if>
            <if test="clType != null">
                cl_type = #{clType,jdbcType=TINYINT},
            </if>
            <if test="clTotalAmount != null">
                cl_total_amount = #{clTotalAmount,jdbcType=DOUBLE},
            </if>
            <if test="clIcCardNo != null">
                cl_ic_card_no = #{clIcCardNo,jdbcType=VARCHAR},
            </if>
            <if test="clIcCardAddr != null">
                cl_ic_card_addr = #{clIcCardAddr,jdbcType=VARCHAR},
            </if>
            <if test="clRemainMoney != null">
                cl_remain_money = #{clRemainMoney,jdbcType=DOUBLE},
            </if>
            <if test="clThisAmount != null">
                cl_this_amount = #{clThisAmount,jdbcType=DOUBLE},
            </if>
            <if test="clThisMoney != null">
                cl_this_money = #{clThisMoney,jdbcType=DOUBLE},
            </if>
            <if test="clThisTime != null">
                cl_this_time = #{clThisTime,jdbcType=INTEGER},
            </if>
            <if test="clOpenDt != null">
                cl_open_dt = #{clOpenDt,jdbcType=TIMESTAMP},
            </if>
            <if test="closeDt != null">
                close_dt = #{closeDt,jdbcType=TIMESTAMP},
            </if>
            <if test="clOrderNo != null">
                cl_order_no = #{clOrderNo,jdbcType=VARCHAR},
            </if>
            <if test="clEleTotalAmount != null">
                cl_ele_total_amount = #{clEleTotalAmount,jdbcType=FLOAT},
            </if>
            <if test="clWaterRemainUser != null">
                cl_water_remain_user = #{clWaterRemainUser,jdbcType=FLOAT},
            </if>
            <if test="clThisEle != null">
                cl_this_ele = #{clThisEle,jdbcType=FLOAT},
            </if>
        </set>
        where id = #{id,jdbcType=BIGINT}
    </update>
    <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveHistory">
        <!--@mbg.generated-->
        update rm_open_close_valve_history
        set client_id            = #{clientId,jdbcType=BIGINT},
            client_name          = #{clientName,jdbcType=VARCHAR},
            controller_id        = #{controllerId,jdbcType=BIGINT},
            intake_id            = #{intakeId,jdbcType=BIGINT},
            rtu_addr             = #{rtuAddr,jdbcType=VARCHAR},
            op_dt                = #{opDt,jdbcType=TIMESTAMP},
            op_type              = #{opType,jdbcType=TINYINT},
            op_total_amount      = #{opTotalAmount,jdbcType=DOUBLE},
            op_ic_card_no        = #{opIcCardNo,jdbcType=VARCHAR},
            op_ic_card_addr      = #{opIcCardAddr,jdbcType=VARCHAR},
            op_remain_money      = #{opRemainMoney,jdbcType=DOUBLE},
            open_dt              = #{openDt,jdbcType=TIMESTAMP},
            op_order_no          = #{opOrderNo,jdbcType=VARCHAR},
            op_ele_total_amount  = #{opEleTotalAmount,jdbcType=FLOAT},
            op_water_remain_user = #{opWaterRemainUser,jdbcType=FLOAT},
            cl_dt                = #{clDt,jdbcType=TIMESTAMP},
            cl_type              = #{clType,jdbcType=TINYINT},
            cl_total_amount      = #{clTotalAmount,jdbcType=DOUBLE},
            cl_ic_card_no        = #{clIcCardNo,jdbcType=VARCHAR},
            cl_ic_card_addr      = #{clIcCardAddr,jdbcType=VARCHAR},
            cl_remain_money      = #{clRemainMoney,jdbcType=DOUBLE},
            cl_this_amount       = #{clThisAmount,jdbcType=DOUBLE},
            cl_this_money        = #{clThisMoney,jdbcType=DOUBLE},
            cl_this_time         = #{clThisTime,jdbcType=INTEGER},
            cl_open_dt           = #{clOpenDt,jdbcType=TIMESTAMP},
            close_dt             = #{closeDt,jdbcType=TIMESTAMP},
            cl_order_no          = #{clOrderNo,jdbcType=VARCHAR},
            cl_ele_total_amount  = #{clEleTotalAmount,jdbcType=FLOAT},
            cl_water_remain_user = #{clWaterRemainUser,jdbcType=FLOAT},
            cl_this_ele          = #{clThisEle,jdbcType=FLOAT}
        where id = #{id,jdbcType=BIGINT}
    </update>
    <!--根据指定条件获取开关阀报历史记录数量-->
    <select id="getOpenCloseValveReportsCount_history" resultType="java.lang.Long">
        SELECT COUNT(*) AS recordCount
        FROM rm_open_close_valve_history oh
                 INNER JOIN pr_intake inta ON inta.id = oh.intake_id
        <where>
            <if test="intakeId != null and intakeId > 0">
                AND oh.intake_id = #{intakeId}
            </if>
            <if test="intakeNum != null and intakeNum != ''">
                AND inta.name LIKE CONCAT('%', #{intakeNum}, '%')
            </if>
            <if test="clientName != null and clientName != ''">
                AND oh.client_name LIKE CONCAT('%', #{clientName}, '%')
            </if>
            <if test="rtuAddr != null and rtuAddr != ''">
                AND oh.rtu_addr LIKE CONCAT('%', #{rtuAddr}, '%')
            </if>
            <if test="timeStart_open != null and timeStart_open != '' and timeStop_open != null and timeStop_open != ''">
                AND oh.op_dt BETWEEN #{timeStart_open} AND #{timeStop_open}
            </if>
            <if test="timeStart_close != null and timeStart_close != '' and timeStop_close != null and timeStop_close != ''">
                AND oh.cl_dt BETWEEN #{timeStart_close} AND #{timeStop_close}
            </if>
        </where>
    </select>
    <!--根据指定条件获取开关阀报历史记录-->
    <select id="getOpenCloseValveReports_history" resultType="com.dy.pipIrrGlobal.voRm.VoOpenCloseValve">
        SELECT oh.intake_id            AS intakeId,
               inta.name               AS intakenum,
               oh.rtu_addr             AS rtuAddr,
               oh.client_name          AS clientName,
               oh.op_ic_card_no        AS openIcNum,
               oh.op_ic_card_addr      AS openIcAddr,
               oh.op_dt                AS openTime,
               CASE
                   WHEN oh.op_type = 1 THEN '刷卡开阀'
                   WHEN oh.op_type = 3 THEN '中心站开阀'
                   WHEN oh.op_type = 5 THEN '余额不足关阀'
                   WHEN oh.op_type = 8 THEN '用户远程开阀'
                   WHEN oh.op_type = 11 THEN '开关阀卡开阀'
                   ELSE '未知'
                   END                 AS openType,
               oh.op_order_no          AS openOrderNo,
               oh.op_total_amount      AS openTotalAmount,
               oh.op_remain_money      AS openRemainMoney,
               oh.op_water_remain_user AS openWaterRemain,
               oh.op_ele_total_amount  AS openEleTotalAmount,
               oh.cl_ic_card_no        AS closeIcNum,
               oh.cl_ic_card_addr      AS closeIcAddr,
               oh.cl_dt                AS closeTime,
               CASE
                   WHEN oh.cl_type = 2 THEN '刷卡关阀'
                   WHEN oh.cl_type = 4 THEN '中心站关阀'
                   WHEN oh.cl_type = 5 THEN '余额不足关阀'
                   WHEN oh.cl_type = 6 THEN '流量计故障关阀'
                   WHEN oh.cl_type = 7 THEN '紧急关闭'
                   WHEN oh.cl_type = 9 THEN '用户远程关阀'
                   WHEN oh.cl_type = 10 THEN '开关阀卡关阀'
                   WHEN oh.cl_type = 12 THEN '黑名单命令关阀'
                   WHEN oh.cl_type = 13 THEN '用户远程定时关阀'
                   WHEN oh.cl_type = 14 THEN '用户远程定量关阀'
                   ELSE '未知'
                   END                 AS closeType,
               oh.cl_this_amount       AS closeThisAmount,
               oh.cl_this_time         AS thisTime,
               oh.cl_this_money        AS thisMoney,
               oh.cl_remain_money      AS closeRemainMoney,
               oh.cl_total_amount      AS closeTotalAmount
        FROM rm_open_close_valve_history oh
                 INNER JOIN pr_intake inta ON inta.id = oh.intake_id
        <where>
            <if test="intakeId != null and intakeId > 0">
                AND oh.intake_id = #{intakeId}
            </if>
            <if test="intakeNum != null and intakeNum != ''">
                AND inta.name LIKE CONCAT('%', #{intakeNum}, '%')
            </if>
            <if test="clientName != null and clientName != ''">
                AND oh.client_name LIKE CONCAT('%', #{clientName}, '%')
            </if>
            <if test="rtuAddr != null and rtuAddr != ''">
                AND oh.rtu_addr LIKE CONCAT('%', #{rtuAddr}, '%')
            </if>
            <if test="timeStart_open != null and timeStart_open != '' and timeStop_open != null and timeStop_open != ''">
                AND oh.op_dt BETWEEN #{timeStart_open} AND #{timeStop_open}
            </if>
            <if test="timeStart_close != null and timeStart_close != '' and timeStop_close != null and timeStop_close != ''">
                AND oh.cl_dt BETWEEN #{timeStart_close} AND #{timeStop_close}
            </if>
        </where>
        ORDER BY oh.op_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>
    <!--获取指定时间段内从未开过阀的取水口数量-->
    <select id="getNeverOpenValveIntakesCount" resultType="java.lang.Long">
        SELECT COUNT(*) AS recordCount
        FROM pr_intake inta
                 INNER JOIN ba_block blo ON blo.id = inta.blockId
        WHERE inta.deleted = 0
          AND NOT EXISTS(SELECT *
                         FROM rm_open_close_valve_history
                         WHERE op_dt BETWEEN #{timeStart} AND #{timeStop}
                           AND intake_id = inta.id)
    </select>
    <!--获取指定时间段内从未开过阀的取水口-->
    <select id="getNeverOpenValveIntakes" resultType="com.dy.pipIrrGlobal.voSt.VoIntake">
        SELECT inta.id   AS intakeId,
               inta.name AS intakeNum,
               blo.name  AS blockName
        FROM pr_intake inta
                 INNER JOIN ba_block blo ON blo.id = inta.blockId
        WHERE inta.deleted = 0
          AND NOT EXISTS(SELECT *
                         FROM rm_open_close_valve_history
                         WHERE op_dt BETWEEN #{timeStart} AND #{timeStop}
                           AND intake_id = inta.id)
        ORDER BY inta.id
        <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="getOpenValveGtIntakesCount" resultType="java.lang.Long">
        select count(*)
        from (SELECT COUNT(*)  AS recordCount,
                     inta.id   AS intakeId,
                     inta.name AS intakeNum,
                     blo.name  AS blockName
              FROM pr_intake inta
                       LEFT JOIN (SELECT *
                                  FROM rm_open_close_valve_history
                                  WHERE op_dt BETWEEN #{timeStart} AND #{timeStop}) his ON his.intake_id = inta.id
                       INNER JOIN ba_block blo ON blo.id = inta.blockId
              WHERE inta.deleted = 0
              GROUP BY intakeId, intakeNum, blockName
              HAVING recordCount &gt; #{value}) a
    </select>
    <!--获取指定时间段内开阀次数超过指定值的取水口-->
    <select id="getOpenValveGtIntakes" resultType="com.dy.pipIrrGlobal.voSt.VoIntakeOpenCount">
        SELECT COUNT(*)  AS recordCount,
               inta.id   AS intakeId,
               inta.name AS intakeNum,
               blo.name  AS blockName
        FROM pr_intake inta
                 LEFT JOIN (SELECT *
                            FROM rm_open_close_valve_history
                            WHERE op_dt BETWEEN #{timeStart} AND #{timeStop}) his ON his.intake_id = inta.id
                 INNER JOIN ba_block blo ON blo.id = inta.blockId
        WHERE inta.deleted = 0
        GROUP BY intakeId, intakeNum, blockName
        HAVING recordCount &gt; #{value}
        <!--        ORDER BY inta.id-->
        <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="getOpenValveLtIntakesCount" resultType="java.lang.Long">
        select count(*)
        from (SELECT COUNT(*)  AS recordCount,
                     inta.id   AS intakeId,
                     inta.name AS intakeNum,
                     blo.name  AS blockName
              FROM pr_intake inta
                       LEFT JOIN (SELECT *
                                  FROM rm_open_close_valve_history
                                  WHERE op_dt BETWEEN #{timeStart} AND #{timeStop}) his ON his.intake_id = inta.id
                       INNER JOIN ba_block blo ON blo.id = inta.blockId
              WHERE inta.deleted = 0
              GROUP BY intakeId, intakeNum, blockName
              HAVING recordCount &lt; #{value}) a
    </select>
    <!--获取指定时间段内开阀次数低于指定值的取水口-->
    <select id="getOpenValveLtIntakes" resultType="com.dy.pipIrrGlobal.voSt.VoIntakeOpenCount">
        SELECT COUNT(*)  AS recordCount,
               inta.id   AS intakeId,
               inta.name AS intakeNum,
               blo.name  AS blockName
        FROM pr_intake inta
                 LEFT JOIN (SELECT *
                            FROM rm_open_close_valve_history
                            WHERE op_dt BETWEEN #{timeStart} AND #{timeStop}) his ON his.intake_id = inta.id
                 INNER JOIN ba_block blo ON blo.id = inta.blockId
        WHERE inta.deleted = 0
        GROUP BY intakeId, intakeNum, blockName
        HAVING recordCount &lt; #{value}
        <!--        ORDER BY inta.id-->
        <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="getLargeOpenCountClientsCount" resultType="java.lang.Long">
        SELECT COUNT(*) AS recordCount
        FROM se_client cli
        <where>
            <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and openCount != null">
                (SELECT COUNT(*)
                FROM rm_open_close_valve_history his
                WHERE his.client_id = cli.id
                AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) > #{openCount}
            </if>
        </where>
    </select>
    <!--获取指定时间段内开阀次数超过指定值的农户-->
    <select id="getLargeOpenCountClients" resultType="com.dy.pipIrrGlobal.voSt.VoClient">
        SELECT cli.id                                 AS clientId,
               cli.name                               AS clientName,
               cli.clientNum,
               CONCAT(cli.districtTitle, cli.address) AS address,
               cli.phone,
               cli.idCard,
                (SELECT COUNT(*)
                FROM rm_open_close_valve_history his
                <where>
                    his.client_id = cli.id
                    <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != ''">
                AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}
                    </if>
                </where>) AS openCount
        FROM se_client cli
        <where>
            <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and openCount != null">
               (SELECT COUNT(*)
               FROM rm_open_close_valve_history his
               WHERE his.client_id = cli.id
                 AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) > #{openCount}
            </if>
        </where>
        ORDER BY cli.id
        <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="getSmallOpenCountClientsCount" resultType="java.lang.Long">
        SELECT COUNT(*) AS recordCount
        FROM se_client cli
        <where>
            <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and openCount != null">
                (SELECT COUNT(*)
                FROM rm_open_close_valve_history his
                WHERE his.client_id = cli.id
                AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) &lt; #{openCount}
            </if>
        </where>
    </select>
    <!--获取指定时间段内开阀次数低于指定值的农户-->
    <select id="getSmallOpenCountClients" resultType="com.dy.pipIrrGlobal.voSt.VoClient">
        SELECT cli.id                                 AS clientId,
               cli.name                               AS clientName,
               cli.clientNum,
               CONCAT(cli.districtTitle, cli.address) AS address,
               cli.phone,
               cli.idCard,
                (SELECT COUNT(*)
                FROM rm_open_close_valve_history his
                <where>
                    his.client_id = cli.id
                    <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != ''">
                AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}
                    </if>
                </where>) AS openCount
        FROM se_client cli
        <where>
            <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and openCount != null">
                (SELECT COUNT(*)
                FROM rm_open_close_valve_history his
                WHERE his.client_id = cli.id
                AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) &lt; #{openCount}
            </if>
        </where>
        ORDER BY cli.id
        <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="getLargeWaterConsumptionClientsCount" resultType="java.lang.Long">
        SELECT COUNT(*) AS recordCount
        FROM se_client cli
        <where>
            <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and waterConsumption != null">
                (SELECT SUM(his.cl_this_amount)
                FROM rm_open_close_valve_history his
                WHERE his.client_id = cli.id
                AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) > #{waterConsumption}
            </if>
        </where>
    </select>
    <!--获取指定时间段内用水量超过指定值的农户-->
    <select id="getLargeWaterConsumptionClients" resultType="com.dy.pipIrrGlobal.voSt.VoClient">
        SELECT cli.id                                 AS clientId,
               cli.name                               AS clientName,
               cli.clientNum,
               CONCAT(cli.districtTitle, cli.address) AS address,
               cli.phone,
               cli.idCard,
                IFNULL((SELECT SUM(his.cl_this_amount)
                FROM rm_open_close_valve_history his
                <where>
                    his.client_id = cli.id
                    <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != ''">
                        AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}
                    </if>
                </where>
                ),0) AS waterConsumption
        FROM se_client cli
        <where>
            <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and waterConsumption != null">
                (SELECT SUM(his.cl_this_amount)
                FROM rm_open_close_valve_history his
                WHERE his.client_id = cli.id
                AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) > #{waterConsumption}
            </if>
        </where>
        ORDER BY cli.id
        <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="getLargeAmountSpentClientsCount" resultType="java.lang.Long">
        SELECT COUNT(*) AS recordCount
        FROM se_client cli
        <where>
        <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and amountSpent != null">
               (SELECT SUM(his.cl_this_money)
               FROM rm_open_close_valve_history his
               WHERE his.client_id = cli.id
                 AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) > #{amountSpent}
        </if>
        </where>
    </select>
    <!--获取指定时间段内消费金额超过指定值的农户-->
    <select id="getLargeAmountSpentClients" resultType="com.dy.pipIrrGlobal.voSt.VoClient">
        SELECT cli.id                                 AS clientId,
               cli.name                               AS clientName,
               cli.clientNum,
               CONCAT(cli.districtTitle, cli.address) AS address,
               cli.phone,
               cli.idCard,
                IFNULL((SELECT SUM(his.cl_this_money)
                FROM rm_open_close_valve_history his
                <where>
                    his.client_id = cli.id
                    <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != ''">
                        AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}
                    </if>
                </where>
                ),0) AS amountSpent
        FROM se_client cli
        <where>
            <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and amountSpent != null">
                (SELECT SUM(his.cl_this_money)
                FROM rm_open_close_valve_history his
                WHERE his.client_id = cli.id
                AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) > #{amountSpent}
            </if>
        </where>
        ORDER BY cli.id
        <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="getLargeWaterDurationClientsCount" resultType="java.lang.Long">
        SELECT COUNT(*) AS recordCount
        FROM se_client cli
        <where>
        <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and waterDuration != null">
               (SELECT SUM(his.cl_this_time)
               FROM rm_open_close_valve_history his
               WHERE his.client_id = cli.id
                 AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) > #{waterDuration}
        </if>
        </where>
    </select>
    <!--获取指定时间段内用水时长超过指定值的农户-->
    <select id="getLargeWaterDurationClients" resultType="com.dy.pipIrrGlobal.voSt.VoClient">
        SELECT cli.id                                 AS clientId,
               cli.name                               AS clientName,
               cli.clientNum,
               CONCAT(cli.districtTitle, cli.address) AS address,
               cli.phone,
               cli.idCard,
                IFNULL((SELECT SUM(his.cl_this_time)
                FROM rm_open_close_valve_history his
                <where>
                    his.client_id = cli.id
                    <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != ''">
                        AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}
                    </if>
                </where>
                ),0) AS waterDuration
        FROM se_client cli
        <where>
            <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and waterDuration != null">
                (SELECT SUM(his.cl_this_time)
                FROM rm_open_close_valve_history his
                WHERE his.client_id = cli.id
                AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) > #{waterDuration}
            </if>
        </where>
        ORDER BY cli.id
        <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="getUseWaterGtValueIntakesCount" resultType="java.lang.Long">
        select
            count(*)
        from
            (        SELECT
        inta.id AS intakeId,
        inta.NAME AS intakeNum,
        blo.NAME AS blockName ,
        IFNULL(SUM(rocvh.cl_this_amount),0) AS value
        FROM
        pr_intake inta
        INNER JOIN ba_block blo ON blo.id = inta.blockId
        LEFT JOIN rm_open_close_valve_history rocvh ON rocvh.intake_id = inta.id
        WHERE rocvh.op_dt &gt;= #{timeStart} AND rocvh.cl_dt &lt;= #{timeStop} AND inta.deleted = 0
        GROUP BY inta.id
        HAVING IFNULL(SUM(rocvh.cl_this_amount),0) &gt; #{value}) c
    </select>
    <!--指定时间段用水量超过指定值的取水口-->
    <select id="getUseWaterGtValueIntakes" resultType="com.dy.pipIrrGlobal.voSt.VoIntakeAccumulateAmount">
        SELECT
            inta.id AS intakeId,
            inta.NAME AS intakeNum,
            blo.NAME AS blockName ,
        IFNULL(SUM(rocvh.cl_this_amount),0) AS value
        FROM
            pr_intake inta
            INNER JOIN ba_block blo ON blo.id = inta.blockId
            LEFT JOIN rm_open_close_valve_history rocvh ON rocvh.intake_id = inta.id
        WHERE rocvh.op_dt &gt;= #{timeStart} AND rocvh.cl_dt &lt;= #{timeStop} AND inta.deleted = 0
        GROUP BY inta.id
        HAVING IFNULL(SUM(rocvh.cl_this_amount),0) &gt; #{value}
        ORDER BY inta.id
        <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="getExpenseGtValueIntakesCount" resultType="java.lang.Long">
        select
        count(*)
        from
        (        SELECT
        inta.id AS intakeId,
        inta.NAME AS intakeNum,
        blo.NAME AS blockName ,
        IFNULL(SUM(rocvh.cl_this_money),0) AS value
        FROM
        pr_intake inta
        INNER JOIN ba_block blo ON blo.id = inta.blockId
        LEFT JOIN rm_open_close_valve_history rocvh ON rocvh.intake_id = inta.id
        WHERE rocvh.op_dt &gt;= #{timeStart} AND rocvh.cl_dt &lt;= #{timeStop} AND inta.deleted = 0
        GROUP BY inta.id
        HAVING IFNULL(SUM(rocvh.cl_this_money),0) &gt; #{value}) c
    </select>
    <!--指定时间段内消费金额超过指定值的取水口-->
    <select id="getExpenseGtValueIntakes" resultType="com.dy.pipIrrGlobal.voSt.VoIntakeAccumulateAmount">
        SELECT
        inta.id AS intakeId,
        inta.NAME AS intakeNum,
        blo.NAME AS blockName ,
        IFNULL(SUM(rocvh.cl_this_money),0) AS value
        FROM
        pr_intake inta
        INNER JOIN ba_block blo ON blo.id = inta.blockId
        LEFT JOIN rm_open_close_valve_history rocvh ON rocvh.intake_id = inta.id
        WHERE rocvh.op_dt &gt;= #{timeStart} AND rocvh.cl_dt &lt;= #{timeStop} AND inta.deleted = 0
        GROUP BY inta.id
        HAVING IFNULL(SUM(rocvh.cl_this_money),0) &gt; #{value}
        ORDER BY inta.id
        <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="getUseWaterDurationGtValueIntakesCount" resultType="java.lang.Long">
        select
        count(*)
        from
        (        SELECT
        inta.id AS intakeId,
        inta.NAME AS intakeNum,
        blo.NAME AS blockName ,
        IFNULL(SUM(rocvh.cl_this_time),0) AS recordCount
        FROM
        pr_intake inta
        INNER JOIN ba_block blo ON blo.id = inta.blockId
        LEFT JOIN rm_open_close_valve_history rocvh ON rocvh.intake_id = inta.id
        WHERE rocvh.op_dt &gt;= #{timeStart} AND rocvh.cl_dt &lt;= #{timeStop} AND inta.deleted = 0
        GROUP BY inta.id
        HAVING IFNULL(SUM(rocvh.cl_this_time),0) &gt; #{value}) c
    </select>
    <!--指定时间段内用水时长超过指定值的取水口-->
    <select id="getUseWaterDurationGtValueIntakes" resultType="com.dy.pipIrrGlobal.voSt.VoIntakeOpenCount">
        SELECT
        inta.id AS intakeId,
        inta.NAME AS intakeNum,
        blo.NAME AS blockName ,
        IFNULL(SUM(rocvh.cl_this_time),0) AS recordCount
        FROM
        pr_intake inta
        INNER JOIN ba_block blo ON blo.id = inta.blockId
        LEFT JOIN rm_open_close_valve_history rocvh ON rocvh.intake_id = inta.id
        WHERE rocvh.op_dt &gt;= #{timeStart} AND rocvh.cl_dt &lt;= #{timeStop} AND inta.deleted = 0
        GROUP BY inta.id
        HAVING IFNULL(SUM(rocvh.cl_this_time),0) &gt; #{value}
        ORDER BY inta.id
        <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="getHaveOpenNoCloseIntakesCount" resultType="java.lang.Long">
        select count(*) from
            (
        SELECT
        inta.id AS intakeId,
        inta.NAME AS intakeNum,
        blo.NAME AS blockName
        FROM
        pr_intake inta
        INNER JOIN ba_block blo ON blo.id = inta.blockId
        inner JOIN rm_open_close_valve_history rocvh ON rocvh.intake_id = inta.id
        WHERE rocvh.op_dt BETWEEN #{timeStart} AND  #{timeStop} AND rocvh.cl_dt IS NULL AND inta.deleted = 0
        GROUP BY inta.id) c
    </select>
    <!--指定时间段 有开阀 无关阀的取水口-->
    <select id="getHaveOpenNoCloseIntakes" resultType="com.dy.pipIrrGlobal.voSt.VoIntake">
        SELECT
            inta.id AS intakeId,
            inta.NAME AS intakeNum,
            blo.NAME AS blockName
        FROM
            pr_intake inta
                INNER JOIN ba_block blo ON blo.id = inta.blockId
                inner JOIN rm_open_close_valve_history rocvh ON rocvh.intake_id = inta.id
        WHERE rocvh.op_dt BETWEEN #{timeStart} AND  #{timeStop} AND rocvh.cl_dt IS NULL AND inta.deleted = 0
        GROUP BY inta.id
        ORDER BY inta.id
        <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="getNoOpenHaveCloseIntakesCount" resultType="java.lang.Long">
        select count(*) from
        (
        SELECT
        inta.id AS intakeId,
        inta.NAME AS intakeNum,
        blo.NAME AS blockName
        FROM
        pr_intake inta
        INNER JOIN ba_block blo ON blo.id = inta.blockId
        inner JOIN rm_open_close_valve_history rocvh ON rocvh.intake_id = inta.id
        WHERE rocvh.cl_dt BETWEEN #{timeStart} AND  #{timeStop} AND rocvh.op_dt IS NULL AND inta.deleted = 0
        GROUP BY inta.id) c
    </select>
    <!--指定时间段 无开阀 有关阀的取水口-->
    <select id="getNoOpenHaveCloseIntakes" resultType="com.dy.pipIrrGlobal.voSt.VoIntake">
        SELECT
        inta.id AS intakeId,
        inta.NAME AS intakeNum,
        blo.NAME AS blockName
        FROM
        pr_intake inta
        INNER JOIN ba_block blo ON blo.id = inta.blockId
        inner JOIN rm_open_close_valve_history rocvh ON rocvh.intake_id = inta.id
        WHERE rocvh.cl_dt BETWEEN #{timeStart} AND  #{timeStop} AND rocvh.op_dt IS NULL AND inta.deleted = 0
        GROUP BY inta.id
        ORDER BY inta.id
        <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="getExpendsCount" resultType="java.lang.Long">
        SELECT COUNT(*) AS recordCount
        FROM rm_open_close_valve_history och
            INNER JOIN se_client cli ON cli.id = och.client_id
            INNER JOIN pr_intake inta ON inta.id = och.intake_id
        <where>
            AND och.cl_ic_card_no IS NOT NULL AND och.client_id IS NOT NULL
            <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 och.cl_ic_card_no like CONCAT('%',#{cardNum},'%')
            </if>
        </where>
    </select>
    <!--获取水卡消费记录,管理平台使用-->
    <select id="getExpends" resultType="com.dy.pipIrrGlobal.voRm.VoExpend">
        SELECT
            cli.name AS clientName,
            cli.clientNum,
            och.cl_ic_card_no AS cardNum,
            inta.name AS intakeName,
            och.rtu_addr AS rtuAddr,
            och.cl_this_money AS moneyAmount,
            och.cl_this_amount AS waterAmount,
            och.cl_this_time AS duration,
            och.cl_dt AS operateTime
        FROM rm_open_close_valve_history och
            INNER JOIN se_client cli ON cli.id = och.client_id
            INNER JOIN pr_intake inta ON inta.id = och.intake_id
        <where>
            AND och.cl_ic_card_no IS NOT NULL AND och.client_id IS NOT NULL
            <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 och.cl_ic_card_no like CONCAT('%',#{cardNum},'%')
            </if>
        </where>
        ORDER BY och.cl_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>
</mapper>