From f6962c0ede2f18b8aaeaf69f84b39d459a5a59f4 Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期二, 06 八月 2024 13:41:12 +0800
Subject: [PATCH] Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV

---
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveHistoryMapper.xml                               | 1322 +++++++++++++----------
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/CloseTypeQo.java       |   15 
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/IntakeValueQO.java     |    4 
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/ClientSv.java             |  105 +
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveHistoryMapper.java                |   29 
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/ClientCtrl.java           |   74 +
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveLastMapper.java                   |   14 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoCountOfOpenType.java                             |   24 
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/SignalIntensityQO.java |    6 
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/qo/OpenCountQO.java       |   22 
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/CommonQO.java          |    2 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeWorkOrder.java                                |  109 +
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/IntkeCtrl.java            |   81 +
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeWorkOrderMapper.java                           |   26 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeWorkOrderMapper.xml                                          |  186 +++
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/IntakeSv.java             |  132 ++
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/OpenTypeQO.java        |   15 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOnHourReportLastMapper.java                     |    1 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoClient.java                                      |   48 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoCountOfCloseType.java                            |   24 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveLastMapper.xml                                  | 1097 ++++++++++--------
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOnHourReportLastMapper.xml                                    |    1 
 pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml                                                 |    2 
 23 files changed, 2,247 insertions(+), 1,092 deletions(-)

diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeWorkOrderMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeWorkOrderMapper.java
new file mode 100644
index 0000000..050176b
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeWorkOrderMapper.java
@@ -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);
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOnHourReportLastMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOnHourReportLastMapper.java
index d4604e2..582f401 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOnHourReportLastMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOnHourReportLastMapper.java
@@ -138,4 +138,5 @@
      * @return
      */
     List<VoSignalIntensity> getSpecifiedSignalIntakes(Map<?, ?> params);
+
 }
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveHistoryMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveHistoryMapper.java
index ee5171e..c1f9157 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveHistoryMapper.java
+++ b/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);
 }
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveLastMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveLastMapper.java
index e9b9ec6..0a8722f 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveLastMapper.java
+++ b/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);
 }
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeWorkOrder.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeWorkOrder.java
new file mode 100644
index 0000000..697722e
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeWorkOrder.java
@@ -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;
+
+    /**
+    * 娲惧崟浜篒D
+    */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @NotNull
+    private Long dispatcher;
+
+    /**
+    * 宸℃鍛業D
+    */
+    @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;
+
+
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoClient.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoClient.java
new file mode 100644
index 0000000..3c3e426
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoClient.java
@@ -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;
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoCountOfCloseType.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoCountOfCloseType.java
new file mode 100644
index 0000000..9d488e6
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoCountOfCloseType.java
@@ -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;
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoCountOfOpenType.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoCountOfOpenType.java
new file mode 100644
index 0000000..22eda61
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoCountOfOpenType.java
@@ -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;
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml b/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
index 1c09121..682d4eb 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
@@ -72,7 +72,7 @@
 
 pipIrr:
     global:
-        dev: flase   #鏄惁寮�鍙戦樁娈碉紝true鎴杅alse
+        dev: false   #鏄惁寮�鍙戦樁娈碉紝true鎴杅alse
         dsName: ym  #寮�鍙戦樁娈碉紝璁剧疆涓存椂鐨勬暟鎹簱鍚嶇О
     mw:
         webPort: 8070
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeWorkOrderMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeWorkOrderMapper.xml
new file mode 100644
index 0000000..d5c23ed
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeWorkOrderMapper.xml
@@ -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>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOnHourReportLastMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOnHourReportLastMapper.xml
index 29f966b..a41ef3c 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOnHourReportLastMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOnHourReportLastMapper.xml
@@ -417,4 +417,5 @@
             </if>
         </trim>
     </select>
+
 </mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveHistoryMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveHistoryMapper.xml
index aefd5fc..2904017 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveHistoryMapper.xml
+++ b/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>
-  <!--鑾峰彇鎸囧畾鏃堕棿娈靛唴寮�闃�娆℃暟瓒呰繃鎸囧畾鍊肩殑鍙栨按鍙f暟閲�-->
-  <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>
-  <!--鑾峰彇鎸囧畾鏃堕棿娈靛唴寮�闃�娆℃暟浣庝簬鎸囧畾鍊肩殑鍙栨按鍙f暟閲�-->
-  <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>
+    <!--鑾峰彇鎸囧畾鏃堕棿娈靛唴寮�闃�娆℃暟瓒呰繃鎸囧畾鍊肩殑鍙栨按鍙f暟閲�-->
+    <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>
+    <!--鑾峰彇鎸囧畾鏃堕棿娈靛唴寮�闃�娆℃暟浣庝簬鎸囧畾鍊肩殑鍙栨按鍙f暟閲�-->
+    <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>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveLastMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveLastMapper.xml
index fcd8e06..0896dac 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveLastMapper.xml
+++ b/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>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/ClientCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/ClientCtrl.java
new file mode 100644
index 0000000..e780db2
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/ClientCtrl.java
@@ -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()) ;
+        }
+    }
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/ClientSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/ClientSv.java
new file mode 100644
index 0000000..13e5a35
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/ClientSv.java
@@ -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 ;
+    }
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/qo/OpenCountQO.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/qo/OpenCountQO.java
new file mode 100644
index 0000000..48db4b8
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/qo/OpenCountQO.java
@@ -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;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/IntakeSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/IntakeSv.java
index caa045a..0bc6f0d 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/IntakeSv.java
+++ b/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;
+    }
+
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/IntkeCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/IntkeCtrl.java
index e212e51..9affdc2 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/IntkeCtrl.java
+++ b/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) {
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/IntakeQO.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/CloseTypeQo.java
similarity index 61%
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
index 2b494af..a41230e 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/IntakeQO.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/CloseTypeQo.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;
 
     /**
      * 寮�濮嬫椂闂�
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/IntakeQO.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/CommonQO.java
similarity index 92%
rename from pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/IntakeQO.java
rename to pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/CommonQO.java
index 2b494af..1ebbfaa 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/IntakeQO.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/CommonQO.java
@@ -13,7 +13,7 @@
  */
 
 @Data
-public class IntakeQO extends QueryConditionVo {
+public class CommonQO extends QueryConditionVo {
 
     /**
      * 寮�濮嬫椂闂�
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/IntakeValueQO.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/IntakeValueQO.java
index bbb1729..edaec7e 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/IntakeValueQO.java
+++ b/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 {
 
 
     /**
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/IntakeQO.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/OpenTypeQO.java
similarity index 61%
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
index 2b494af..e9b97ec 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/IntakeQO.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/OpenTypeQO.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;
 
     /**
      * 寮�濮嬫椂闂�
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/SignalIntensityQO.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/SignalIntensityQO.java
index 69a66a0..9fec6a2 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/SignalIntensityQO.java
+++ b/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;
 
     /**

--
Gitblit v1.8.0