liurunyu
2024-08-06 f6962c0ede2f18b8aaeaf69f84b39d459a5a59f4
Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV
2 文件已复制
1 文件已重命名
9个文件已添加
11个文件已修改
3339 ■■■■■ 已修改文件
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeWorkOrderMapper.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOnHourReportLastMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveHistoryMapper.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveLastMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeWorkOrder.java 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoClient.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoCountOfCloseType.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoCountOfOpenType.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeWorkOrderMapper.xml 186 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOnHourReportLastMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveHistoryMapper.xml 1322 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveLastMapper.xml 1097 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/ClientCtrl.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/ClientSv.java 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/qo/OpenCountQO.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/IntakeSv.java 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/IntkeCtrl.java 81 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/CloseTypeQo.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/CommonQO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/IntakeValueQO.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/OpenTypeQO.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/SignalIntensityQO.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeWorkOrderMapper.java
New file
@@ -0,0 +1,26 @@
package com.dy.pipIrrGlobal.daoOp;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dy.pipIrrGlobal.pojoOp.OpeWorkOrder;
import org.apache.ibatis.annotations.Mapper;
/**
 * @author :WuZeYu
 * @Date :2024/8/6  8:47
 * @LastEditTime :2024/8/6  8:47
 * @Description
 */
@Mapper
public interface OpeWorkOrderMapper extends BaseMapper<OpeWorkOrder> {
    int deleteByPrimaryKey(Long id);
    int insert(OpeWorkOrder record);
    int insertSelective(OpeWorkOrder record);
    OpeWorkOrder selectByPrimaryKey(Long id);
    int updateByPrimaryKeySelective(OpeWorkOrder record);
    int updateByPrimaryKey(OpeWorkOrder record);
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOnHourReportLastMapper.java
@@ -138,4 +138,5 @@
     * @return
     */
    List<VoSignalIntensity> getSpecifiedSignalIntakes(Map<?, ?> params);
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveHistoryMapper.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveHistory;
import com.dy.pipIrrGlobal.voRm.VoOpenCloseValve;
import com.dy.pipIrrGlobal.voSt.VoClient;
import com.dy.pipIrrGlobal.voSt.VoIntake;
import com.dy.pipIrrGlobal.voSt.VoIntakeOpenCount;
import org.apache.ibatis.annotations.Mapper;
@@ -121,4 +122,32 @@
     * @return
     */
    List<VoIntakeOpenCount> getOpenValveLtIntakes(Map<String, Object> params);
    /**
     * 获取指定时间段内开阀次数超过指定值的农户数量
     * @param params
     * @return
     */
    Long getLargeOpenCountClientsCount(Map<String, Object> params);
    /**
     * 获取指定时间段内开阀次数超过指定值的农户
     * @param params
     * @return
     */
    List<VoClient> getLargeOpenCountClients(Map<String, Object> params);
    /**
     * 获取指定时间段内开阀次数低于指定值的农户数量
     * @param params
     * @return
     */
    Long getSmallOpenCountClientsCount(Map<String, Object> params);
    /**
     * 获取指定时间段内开阀次数低于指定值的农户
     * @param params
     * @return
     */
    List<VoClient> getSmallOpenCountClients(Map<String, Object> params);
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveLastMapper.java
@@ -84,4 +84,18 @@
     * @return
     */
    List<VoOpenCloseValve> getOpenCloseValveReports_last(Map<?, ?> params);
    /**
     * 根据开阀类型获取操作次数
     * @param params
     * @return
     */
    Integer getCountByOpenType(Map<?, ?> params);
    /**
     * 根据关阀类型获取操作次数
     * @param params
     * @return
     */
    Integer getCountByCloseType(Map<?, ?> params);
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeWorkOrder.java
New file
@@ -0,0 +1,109 @@
package com.dy.pipIrrGlobal.pojoOp;
import com.alibaba.fastjson2.annotation.JSONField;
import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dy.common.po.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
 * @author :WuZeYu
 * @Date :2024/8/6  8:47
 * @LastEditTime :2024/8/6  8:47
 * @Description
 */
/**
 * 工单表
 */
@TableName(value="ope_feedback", autoResultMap = true)
@Data
@ToString
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Schema(name = "工单表")
public class OpeWorkOrder implements BaseEntity {
    /**
    * 主键
    */
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    @TableId(type = IdType.INPUT)
    private Long id;
    /**
    * 派单人ID
    */
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    @NotNull
    private Long dispatcher;
    /**
    * 巡检员ID
    */
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    @NotNull
    private Long inspector;
    /**
    * 任务类型;1-漏损处理,2-报警处理,3-反馈处理,4-其他
    */
    private Byte taskType;
    /**
    * 任务内容
    */
    @NotBlank
    private String taskContent;
    /**
    * 完成标准
    */
    private String completeCriteria;
    /**
    * 要求完成时间;精确到分
    */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date deadLine;
    /**
    * 派单时间
    */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date dispatchTime;
    /**
    * 处理结果;1-完成,2-未完成
    */
    private Byte taskResult;
    /**
    * 结果照片
    */
    private String photos;
    /**
    * 完工时间
    */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date completeTime;
    /**
    * 逻辑删除标识;未删除为0,已删除为删除时间
    */
    private Long deleted;
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoClient.java
New file
@@ -0,0 +1,48 @@
package com.dy.pipIrrGlobal.voSt;
import com.alibaba.fastjson2.annotation.JSONField;
import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
import lombok.Data;
/**
 * @author ZhuBaoMin
 * @date 2024-08-06 9:45
 * @LastEditTime 2024-08-06 9:45
 * @Description 农户视图对象
 */
@Data
public class VoClient {
    private static final long serialVersionUID = 202408060947001L;
    /**
     * 农户ID
     */
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    private Long clientId;
    /**
     * 农户姓名
     */
    private String clientName;
    /**
     * 农户编号
     */
    private String clientNum;
    /**
     * 农户地址
     */
    private String address;
    /**
     * 手机号
     */
    private String phone;
    /**
     * 身份证号
     */
    private String idCard;
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoCountOfCloseType.java
New file
@@ -0,0 +1,24 @@
package com.dy.pipIrrGlobal.voSt;
import lombok.Data;
/**
 * @author ZhuBaoMin
 * @date 2024-08-05 16:11
 * @LastEditTime 2024-08-05 16:11
 * @Description 关阀类型次数统计视图
 */
@Data
public class VoCountOfCloseType {
    /**
     * 关阀类型名称
     */
    private String closeTypeName;
    /**
     * 关阀类型次数
     */
    private Integer closeTypeCount;
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoCountOfOpenType.java
New file
@@ -0,0 +1,24 @@
package com.dy.pipIrrGlobal.voSt;
import lombok.Data;
/**
 * @author ZhuBaoMin
 * @date 2024-08-05 16:03
 * @LastEditTime 2024-08-05 16:03
 * @Description 开阀类型次数统计视图
 */
@Data
public class VoCountOfOpenType {
    /**
     * 开阀方类型名称
     */
    private String openTypeName;
    /**
     * 开阀类型次数
     */
    private Integer openTypeCount;
}
pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
@@ -72,7 +72,7 @@
pipIrr:
    global:
        dev: flase   #是否开发阶段,true或false
        dev: false   #是否开发阶段,true或false
        dsName: ym  #开发阶段,设置临时的数据库名称
    mw:
        webPort: 8070
pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeWorkOrderMapper.xml
New file
@@ -0,0 +1,186 @@
<?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.daoOp.OpeWorkOrderMapper">
  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoOp.OpeWorkOrder">
    <!--@mbg.generated-->
    <!--@Table ope_work_order-->
    <id column="id" jdbcType="BIGINT" property="id" />
    <result column="dispatcher" jdbcType="BIGINT" property="dispatcher" />
    <result column="inspector" jdbcType="BIGINT" property="inspector" />
    <result column="task_type" jdbcType="TINYINT" property="taskType" />
    <result column="task_content" jdbcType="VARCHAR" property="taskContent" />
    <result column="complete_criteria" jdbcType="VARCHAR" property="completeCriteria" />
    <result column="dead_line" jdbcType="TIMESTAMP" property="deadLine" />
    <result column="dispatch_time" jdbcType="TIMESTAMP" property="dispatchTime" />
    <result column="task_result" jdbcType="TINYINT" property="taskResult" />
    <result column="photos" jdbcType="VARCHAR" property="photos" />
    <result column="complete_time" jdbcType="TIMESTAMP" property="completeTime" />
    <result column="deleted" jdbcType="BIGINT" property="deleted" />
  </resultMap>
  <sql id="Base_Column_List">
    <!--@mbg.generated-->
    id, dispatcher, inspector, task_type, task_content, complete_criteria, dead_line,
    dispatch_time, task_result, photos, complete_time, deleted
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
    <!--@mbg.generated-->
    select
    <include refid="Base_Column_List" />
    from ope_work_order
    where id = #{id,jdbcType=BIGINT}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
    <!--@mbg.generated-->
    delete from ope_work_order
    where id = #{id,jdbcType=BIGINT}
  </delete>
  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoOp.OpeWorkOrder">
    <!--@mbg.generated-->
    insert into ope_work_order (id, dispatcher, inspector,
      task_type, task_content, complete_criteria,
      dead_line, dispatch_time, task_result,
      photos, complete_time, deleted
      )
    values (#{id,jdbcType=BIGINT}, #{dispatcher,jdbcType=BIGINT}, #{inspector,jdbcType=BIGINT},
      #{taskType,jdbcType=TINYINT}, #{taskContent,jdbcType=VARCHAR}, #{completeCriteria,jdbcType=VARCHAR},
      #{deadLine,jdbcType=TIMESTAMP}, #{dispatchTime,jdbcType=TIMESTAMP}, #{taskResult,jdbcType=TINYINT},
      #{photos,jdbcType=VARCHAR}, #{completeTime,jdbcType=TIMESTAMP}, #{deleted,jdbcType=BIGINT}
      )
  </insert>
  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoOp.OpeWorkOrder">
    <!--@mbg.generated-->
    insert into ope_work_order
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="id != null">
        id,
      </if>
      <if test="dispatcher != null">
        dispatcher,
      </if>
      <if test="inspector != null">
        inspector,
      </if>
      <if test="taskType != null">
        task_type,
      </if>
      <if test="taskContent != null">
        task_content,
      </if>
      <if test="completeCriteria != null">
        complete_criteria,
      </if>
      <if test="deadLine != null">
        dead_line,
      </if>
      <if test="dispatchTime != null">
        dispatch_time,
      </if>
      <if test="taskResult != null">
        task_result,
      </if>
      <if test="photos != null">
        photos,
      </if>
      <if test="completeTime != null">
        complete_time,
      </if>
      <if test="deleted != null">
        deleted,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="id != null">
        #{id,jdbcType=BIGINT},
      </if>
      <if test="dispatcher != null">
        #{dispatcher,jdbcType=BIGINT},
      </if>
      <if test="inspector != null">
        #{inspector,jdbcType=BIGINT},
      </if>
      <if test="taskType != null">
        #{taskType,jdbcType=TINYINT},
      </if>
      <if test="taskContent != null">
        #{taskContent,jdbcType=VARCHAR},
      </if>
      <if test="completeCriteria != null">
        #{completeCriteria,jdbcType=VARCHAR},
      </if>
      <if test="deadLine != null">
        #{deadLine,jdbcType=TIMESTAMP},
      </if>
      <if test="dispatchTime != null">
        #{dispatchTime,jdbcType=TIMESTAMP},
      </if>
      <if test="taskResult != null">
        #{taskResult,jdbcType=TINYINT},
      </if>
      <if test="photos != null">
        #{photos,jdbcType=VARCHAR},
      </if>
      <if test="completeTime != null">
        #{completeTime,jdbcType=TIMESTAMP},
      </if>
      <if test="deleted != null">
        #{deleted,jdbcType=BIGINT},
      </if>
    </trim>
  </insert>
  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoOp.OpeWorkOrder">
    <!--@mbg.generated-->
    update ope_work_order
    <set>
      <if test="dispatcher != null">
        dispatcher = #{dispatcher,jdbcType=BIGINT},
      </if>
      <if test="inspector != null">
        inspector = #{inspector,jdbcType=BIGINT},
      </if>
      <if test="taskType != null">
        task_type = #{taskType,jdbcType=TINYINT},
      </if>
      <if test="taskContent != null">
        task_content = #{taskContent,jdbcType=VARCHAR},
      </if>
      <if test="completeCriteria != null">
        complete_criteria = #{completeCriteria,jdbcType=VARCHAR},
      </if>
      <if test="deadLine != null">
        dead_line = #{deadLine,jdbcType=TIMESTAMP},
      </if>
      <if test="dispatchTime != null">
        dispatch_time = #{dispatchTime,jdbcType=TIMESTAMP},
      </if>
      <if test="taskResult != null">
        task_result = #{taskResult,jdbcType=TINYINT},
      </if>
      <if test="photos != null">
        photos = #{photos,jdbcType=VARCHAR},
      </if>
      <if test="completeTime != null">
        complete_time = #{completeTime,jdbcType=TIMESTAMP},
      </if>
      <if test="deleted != null">
        deleted = #{deleted,jdbcType=BIGINT},
      </if>
    </set>
    where id = #{id,jdbcType=BIGINT}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoOp.OpeWorkOrder">
    <!--@mbg.generated-->
    update ope_work_order
    set dispatcher = #{dispatcher,jdbcType=BIGINT},
      inspector = #{inspector,jdbcType=BIGINT},
      task_type = #{taskType,jdbcType=TINYINT},
      task_content = #{taskContent,jdbcType=VARCHAR},
      complete_criteria = #{completeCriteria,jdbcType=VARCHAR},
      dead_line = #{deadLine,jdbcType=TIMESTAMP},
      dispatch_time = #{dispatchTime,jdbcType=TIMESTAMP},
      task_result = #{taskResult,jdbcType=TINYINT},
      photos = #{photos,jdbcType=VARCHAR},
      complete_time = #{completeTime,jdbcType=TIMESTAMP},
      deleted = #{deleted,jdbcType=BIGINT}
    where id = #{id,jdbcType=BIGINT}
  </update>
</mapper>
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOnHourReportLastMapper.xml
@@ -417,4 +417,5 @@
            </if>
        </trim>
    </select>
</mapper>
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveHistoryMapper.xml
@@ -1,603 +1,789 @@
<?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="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, 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
  </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">
    <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="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 = "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 = "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)
        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>
<!--获取指定时间段内从未开过阀的取水口-->
  <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>
    <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="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="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="rtuAddr != null and rtuAddr != ''">
                AND oh.rtu_addr LIKE CONCAT('%', #{rtuAddr}, '%')
            </if>
            <if test="timeStart_open != null and timeStop_open != null">
                AND oh.op_dt BETWEEN #{timeStart_open} AND #{timeStop_open}
            </if>
            <if test="timeStart_close != null and timeStop_close != null">
                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="rtuAddr != null and rtuAddr != ''">
                AND oh.rtu_addr LIKE CONCAT('%', #{rtuAddr}, '%')
            </if>
            <if test="timeStart_open != null and timeStop_open != null">
                AND oh.op_dt BETWEEN #{timeStart_open} AND #{timeStop_open}
            </if>
            <if test="timeStart_close != null and timeStop_close != null">
                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="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="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 (SELECT COUNT(*)
               FROM rm_open_close_valve_history his
               WHERE his.client_id = cli.id
                 AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) > #{openCount}
    </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
        FROM se_client cli
        WHERE (SELECT COUNT(*)
               FROM rm_open_close_valve_history his
               WHERE his.client_id = cli.id
                 AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) > #{openCount}
        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 (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}
    </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
        FROM se_client cli
        WHERE (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}
        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>
</mapper>
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveLastMapper.xml
@@ -1,527 +1,644 @@
<?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.RmOpenCloseValveLastMapper">
  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveLast">
    <!--@mbg.generated-->
    <!--@Table rm_open_close_valve_last-->
    <id column="id" jdbcType="BIGINT" property="id" />
    <result column="last_history_id" jdbcType="BIGINT" property="lastHistoryId" />
    <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, last_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
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
    <!--@mbg.generated-->
    select
    <include refid="Base_Column_List" />
    from rm_open_close_valve_last
    where id = #{id,jdbcType=BIGINT}
  </select>
  <select id="selectByIntakeId" parameterType="java.lang.Long" resultMap="BaseResultMap">
    <!--@mbg.generated-->
    select
    <include refid="Base_Column_List" />
    from rm_open_close_valve_last
    where intake_id = #{intakeId,jdbcType=BIGINT}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
    <!--@mbg.generated-->
    delete from rm_open_close_valve_last
    where id = #{id,jdbcType=BIGINT}
  </delete>
  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveLast">
    <!--@mbg.generated-->
    insert into rm_open_close_valve_last (id, last_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}, #{lastHistoryId,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.RmOpenCloseValveLast">
    <!--@mbg.generated-->
    insert into rm_open_close_valve_last
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="id != null">
    <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveLast">
        <!--@mbg.generated-->
        <!--@Table rm_open_close_valve_last-->
        <id column="id" jdbcType="BIGINT" property="id"/>
        <result column="last_history_id" jdbcType="BIGINT" property="lastHistoryId"/>
        <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="lastHistoryId != null">
        last_history_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="lastHistoryId != null">
        #{lastHistoryId,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.RmOpenCloseValveLast">
    <!--@mbg.generated-->
    update rm_open_close_valve_last
    <set>
      <if test="lastHistoryId != null">
        last_history_id = #{lastHistoryId,jdbcType=BIGINT},
      </if>
      <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.RmOpenCloseValveLast">
    <!--@mbg.generated-->
    update rm_open_close_valve_last
    set last_history_id = #{lastHistoryId,jdbcType=BIGINT},
      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>
        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_last
        where id = #{id,jdbcType=BIGINT}
    </select>
    <select id="selectByIntakeId" parameterType="java.lang.Long" resultMap="BaseResultMap">
        <!--@mbg.generated-->
        select
        <include refid="Base_Column_List"/>
        from rm_open_close_valve_last
        where intake_id = #{intakeId,jdbcType=BIGINT}
    </select>
    <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
        <!--@mbg.generated-->
        delete
        from rm_open_close_valve_last
        where id = #{id,jdbcType=BIGINT}
    </delete>
    <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveLast">
        <!--@mbg.generated-->
        insert into rm_open_close_valve_last (id, last_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}, #{lastHistoryId,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.RmOpenCloseValveLast">
        <!--@mbg.generated-->
        insert into rm_open_close_valve_last
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">
                id,
            </if>
            <if test="lastHistoryId != null">
                last_history_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="lastHistoryId != null">
                #{lastHistoryId,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.RmOpenCloseValveLast">
        <!--@mbg.generated-->
        update rm_open_close_valve_last
        <set>
            <if test="lastHistoryId != null">
                last_history_id = #{lastHistoryId,jdbcType=BIGINT},
            </if>
            <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.RmOpenCloseValveLast">
        <!--@mbg.generated-->
        update rm_open_close_valve_last
        set last_history_id      = #{lastHistoryId,jdbcType=BIGINT},
            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_last" resultType="java.lang.Long">
    SELECT
        COUNT(*) AS recordCount
    FROM rm_open_close_valve_last 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 = "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="getOpenCloseValveReportsCount_last" resultType="java.lang.Long">
        SELECT COUNT(*) AS recordCount
        FROM rm_open_close_valve_last 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="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_last" 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_last 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 = "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="getOpenCloseValveReports_last" 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_last 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="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="getOpenCloseValveReports_last" 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_last 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="rtuAddr != null and rtuAddr != ''">
                AND oh.rtu_addr LIKE CONCAT('%', #{rtuAddr}, '%')
            </if>
            <if test="timeStart_open != null and timeStop_open != null">
                AND oh.op_dt BETWEEN #{timeStart_open} AND #{timeStop_open}
            </if>
            <if test="timeStart_close != null and timeStop_close != null">
                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="getCountByOpenType" resultType="java.lang.Integer">
        SELECT COUNT(*) AS recordCount
        FROM rm_open_close_valve_history
        <where>
            AND op_type = #{openType}
            <if test="timeStart != null and timeStop != null">
                AND op_dt BETWEEN #{timeStart} AND #{timeStop}
            </if>
        </where>
    </select>
    <!--根据关阀方式获取操作次数-->
    <select id="getCountByCloseType" resultType="java.lang.Integer">
        SELECT COUNT(*) AS recordCount
        FROM rm_open_close_valve_history
        <where>
            AND cl_type = #{closeType}
            <if test="timeStart != null and timeStop != null">
                AND cl_dt BETWEEN #{timeStart} AND #{timeStop}
            </if>
        </where>
    </select>
</mapper>
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/ClientCtrl.java
New file
@@ -0,0 +1,74 @@
package com.dy.pipIrrStatistics.client;
import com.dy.common.aop.SsoAop;
import com.dy.common.webUtil.BaseResponse;
import com.dy.common.webUtil.BaseResponseUtils;
import com.dy.common.webUtil.QueryResultVo;
import com.dy.pipIrrGlobal.voSt.VoClient;
import com.dy.pipIrrStatistics.client.qo.OpenCountQO;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Objects;
/**
 * @author ZhuBaoMin
 * @date 2024-08-06 9:43
 * @LastEditTime 2024-08-06 9:43
 * @Description
 */
@Slf4j
@RestController
@RequestMapping(path="statistics")
@RequiredArgsConstructor
public class ClientCtrl {
    private final ClientSv clientSv;
    /**
     * 获取指定时间段内开阀次数超过指定值的农户
     * @param qo
     * @return
     */
    @GetMapping(path = "/getLargeOpenCountClients")
    @SsoAop()
    public BaseResponse<QueryResultVo<List<VoClient>>> getLargeOpenCountClients(@Valid OpenCountQO qo, BindingResult bindingResult) {
        if(bindingResult != null && bindingResult.hasErrors()){
            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
        }
        try {
            return BaseResponseUtils.buildSuccess(clientSv.getLargeOpenCountClients(qo));
        } catch (Exception e) {
            log.error("获取开卡记录异常", e);
            return BaseResponseUtils.buildException(e.getMessage()) ;
        }
    }
    /**
     * 获取指定时间段内开阀次数低于指定值的农户
     * @param qo
     * @param bindingResult
     * @return
     */
    @GetMapping(path = "/getSmallOpenCountClients")
    @SsoAop()
    public BaseResponse<QueryResultVo<List<VoClient>>> getSmallOpenCountClients(@Valid OpenCountQO qo, BindingResult bindingResult) {
        if(bindingResult != null && bindingResult.hasErrors()){
            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
        }
        try {
            return BaseResponseUtils.buildSuccess(clientSv.getSmallOpenCountClients(qo));
        } catch (Exception e) {
            log.error("获取开卡记录异常", e);
            return BaseResponseUtils.buildException(e.getMessage()) ;
        }
    }
}
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/ClientSv.java
New file
@@ -0,0 +1,105 @@
package com.dy.pipIrrStatistics.client;
import com.dy.common.webUtil.QueryResultVo;
import com.dy.pipIrrGlobal.daoRm.RmOpenCloseValveHistoryMapper;
import com.dy.pipIrrGlobal.voSt.VoClient;
import com.dy.pipIrrStatistics.client.qo.OpenCountQO;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.common.utils.PojoUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.util.List;
import java.util.Map;
import java.util.Optional;
/**
 * @author ZhuBaoMin
 * @date 2024-08-06 9:43
 * @LastEditTime 2024-08-06 9:43
 * @Description
 */
@Slf4j
@Service
public class ClientSv {
    @Autowired
    private RmOpenCloseValveHistoryMapper rmOpenCloseValveHistoryMapper;
    /**
     * 获取指定时间段内开阀次数超过指定值的农户
     * @param qo
     * @return
     */
    public QueryResultVo<List<VoClient>> getLargeOpenCountClients(OpenCountQO qo) {
        /**
         * 补齐起止时间,如果开始时间为空,则默认为当前日期
         */
        String timeStart = qo.getTimeStart();
        String timeStop = qo.getTimeStop();
        if(timeStart != null) {
            timeStart = timeStart + " 00:00:00";
        }else {
            timeStart = LocalDate.now() + " 00:00:00";
        }
        if(timeStop != null) {
            timeStop = timeStop + " 23:59:59";
        }
        qo.setTimeStart(timeStart);
        qo.setTimeStop(timeStop);
        // 生成查询参数
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ;
        // 获取符合条件的记录数
        Long itemTotal = Optional.ofNullable(rmOpenCloseValveHistoryMapper.getLargeOpenCountClientsCount(params)).orElse(0L);
        QueryResultVo<List<VoClient>> rsVo = new QueryResultVo<>() ;
        rsVo.pageSize = qo.pageSize ;
        rsVo.pageCurr = qo.pageCurr ;
        rsVo.calculateAndSet(itemTotal, params);
        rsVo.obj = rmOpenCloseValveHistoryMapper.getLargeOpenCountClients(params);
        return rsVo ;
    }
    /**
     * 获取指定时间段内开阀次数低于指定值的农户
     * @param qo
     * @return
     */
    public QueryResultVo<List<VoClient>> getSmallOpenCountClients(OpenCountQO qo) {
        /**
         * 补齐起止时间,如果开始时间为空,则默认为当前日期
         */
        String timeStart = qo.getTimeStart();
        String timeStop = qo.getTimeStop();
        if(timeStart != null) {
            timeStart = timeStart + " 00:00:00";
        }else {
            timeStart = LocalDate.now() + " 00:00:00";
        }
        if(timeStop != null) {
            timeStop = timeStop + " 23:59:59";
        }
        qo.setTimeStart(timeStart);
        qo.setTimeStop(timeStop);
        // 生成查询参数
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ;
        // 获取符合条件的记录数
        Long itemTotal = Optional.ofNullable(rmOpenCloseValveHistoryMapper.getSmallOpenCountClientsCount(params)).orElse(0L);
        QueryResultVo<List<VoClient>> rsVo = new QueryResultVo<>() ;
        rsVo.pageSize = qo.pageSize ;
        rsVo.pageCurr = qo.pageCurr ;
        rsVo.calculateAndSet(itemTotal, params);
        rsVo.obj = rmOpenCloseValveHistoryMapper.getSmallOpenCountClients(params);
        return rsVo ;
    }
}
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/qo/OpenCountQO.java
New file
@@ -0,0 +1,22 @@
package com.dy.pipIrrStatistics.client.qo;
import com.dy.pipIrrStatistics.intake.qo.CommonQO;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
 * @author ZhuBaoMin
 * @date 2024-08-06 9:55
 * @LastEditTime 2024-08-06 9:55
 * @Description 开阀次数查询对象
 */
@Data
public class OpenCountQO extends CommonQO {
    /**
     * 开阀次数
     */
    @NotNull(message = "开阀次数不能为空")
    private Integer openCount;
}
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/IntakeSv.java
@@ -4,6 +4,9 @@
import com.dy.pipIrrGlobal.daoRm.RmOnHourReportHistoryMapper;
import com.dy.pipIrrGlobal.daoRm.RmOpenCloseValveHistoryMapper;
import com.dy.pipIrrGlobal.daoRm.RmOnHourReportLastMapper;
import com.dy.pipIrrGlobal.daoRm.RmOpenCloseValveLastMapper;
import com.dy.pipIrrGlobal.voSt.*;
import com.dy.pipIrrStatistics.intake.qo.*;
import com.dy.pipIrrGlobal.voSt.VoBatteryVolt;
import com.dy.pipIrrGlobal.voSt.VoCumulativeFlow;
import com.dy.pipIrrGlobal.voSt.VoIntake;
@@ -11,7 +14,7 @@
import com.dy.pipIrrGlobal.voSt.VoSignalIntensity;
import com.dy.pipIrrStatistics.intake.qo.BatteryVoltQO;
import com.dy.pipIrrStatistics.intake.qo.CumulativeFlowQO;
import com.dy.pipIrrStatistics.intake.qo.IntakeQO;
import com.dy.pipIrrStatistics.intake.qo.CommonQO;
import com.dy.pipIrrStatistics.intake.qo.IntakeValueQO;
import com.dy.pipIrrStatistics.intake.qo.SignalIntensityQO;
import lombok.extern.slf4j.Slf4j;
@@ -43,6 +46,9 @@
    @Autowired
    private RmOnHourReportLastMapper rmOnHourReportLastMapper;
    @Autowired
    private RmOpenCloseValveLastMapper rmOpenCloseValveLastMapper;
    @Value("${rtu.batteryVolt}")
    private Double batteryVolt;
@@ -57,7 +63,7 @@
     * @param qo
     * @return
     */
    public QueryResultVo<List<VoIntake>> getNotOnlineIntakes(IntakeQO qo) {
    public QueryResultVo<List<VoIntake>> getNotOnlineIntakes(CommonQO qo) {
        DecimalFormat df = new DecimalFormat("0.00");
        /**
         * 补齐起止时间,如果开始时间为空,则默认为当前日期
@@ -187,7 +193,7 @@
     * 获取从未开过阀的取水口
     * @return
     */
    public QueryResultVo<List<VoIntake>> getNeverOpenValveIntakes(IntakeQO qo) {
    public QueryResultVo<List<VoIntake>> getNeverOpenValveIntakes(CommonQO qo) {
        String timeStart = qo.getTimeStart();
        String timeStop = qo.getTimeStop();
@@ -296,4 +302,124 @@
        return rsVo ;
    }
    /**
     * 根据开阀类型获取操作次数
     * @param qo
     * @return
     */
    public VoCountOfOpenType getCountByOpenType(OpenTypeQO qo) {
        /**
         * 补齐起止时间,如果开始时间为空,则默认为当前日期
         */
        String timeStart = qo.getTimeStart();
        String timeStop = qo.getTimeStop();
        if(timeStart != null) {
            timeStart = timeStart + " 00:00:00";
        }else {
            timeStart = LocalDate.now() + " 00:00:00";
        }
        if(timeStop != null) {
            timeStop = timeStop + " 23:59:59";
        }
        qo.setTimeStart(timeStart);
        qo.setTimeStop(timeStop);
        Integer openType = qo.getOpenType();
        String openTypeName = "";
        switch (openType) {
            case 1:
                openTypeName = "刷卡开阀";
                break;
            case 3:
                openTypeName = "中心站开阀";
                break;
            case 8:
                openTypeName = "用户远程开阀";
                break;
            case 11:
                openTypeName = "开关阀卡开阀";
                break;
            case 13:
                openTypeName = "开关阀卡开阀";
                break;
        }
        // 生成查询参数
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ;
        Integer openTypeCount = Optional.ofNullable(rmOpenCloseValveLastMapper.getCountByOpenType(params)).orElse(0);
        VoCountOfOpenType vo = new VoCountOfOpenType();
        vo.setOpenTypeName(openTypeName);
        vo.setOpenTypeCount(openTypeCount);
        return vo;
    }
    /**
     * 根据关阀类型获取操作次数
     * @param qo
     * @return
     */
    public VoCountOfCloseType getCountByCloseType(CloseTypeQo qo) {
        /**
         * 补齐起止时间,如果开始时间为空,则默认为当前日期
         */
        String timeStart = qo.getTimeStart();
        String timeStop = qo.getTimeStop();
        if(timeStart != null) {
            timeStart = timeStart + " 00:00:00";
        }else {
            timeStart = LocalDate.now() + " 00:00:00";
        }
        if(timeStop != null) {
            timeStop = timeStop + " 23:59:59";
        }
        qo.setTimeStart(timeStart);
        qo.setTimeStop(timeStop);
        Integer closeType = qo.getCloseType();
        String closeTypeName = "";
        switch (closeType) {
            case 2:
                closeTypeName = "刷卡关阀";
                break;
            case 4:
                closeTypeName = "中心站关阀";
                break;
            case 5:
                closeTypeName = "欠费关阀";
                break;
            case 6:
                closeTypeName = "流量计故障关阀";
                break;
            case 7:
                closeTypeName = "紧急关阀";
                break;
            case 9:
                closeTypeName = "用户远程关阀";
                break;
            case 10:
                closeTypeName = "开关阀卡关阀";
                break;
            case 12:
                closeTypeName = "黑名单命令关阀";
                break;
            case 13:
                closeTypeName = "远程定时关阀";
                break;
            case 14:
                closeTypeName = "远程定量关阀";
                break;
        }
        // 生成查询参数
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ;
        Integer closeTypeCount = Optional.ofNullable(rmOpenCloseValveLastMapper.getCountByCloseType(params)).orElse(0);
        VoCountOfCloseType vo = new VoCountOfCloseType();
        vo.setCloseTypeName(closeTypeName);
        vo.setCloseTypeCount(closeTypeCount);
        return vo;
    }
}
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/IntkeCtrl.java
@@ -4,24 +4,19 @@
import com.dy.common.webUtil.BaseResponse;
import com.dy.common.webUtil.BaseResponseUtils;
import com.dy.common.webUtil.QueryResultVo;
import com.dy.pipIrrGlobal.voSt.VoBatteryVolt;
import com.dy.pipIrrGlobal.voSt.VoCumulativeFlow;
import com.dy.pipIrrGlobal.voSt.VoIntake;
import com.dy.pipIrrGlobal.voSt.VoSignalIntensity;
import com.dy.pipIrrStatistics.intake.qo.BatteryVoltQO;
import com.dy.pipIrrGlobal.voSt.VoIntakeOpenCount;
import com.dy.pipIrrStatistics.intake.qo.CumulativeFlowQO;
import com.dy.pipIrrStatistics.intake.qo.IntakeQO;
import com.dy.pipIrrStatistics.intake.qo.SignalIntensityQO;
import com.dy.pipIrrStatistics.intake.qo.IntakeValueQO;
import com.dy.pipIrrGlobal.voSt.*;
import com.dy.pipIrrStatistics.intake.qo.*;
import com.dy.pipIrrStatistics.result.StatisticlResultCode;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Objects;
/**
 * @author ZhuBaoMin
@@ -44,7 +39,11 @@
     */
    @GetMapping(path = "/getNotOnlineIntakes")
    @SsoAop()
    public BaseResponse<QueryResultVo<List<VoIntake>>> getNotOnlineIntakes(IntakeQO qo) {
    public BaseResponse<QueryResultVo<List<VoIntake>>> getNotOnlineIntakes(@Valid CommonQO qo, BindingResult bindingResult) {
        if(bindingResult != null && bindingResult.hasErrors()){
            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
        }
        try {
            return BaseResponseUtils.buildSuccess(intakeSv.getNotOnlineIntakes(qo));
        } catch (Exception e) {
@@ -60,7 +59,10 @@
     */
    @GetMapping(path = "/getLargeFlowIntakes")
    @SsoAop()
    public BaseResponse<QueryResultVo<List<VoCumulativeFlow>>> getLargeFlowIntakes(CumulativeFlowQO qo) {
    public BaseResponse<QueryResultVo<List<VoCumulativeFlow>>> getLargeFlowIntakes(@Valid CumulativeFlowQO qo, BindingResult bindingResult) {
        if(bindingResult != null && bindingResult.hasErrors()){
            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
        }
        try {
            return BaseResponseUtils.buildSuccess(intakeSv.getLargeFlowIntakes(qo));
        } catch (Exception e) {
@@ -76,7 +78,10 @@
     */
    @GetMapping(path = "/getSmallFlowIntakes")
    @SsoAop()
    public BaseResponse<QueryResultVo<List<VoCumulativeFlow>>> getSmallFlowIntakes(CumulativeFlowQO qo) {
    public BaseResponse<QueryResultVo<List<VoCumulativeFlow>>> getSmallFlowIntakes(@Valid CumulativeFlowQO qo, BindingResult bindingResult) {
        if(bindingResult != null && bindingResult.hasErrors()){
            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
        }
        try {
            return BaseResponseUtils.buildSuccess(intakeSv.getSmallFlowIntakes(qo));
        } catch (Exception e) {
@@ -92,7 +97,10 @@
     */
    @GetMapping(path = "/getUnderVoltIntakes")
    @SsoAop()
    public BaseResponse<QueryResultVo<List<VoBatteryVolt>>> getUnderVoltIntakes(BatteryVoltQO qo) {
    public BaseResponse<QueryResultVo<List<VoBatteryVolt>>> getUnderVoltIntakes(@Valid BatteryVoltQO qo, BindingResult bindingResult) {
        if(bindingResult != null && bindingResult.hasErrors()){
            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
        }
        try {
            return BaseResponseUtils.buildSuccess(intakeSv.getUnderVoltIntakes(qo));
        } catch (Exception e) {
@@ -108,9 +116,50 @@
     */
    @GetMapping(path = "/getSpecifiedSignalIntakes")
    @SsoAop()
    public BaseResponse<QueryResultVo<List<VoSignalIntensity>>> getSpecifiedSignalIntakes(SignalIntensityQO qo) {
    public BaseResponse<QueryResultVo<List<VoSignalIntensity>>> getSpecifiedSignalIntakes(@Valid SignalIntensityQO qo, BindingResult bindingResult) {
        if(bindingResult != null && bindingResult.hasErrors()){
            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
        }
        try {
            return BaseResponseUtils.buildSuccess(intakeSv.getSpecifiedSignalIntakes(qo));
        } catch (Exception e) {
            log.error("获取开卡记录异常", e);
            return BaseResponseUtils.buildException(e.getMessage()) ;
        }
    }
    /**
     * 根据开阀类型获取操作次数
     * @param qo
     * @return
     */
    @GetMapping(path = "/getCountByOpenType")
    @SsoAop()
    public BaseResponse<QueryResultVo<VoCountOfOpenType>> getCountByOpenType(@Valid OpenTypeQO qo, BindingResult bindingResult) {
        if(bindingResult != null && bindingResult.hasErrors()){
            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
        }
        try {
            return BaseResponseUtils.buildSuccess(intakeSv.getCountByOpenType(qo));
        } catch (Exception e) {
            log.error("获取开卡记录异常", e);
            return BaseResponseUtils.buildException(e.getMessage()) ;
        }
    }
    /**
     * 根据关阀类型获取操作次数
     * @param qo
     * @return
     */
    @GetMapping(path = "/getCountByCloseType")
    @SsoAop()
    public BaseResponse<QueryResultVo<VoCountOfCloseType>> getCountByCloseType(@Valid CloseTypeQo qo, BindingResult bindingResult) {
        if(bindingResult != null && bindingResult.hasErrors()){
            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
        }
        try {
            return BaseResponseUtils.buildSuccess(intakeSv.getCountByCloseType(qo));
        } catch (Exception e) {
            log.error("获取开卡记录异常", e);
            return BaseResponseUtils.buildException(e.getMessage()) ;
@@ -125,7 +174,7 @@
     */
    @GetMapping(path = "/getNeverOpenValveIntakes")
    @SsoAop()
    public BaseResponse<QueryResultVo<List<VoIntake>>> getNeverOpenValveIntakes(IntakeQO qo) {
    public BaseResponse<QueryResultVo<List<VoIntake>>> getNeverOpenValveIntakes(CommonQO qo) {
        try {
            QueryResultVo<List<VoIntake>> res = intakeSv.getNeverOpenValveIntakes(qo);
            if(res.itemTotal == 0) {
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/CloseTypeQo.java
copy from pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/IntakeQO.java copy to pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/CloseTypeQo.java
File was copied from pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/IntakeQO.java
@@ -1,19 +1,24 @@
package com.dy.pipIrrStatistics.intake.qo;
import com.dy.common.webUtil.QueryConditionVo;
import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
 * @author ZhuBaoMin
 * @date 2024-08-01 14:31
 * @LastEditTime 2024-08-01 14:31
 * @Description
 * @date 2024-08-05 16:22
 * @LastEditTime 2024-08-05 16:22
 * @Description 关阀类型查询对象
 */
@Data
public class IntakeQO extends QueryConditionVo {
public class CloseTypeQo {
    /**
     * 关阀类型
     */
    @NotNull(message = "关阀类型不能为空")
    private Integer closeType;
    /**
     * 开始时间
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/CommonQO.java
File was renamed from pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/IntakeQO.java
@@ -13,7 +13,7 @@
 */
@Data
public class IntakeQO extends QueryConditionVo {
public class CommonQO extends QueryConditionVo {
    /**
     * 开始时间
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/IntakeValueQO.java
@@ -1,7 +1,5 @@
package com.dy.pipIrrStatistics.intake.qo;
import com.dy.common.webUtil.QueryConditionVo;
import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
@@ -12,7 +10,7 @@
 * @Description
 */
@Data
public class IntakeValueQO extends IntakeQO {
public class IntakeValueQO extends CommonQO {
    /**
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/OpenTypeQO.java
copy from pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/IntakeQO.java copy to pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/OpenTypeQO.java
File was copied from pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/IntakeQO.java
@@ -1,19 +1,24 @@
package com.dy.pipIrrStatistics.intake.qo;
import com.dy.common.webUtil.QueryConditionVo;
import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
 * @author ZhuBaoMin
 * @date 2024-08-01 14:31
 * @LastEditTime 2024-08-01 14:31
 * @Description
 * @date 2024-08-05 16:19
 * @LastEditTime 2024-08-05 16:19
 * @Description 开阀类型查询对象
 */
@Data
public class IntakeQO extends QueryConditionVo {
public class OpenTypeQO {
    /**
     * 开阀类型
     */
    @NotNull(message = "开阀类型不能为空")
    private Integer openType;
    /**
     * 开始时间
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/SignalIntensityQO.java
@@ -1,6 +1,9 @@
package com.dy.pipIrrStatistics.intake.qo;
import com.dy.common.webUtil.QueryConditionVo;
import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
@@ -16,6 +19,9 @@
    /**
     * 信号强度:1-弱,2-一般,3-强
     */
    @NotNull(message = "信号强度不能为空")
    @Min(value = 1, message = "信号强度选择错误")
    @Max(value = 3, message = "信号强度选择错误")
    private Integer signalIntensity;
    /**