From daad26e9ea4296f8ae6df07b458e30aad5586847 Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期二, 16 一月 2024 15:17:34 +0800
Subject: [PATCH] 1、通信中间件实现控制器报警与状态处理逻辑,及实现数据库映射Mapper; 2、通信中间件实现控制器自报数据处理逻辑,及实现数据库映射Mapper。

---
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/global/GlParse.java             |    4 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerTrampMapper.xml                                    |    2 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkFindReport.java      |   13 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAlarmStateLastMapper.xml                                     |  195 ++++++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmAlarmStateHistoryMapper.java                   |   56 +
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/resources/RtuDataDealTree.xml                                      |    3 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/dbSv/DbSv.java                    |   80 ++
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/SeClientToVoClient.java              |    2 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAlarmStateHistory.java                        |  110 +++
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAutoReportLastMapper.xml                                     |  206 ++++++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAutoReportLast.java                           |  119 +++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmAutoReportHistoryMapper.java                   |   56 +
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmAutoReportLastMapper.java                      |   65 ++
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TaskSurpport.java                 |    4 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCdC0Vo.java                       |    4 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TaskPool.java                     |   54 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerMapper.xml                                         |   14 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAlarmStateHistoryMapper.xml                                  |  186 ++++++
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealAutoReport.java  |   38 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataStateVo.java                      |   10 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrControllerMapper.java                          |    8 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAutoReportHistory.java                        |  118 +++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Up.java                   |    4 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrControllerTrampMapper.java                     |    3 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAutoReportHistoryMapper.xml                                  |  197 ++++++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAlarmStateLast.java                           |  112 +++
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealAlarmStatus.java |  127 ++++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmAlarmStateLastMapper.java                      |   65 ++
 28 files changed, 1,800 insertions(+), 55 deletions(-)

diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCdC0Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCdC0Vo.java
index 79a731d..f0a7e83 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCdC0Vo.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCdC0Vo.java
@@ -10,7 +10,7 @@
     public Double waterPress; //姘村帇锛�4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~999999.99锛屽崟浣嶄负KPa銆�
     public Double batteryVolt;//钃勭數姹犵數鍘�:4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~99.99锛屽崟浣嶄负V銆�
     public Double sunVolt ;//澶槼鑳界數鍘�:4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~99.99锛屽崟浣嶄负V銆�
-    public Integer signal; //淇″彿寮哄害锛�1瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~99銆�
+    public Integer signalValue; //淇″彿寮哄害锛�1瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~99銆�
     public String rtuDt ;//鎺у埗鍣ㄦ椂閽�
     public DataAlarmVo alarmVo ;//鎶ヨ
     public DataStateVo stateVo ;//鐘舵��
@@ -36,7 +36,7 @@
         sb.append(sunVolt==null?"":sunVolt);
         sb.append("\n");
         sb.append("      淇″彿寮哄害锛�");
-        sb.append(signal==null?"":signal);
+        sb.append(signalValue ==null?"": signalValue);
         sb.append("\n");
         sb.append("      鎺у埗鍣ㄦ椂閽燂細");
         sb.append(rtuDt==null?"":rtuDt);
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataStateVo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataStateVo.java
index 08bfef9..45a8386 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataStateVo.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataStateVo.java
@@ -4,20 +4,20 @@
 
 @Data
 public class DataStateVo  {
-    public Byte idCard ;// 钃勭數姹犵數鍘�
-    public Byte work;//宸ヤ綔鐘舵��
+    public Byte icCard;// IC鍗″姛鑳�
+    public Byte working;//宸ヤ綔鐘舵��
     public Byte valve ;//闃�闂�
 
     public String toString(){
         StringBuilder str = new StringBuilder() ;
         str.append("      鐘舵��:\n");
         str.append("         IC 鍗″姛鑳斤細");
-        str.append(idCard==null?"":(idCard==1?"鏈夋晥":"鏃犳晥"));
+        str.append(icCard ==null?"":(icCard ==1?"鏈夋晥":"鏃犳晥"));
         str.append("\n");
         str.append("         宸ヤ綔鐘舵�侊細");
-        str.append(work ==null?"":(work==1?"鍚姩":"鍋滄"));
+        str.append(working ==null?"":(working ==1?"鍚姩":"鍋滄"));
         str.append("\n");
-        str.append("         闃�闂細");
+        str.append("         闃�闂ㄧ姸鎬侊細");
         str.append(valve==null?"":(valve==1?"鎵撳紑":"鍏抽棴"));
         return str.toString() ;
     }
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Up.java
index 80a0238..67f3520 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Up.java
@@ -206,10 +206,10 @@
         }
         if(hasSignal){
             //淇″彿寮哄害锛�1瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~99銆�
-            cdData.signal = 0 ;
+            cdData.signalValue = 0 ;
             int tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
             index++ ;
-            cdData.signal += tpInt  ;
+            cdData.signalValue += tpInt  ;
         }
         if(hasAlarmStatus){
             //鎶ヨ鏁版嵁
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/global/GlParse.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/global/GlParse.java
index a41e004..21e888e 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/global/GlParse.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/global/GlParse.java
@@ -27,8 +27,8 @@
         DataStateVo avo = new DataStateVo() ;
         byte b = bs[index] ;
         index++ ;
-        avo.idCard = (byte)(b & 0x4) ;
-        avo.work = (byte)(b & 0x8) ;
+        avo.icCard = (byte)(b & 0x4) ;
+        avo.working = (byte)(b & 0x8) ;
         avo.valve = (byte)(b & 0x20) ;
         return avo ;
     }
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrControllerMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrControllerMapper.java
index c217883..532b095 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrControllerMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrControllerMapper.java
@@ -5,6 +5,7 @@
 import com.dy.pipIrrGlobal.voPr.VoController;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
+import org.springframework.security.access.method.P;
 
 import java.util.List;
 import java.util.Map;
@@ -52,6 +53,13 @@
     List<Map<String, Object>> getControllersByCode(@Param("rtuAddr") String rtuAddr);
 
     /**
+     * 鏍规嵁鎺у埗鍣ㄧ紪鍙疯幏鍙栨帶鍒跺櫒鍒楄〃
+     * @param rtuAddr
+     * @return
+     */
+    List<PrController> getControllersByRtuAddr(@Param("rtuAddr") String rtuAddr);
+
+    /**
      * 鏍规嵁鎺у埗鍣ㄧ紪鍙烽�昏緫鍒犻櫎鎺у埗
      * @param controllerId
      * @return
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrControllerTrampMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrControllerTrampMapper.java
index 9e86073..758c33b 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrControllerTrampMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrControllerTrampMapper.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.dy.pipIrrGlobal.pojoPr.PrControllerTramp;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -47,7 +48,7 @@
      * @param rutAddr 鎺у埗鍣ㄥ湴鍧�
      * @return object by 鎺у埗鍣ㄥ湴鍧�
      */
-    List<PrControllerTramp> selectPrControllerTrampByRtuAddr(String rutAddr);
+    List<PrControllerTramp> getPrControllerTrampByRtuAddr(String rutAddr);
 
     /**
      * update record selective
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmAlarmStateHistoryMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmAlarmStateHistoryMapper.java
new file mode 100644
index 0000000..c96ea37
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmAlarmStateHistoryMapper.java
@@ -0,0 +1,56 @@
+package com.dy.pipIrrGlobal.daoRm;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dy.pipIrrGlobal.pojoRm.RmAlarmStateHistory;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @Author liurunyu
+ * @Date 2024/1/16 11:18
+ * @LastEditTime 2024/1/16 11:18
+ * @Description
+ */   
+@Mapper
+public interface RmAlarmStateHistoryMapper  extends BaseMapper<RmAlarmStateHistory> {
+    /**
+     * delete by primary key
+     * @param id primaryKey
+     * @return deleteCount
+     */
+    int deleteByPrimaryKey(Long id);
+
+    /**
+     * insert record to table
+     * @param record the record
+     * @return insert count
+     */
+    int insert(RmAlarmStateHistory record);
+
+    /**
+     * insert record to table selective
+     * @param record the record
+     * @return insert count
+     */
+    int insertSelective(RmAlarmStateHistory record);
+
+    /**
+     * select by primary key
+     * @param id primary key
+     * @return object by primary key
+     */
+    RmAlarmStateHistory selectByPrimaryKey(Long id);
+
+    /**
+     * update record selective
+     * @param record the updated record
+     * @return update count
+     */
+    int updateByPrimaryKeySelective(RmAlarmStateHistory record);
+
+    /**
+     * update record
+     * @param record the updated record
+     * @return update count
+     */
+    int updateByPrimaryKey(RmAlarmStateHistory record);
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmAlarmStateLastMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmAlarmStateLastMapper.java
new file mode 100644
index 0000000..cb9e72a
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmAlarmStateLastMapper.java
@@ -0,0 +1,65 @@
+package com.dy.pipIrrGlobal.daoRm;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dy.pipIrrGlobal.pojoRm.RmAlarmStateLast;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * @Author liurunyu
+ * @Date 2024/1/16 11:18
+ * @LastEditTime 2024/1/16 11:18
+ * @Description
+ */   
+@Mapper
+public interface RmAlarmStateLastMapper  extends BaseMapper<RmAlarmStateLast> {
+    /**
+     * delete by primary key
+     * @param id primaryKey
+     * @return deleteCount
+     */
+    int deleteByPrimaryKey(Long id);
+
+    /**
+     * insert record to table
+     * @param record the record
+     * @return insert count
+     */
+    int insert(RmAlarmStateLast record);
+
+    /**
+     * insert record to table selective
+     * @param record the record
+     * @return insert count
+     */
+    int insertSelective(RmAlarmStateLast record);
+
+    /**
+     * select by primary key
+     * @param id primary key
+     * @return object by primary key
+     */
+    RmAlarmStateLast selectByPrimaryKey(Long id);
+
+    /**
+     * select by rtuAddr
+     * @param rtuAddr rtuAddr
+     * @return object by rtuAddr
+     */
+    List<RmAlarmStateLast> selectByRtuAddr(String rtuAddr);
+
+    /**
+     * update record selective
+     * @param record the updated record
+     * @return update count
+     */
+    int updateByPrimaryKeySelective(RmAlarmStateLast record);
+
+    /**
+     * update record
+     * @param record the updated record
+     * @return update count
+     */
+    int updateByPrimaryKey(RmAlarmStateLast record);
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmAutoReportHistoryMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmAutoReportHistoryMapper.java
new file mode 100644
index 0000000..646b31c
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmAutoReportHistoryMapper.java
@@ -0,0 +1,56 @@
+package com.dy.pipIrrGlobal.daoRm;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dy.pipIrrGlobal.pojoRm.RmAutoReportHistory;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @Author liurunyu
+ * @Date 2024/1/16 14:59
+ * @LastEditTime 2024/1/16 14:59
+ * @Description
+ */   
+@Mapper
+public interface RmAutoReportHistoryMapper extends BaseMapper<RmAutoReportHistory> {
+    /**
+     * delete by primary key
+     * @param id primaryKey
+     * @return deleteCount
+     */
+    int deleteByPrimaryKey(Long id);
+
+    /**
+     * insert record to table
+     * @param record the record
+     * @return insert count
+     */
+    int insert(RmAutoReportHistory record);
+
+    /**
+     * insert record to table selective
+     * @param record the record
+     * @return insert count
+     */
+    int insertSelective(RmAutoReportHistory record);
+
+    /**
+     * select by primary key
+     * @param id primary key
+     * @return object by primary key
+     */
+    RmAutoReportHistory selectByPrimaryKey(Long id);
+
+    /**
+     * update record selective
+     * @param record the updated record
+     * @return update count
+     */
+    int updateByPrimaryKeySelective(RmAutoReportHistory record);
+
+    /**
+     * update record
+     * @param record the updated record
+     * @return update count
+     */
+    int updateByPrimaryKey(RmAutoReportHistory record);
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmAutoReportLastMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmAutoReportLastMapper.java
new file mode 100644
index 0000000..21214ec
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmAutoReportLastMapper.java
@@ -0,0 +1,65 @@
+package com.dy.pipIrrGlobal.daoRm;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dy.pipIrrGlobal.pojoRm.RmAutoReportLast;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * @Author liurunyu
+ * @Date 2024/1/16 14:45
+ * @LastEditTime 2024/1/16 14:45
+ * @Description
+ */   
+@Mapper
+public interface RmAutoReportLastMapper extends BaseMapper<RmAutoReportLast> {
+    /**
+     * delete by primary key
+     * @param id primaryKey
+     * @return deleteCount
+     */
+    int deleteByPrimaryKey(Long id);
+
+    /**
+     * insert record to table
+     * @param record the record
+     * @return insert count
+     */
+    int insert(RmAutoReportLast record);
+
+    /**
+     * insert record to table selective
+     * @param record the record
+     * @return insert count
+     */
+    int insertSelective(RmAutoReportLast record);
+
+    /**
+     * select by primary key
+     * @param id primary key
+     * @return object by primary key
+     */
+    RmAutoReportLast selectByPrimaryKey(Long id);
+
+    /**
+     * select by rtuAddr
+     * @param rtuAddr rtuAddr
+     * @return object by rtuAddr
+     */
+    List<RmAutoReportLast> selectByRtuAddr(String rtuAddr);
+
+    /**
+     * update record selective
+     * @param record the updated record
+     * @return update count
+     */
+    int updateByPrimaryKeySelective(RmAutoReportLast record);
+
+    /**
+     * update record
+     * @param record the updated record
+     * @return update count
+     */
+    int updateByPrimaryKey(RmAutoReportLast record);
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAlarmStateHistory.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAlarmStateHistory.java
new file mode 100644
index 0000000..273eed6
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAlarmStateHistory.java
@@ -0,0 +1,110 @@
+package com.dy.pipIrrGlobal.pojoRm;
+
+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 lombok.*;
+
+import java.util.Date;
+
+/**
+ * @Author liurunyu
+ * @Date 2024/1/16 11:03
+ * @LastEditTime 2024/1/16 11:03
+ * @Description
+ */   
+/**
+* 鎺у埗鍣ㄦ姤璀︿笌鐘舵�侊紙鍘嗗彶锛�
+*/
+@TableName(value="rm_alarm_state_history", autoResultMap = true)
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(name = "鎺у埗鍣ㄦ姤璀︿笌鐘舵�侊紙鍘嗗彶锛�")
+public class RmAlarmStateHistory implements BaseEntity {
+
+    public static final long serialVersionUID = 202401161104001L;
+    /**
+     * 涓婚敭
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @TableId(type = IdType.INPUT)
+    public Long id;
+
+    /**
+     * 鎺у埗鍣ㄥ疄浣揑D锛堝閿級
+     */
+    @Schema(description = "鎺у埗鍣ㄥ疄浣撳閿�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    public Long controllerid;
+
+    /**
+     * 鍙栨按鍙D锛堝閿級
+     */
+    @Schema(description = "鍙栨按鍙e疄浣撳閿�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    public Long intakeid;
+
+    /**
+     * 鎺у埗鍣ㄥ湴鍧�
+     */
+    @Schema(description = "鎺у埗鍣ㄥ湴鍧�", requiredMode = Schema.RequiredMode.REQUIRED)
+    public String rtuaddr;
+
+    /**
+     * 涓婃姤鏃ユ湡鏃堕棿
+     */
+    @Schema(description = "涓婃姤鏃ユ湡鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    public Date dt;
+
+    /**
+     * 鎶ヨ-钃勭數姹犵數鍘�(1鎶ヨ锛�0姝e父)
+     */
+    @Schema(description = "鎶ヨ-钃勭數姹犵數鍘�(1鎶ヨ锛�0姝e父)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Byte bateryvolt;
+
+    /**
+     * 鎶ヨ-婕忔崯(1鎶ヨ锛�0姝e父)
+     */
+    @Schema(description = "鎶ヨ-钃勭數姹犵數鍘�(1鎶ヨ锛�0姝e父)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Byte loss;
+
+    /**
+     * 鎶ヨ-浠〃(1鎶ヨ锛�0姝e父)
+     */
+    @Schema(description = "鎶ヨ-浠〃(1鎶ヨ锛�0姝e父)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Byte meter;
+
+    /**
+     * 鎶ヨ-闃�闂�(1鎶ヨ锛�0姝e父)
+     */
+    @Schema(description = "鎶ヨ-闃�闂�(1鎶ヨ锛�0姝e父)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Byte valve;
+
+    /**
+     * 鐘舵��-IC鍗″姛鑳斤紙1鏈夋晥銆�0鏃犳晥锛�
+     */
+    @Schema(description = "鐘舵��-IC鍗″姛鑳斤紙1鏈夋晥銆�0鏃犳晥锛�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Byte iccard;
+
+    /**
+     * 鐘舵��-宸ヤ綔锛�1鍚姩銆�0鍋滄锛�
+     */
+    @Schema(description = "鎶ヨ-浠〃(1鎶ヨ锛�0姝e父)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Byte working;
+
+    /**
+     * 鐘舵��-闃�闂紙1鎵撳紑銆�0鍏抽棴锛�
+     */
+    @Schema(description = "鐘舵��-闃�闂紙1鎵撳紑銆�0鍏抽棴锛�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Byte valvestate;
+
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAlarmStateLast.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAlarmStateLast.java
new file mode 100644
index 0000000..3ea5a85
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAlarmStateLast.java
@@ -0,0 +1,112 @@
+package com.dy.pipIrrGlobal.pojoRm;
+
+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 lombok.*;
+
+import java.util.Date;
+
+/**
+ * @Author liurunyu
+ * @Date 2024/1/16 10:39
+ * @LastEditTime 2024/1/16 10:39
+ * @Description
+ */   
+/**
+* 鎺у埗鍣ㄦ姤璀︿笌鐘舵�侊紙鏈�鏂帮級
+*/
+@TableName(value="rm_alarm_state_last", autoResultMap = true)
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(name = "鎺у埗鍣ㄦ姤璀︿笌鐘舵�侊紙鏈�鏂帮級")
+public class RmAlarmStateLast implements BaseEntity {
+
+    public static final long serialVersionUID = 202401161041001L;
+    /**
+    * 涓婚敭
+    */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @TableId(type = IdType.INPUT)
+    public Long id;
+
+    /**
+    * 鎺у埗鍣ㄥ疄浣揑D锛堝閿級
+    */
+    @Schema(description = "鎺у埗鍣ㄥ疄浣撳閿�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    public Long controllerid;
+
+    /**
+     * 鍙栨按鍙D锛堝閿級
+     */
+    @Schema(description = "鍙栨按鍙e疄浣撳閿�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    public Long intakeid;
+
+    /**
+    * 鎺у埗鍣ㄥ湴鍧�
+    */
+    @Schema(description = "鎺у埗鍣ㄥ湴鍧�", requiredMode = Schema.RequiredMode.REQUIRED)
+    public String rtuaddr;
+
+    /**
+    * 涓婃姤鏃ユ湡鏃堕棿
+    */
+    @Schema(description = "涓婃姤鏃ユ湡鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    public Date dt;
+
+    /**
+    * 鎶ヨ-钃勭數姹犵數鍘�(1鎶ヨ锛�0姝e父)
+    */
+    @Schema(description = "鎶ヨ-钃勭數姹犵數鍘�(1鎶ヨ锛�0姝e父)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Byte bateryvolt;
+
+    /**
+    * 鎶ヨ-婕忔崯(1鎶ヨ锛�0姝e父)
+    */
+    @Schema(description = "鎶ヨ-钃勭數姹犵數鍘�(1鎶ヨ锛�0姝e父)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Byte loss;
+
+    /**
+    * 鎶ヨ-浠〃(1鎶ヨ锛�0姝e父)
+    */
+    @Schema(description = "鎶ヨ-浠〃(1鎶ヨ锛�0姝e父)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Byte meter;
+
+    /**
+    * 鎶ヨ-闃�闂�(1鎶ヨ锛�0姝e父)
+    */
+    @Schema(description = "鎶ヨ-闃�闂�(1鎶ヨ锛�0姝e父)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Byte valve;
+
+    /**
+    * 鐘舵��-IC鍗″姛鑳斤紙1鏈夋晥銆�0鏃犳晥锛�
+    */
+    @Schema(description = "鐘舵��-IC鍗″姛鑳斤紙1鏈夋晥銆�0鏃犳晥锛�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Byte iccard;
+
+    /**
+    * 鐘舵��-宸ヤ綔锛�1鍚姩銆�0鍋滄锛�
+    */
+    @Schema(description = "鎶ヨ-浠〃(1鎶ヨ锛�0姝e父)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Byte working;
+
+    /**
+    * 鐘舵��-闃�闂紙1鎵撳紑銆�0鍏抽棴锛�
+    */
+    @Schema(description = "鐘舵��-闃�闂紙1鎵撳紑銆�0鍏抽棴锛�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Byte valvestate;
+
+
+
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAutoReportHistory.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAutoReportHistory.java
new file mode 100644
index 0000000..7c40fb4
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAutoReportHistory.java
@@ -0,0 +1,118 @@
+package com.dy.pipIrrGlobal.pojoRm;
+
+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 lombok.*;
+
+import java.util.Date;
+
+/**
+ * @Author liurunyu
+ * @Date 2024/1/16 14:59
+ * @LastEditTime 2024/1/16 14:59
+ * @Description
+ */   
+/**
+* 缁堢鑷姤锛堟渶鏂帮級
+*/
+@TableName(value="rm_alarm_state_history", autoResultMap = true)
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(name = "鎺у埗鍣ㄨ嚜鎶ワ紙鍘嗗彶锛�")
+public class RmAutoReportHistory implements BaseEntity {
+
+    public static final long serialVersionUID = 202401161501001L;
+    /**
+     * 涓婚敭
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @TableId(type = IdType.INPUT)
+    public Long id;
+
+
+    /**
+     * 鎺у埗鍣ㄥ疄浣揑D锛堝閿級
+     */
+    @Schema(description = "鎺у埗鍣ㄥ疄浣撳閿�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    public Long controllerid;
+
+    /**
+     * 鍙栨按鍙D锛堝閿級
+     */
+    @Schema(description = "鍙栨按鍙e疄浣撳閿�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    public Long intakeid;
+
+    /**
+     * 鎺у埗鍣ㄥ湴鍧�
+     */
+    @Schema(description = "鎺у埗鍣ㄥ湴鍧�", requiredMode = Schema.RequiredMode.REQUIRED)
+    public String rtuaddr;
+
+    /**
+     * 涓婃姤鏃ユ湡鏃堕棿
+     */
+    @Schema(description = "涓婃姤鏃ユ湡鏃堕棿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    public Date dt;
+
+    /**
+     * 鎺у埗鍣ㄦ椂閽�
+     */
+    @Schema(description = "鎺у埗鍣ㄦ椂閽�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    public Date rtudt;
+
+    /**
+     * 鐬椂娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999.999锛屽崟浣嶄负m3/h
+     */
+    @Schema(description = "鐬椂娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999.999锛屽崟浣嶄负m3/h", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Double instantamount;
+
+    /**
+     * 绱娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999999锛屽崟浣嶄负m3
+     */
+    @Schema(description = "绱娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999999锛屽崟浣嶄负m3", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Double totalamount;
+
+    /**
+     * 鎹熷け娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999999锛屽崟浣嶄负m3
+     */
+    @Schema(description = "鎹熷け娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999999锛屽崟浣嶄负m3", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Double lossamount;
+
+    /**
+     * 姘村帇锛�4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~999999.99锛屽崟浣嶄负KPa
+     */
+    @Schema(description = "姘村帇锛�4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~999999.99锛屽崟浣嶄负KPa", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Double waterpress;
+
+    /**
+     * 钃勭數姹犵數鍘�:4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~99.99锛屽崟浣嶄负V
+     */
+    @Schema(description = "钃勭數姹犵數鍘�:4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~99.99锛屽崟浣嶄负V", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Double batteryvolt;
+
+    /**
+     * 澶槼鑳界數鍘�:4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~99.99锛屽崟浣嶄负V
+     */
+    @Schema(description = "澶槼鑳界數鍘�:4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~99.99锛屽崟浣嶄负V", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Double sunvolt;
+
+    /**
+     * 淇″彿寮哄害锛�1瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~99
+     */
+    @Schema(description = "淇″彿寮哄害锛�1瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~99", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Integer signalvalue;
+
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAutoReportLast.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAutoReportLast.java
new file mode 100644
index 0000000..ee3ad84
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAutoReportLast.java
@@ -0,0 +1,119 @@
+package com.dy.pipIrrGlobal.pojoRm;
+
+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 lombok.*;
+
+import java.util.Date;
+
+/**
+ * @Author liurunyu
+ * @Date 2024/1/16 14:45
+ * @LastEditTime 2024/1/16 14:45
+ * @Description
+ */   
+/**
+* 缁堢鑷姤锛堟渶鏂帮級
+*/
+
+@TableName(value="rm_alarm_state_last", autoResultMap = true)
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(name = "鎺у埗鍣ㄨ嚜鎶ワ紙鏈�鏂帮級")
+public class RmAutoReportLast implements BaseEntity {
+
+    public static final long serialVersionUID = 202401161446001L;
+    /**
+     * 涓婚敭
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @TableId(type = IdType.INPUT)
+    public Long id;
+
+
+    /**
+     * 鎺у埗鍣ㄥ疄浣揑D锛堝閿級
+     */
+    @Schema(description = "鎺у埗鍣ㄥ疄浣撳閿�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    public Long controllerid;
+
+    /**
+     * 鍙栨按鍙D锛堝閿級
+     */
+    @Schema(description = "鍙栨按鍙e疄浣撳閿�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    public Long intakeid;
+
+    /**
+     * 鎺у埗鍣ㄥ湴鍧�
+     */
+    @Schema(description = "鎺у埗鍣ㄥ湴鍧�", requiredMode = Schema.RequiredMode.REQUIRED)
+    public String rtuaddr;
+
+    /**
+     * 涓婃姤鏃ユ湡鏃堕棿
+     */
+    @Schema(description = "涓婃姤鏃ユ湡鏃堕棿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    public Date dt;
+
+    /**
+    * 鎺у埗鍣ㄦ椂閽�
+    */
+    @Schema(description = "鎺у埗鍣ㄦ椂閽�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    public Date rtudt;
+
+    /**
+    * 鐬椂娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999.999锛屽崟浣嶄负m3/h
+    */
+    @Schema(description = "鐬椂娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999.999锛屽崟浣嶄负m3/h", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Double instantamount;
+
+    /**
+    * 绱娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999999锛屽崟浣嶄负m3
+    */
+    @Schema(description = "绱娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999999锛屽崟浣嶄负m3", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Double totalamount;
+
+    /**
+    * 鎹熷け娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999999锛屽崟浣嶄负m3
+    */
+    @Schema(description = "鎹熷け娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999999锛屽崟浣嶄负m3", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Double lossamount;
+
+    /**
+    * 姘村帇锛�4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~999999.99锛屽崟浣嶄负KPa
+    */
+    @Schema(description = "姘村帇锛�4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~999999.99锛屽崟浣嶄负KPa", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Double waterpress;
+
+    /**
+    * 钃勭數姹犵數鍘�:4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~99.99锛屽崟浣嶄负V
+    */
+    @Schema(description = "钃勭數姹犵數鍘�:4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~99.99锛屽崟浣嶄负V", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Double batteryvolt;
+
+    /**
+    * 澶槼鑳界數鍘�:4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~99.99锛屽崟浣嶄负V
+    */
+    @Schema(description = "澶槼鑳界數鍘�:4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~99.99锛屽崟浣嶄负V", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Double sunvolt;
+
+    /**
+    * 淇″彿寮哄害锛�1瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~99
+    */
+    @Schema(description = "淇″彿寮哄害锛�1瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~99", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Integer signalvalue;
+
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerMapper.xml
index d1e61b0..75cf37f 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerMapper.xml
@@ -18,6 +18,10 @@
     <!--@mbg.generated-->
     id, rtuAddr, protocol, onlineState, reportTime, addWays, `operator`, operateDt, deleted
   </sql>
+  <sql id="Part_Column_List">
+    <!--@mbg.generated-->
+    id, rtuAddr
+  </sql>
   <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
     <!--@mbg.generated-->
     select 
@@ -216,11 +220,19 @@
 
   </select>
 
-  <!--鏍规嵁鎺у埗鍣ㄧ紪鍙疯幏鍙栨帶鍒跺櫒鍒楄〃-->
+  <!--鏍规嵁鎺у埗鍣ㄥ湴鍧�鑾峰彇鎺у埗鍣ㄥ垪琛�-->
   <select id="getControllersByCode" resultType="java.util.Map">
     SELECT id, rtuAddr FROM pr_controller WHERE rtuAddr LIKE CONCAT('%',#{rtuAddr},'%')
   </select>
 
+  <!--鏍规嵁鎺у埗鍣ㄥ湴鍧�鑾峰彇鎺у埗鍣ㄥ垪琛�-->
+  <select id="getControllersByRtuAddr" parameterType="java.lang.String" resultMap="BaseResultMap">
+    select
+    <include refid="Part_Column_List" />
+    from pr_controller_tramp
+    where rtuAddr = #{rtuAddr,jdbcType=VARCHAR}
+  </select>
+
   <!--鏍规嵁鎺у埗鍣ㄧ紪鍙烽�昏緫鍒犻櫎鎺у埗-->
   <update id="deleteControllerById">
     UPDATE pr_controller SET deleted = 1 WHERE id = ${controllerId}
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerTrampMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerTrampMapper.xml
index 029d01a..d459b0d 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerTrampMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerTrampMapper.xml
@@ -20,7 +20,7 @@
     from pr_controller_tramp
     where id = #{id,jdbcType=BIGINT}
   </select>
-  <select id="selectPrControllerTrampByRtuAddr" parameterType="java.lang.String" resultMap="BaseResultMap">
+  <select id="getPrControllerTrampByRtuAddr" parameterType="java.lang.String" resultMap="BaseResultMap">
     <!--@mbg.generated-->
     select
     <include refid="Base_Column_List" />
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAlarmStateHistoryMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAlarmStateHistoryMapper.xml
new file mode 100644
index 0000000..e62a0b0
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAlarmStateHistoryMapper.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.daoRm.RmAlarmStateHistoryMapper">
+  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoRm.RmAlarmStateHistory">
+    <!--@mbg.generated-->
+    <!--@Table rm_alarm_state_history-->
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="controllerId" jdbcType="BIGINT" property="controllerid" />
+    <result column="intakeId" jdbcType="BIGINT" property="intakeid" />
+    <result column="rtuAddr" jdbcType="VARCHAR" property="rtuaddr" />
+    <result column="dt" jdbcType="DATE" property="dt" />
+    <result column="bateryVolt" jdbcType="TINYINT" property="bateryvolt" />
+    <result column="loss" jdbcType="TINYINT" property="loss" />
+    <result column="meter" jdbcType="TINYINT" property="meter" />
+    <result column="valve" jdbcType="TINYINT" property="valve" />
+    <result column="icCard" jdbcType="TINYINT" property="iccard" />
+    <result column="working" jdbcType="TINYINT" property="working" />
+    <result column="valveState" jdbcType="TINYINT" property="valvestate" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--@mbg.generated-->
+    id, controllerId, intakeId, rtuAddr, dt, bateryVolt, loss, meter, valve, icCard, 
+    working, valveState
+  </sql>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+    <!--@mbg.generated-->
+    select 
+    <include refid="Base_Column_List" />
+    from rm_alarm_state_history
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    <!--@mbg.generated-->
+    delete from rm_alarm_state_history
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoRm.RmAlarmStateHistory">
+    <!--@mbg.generated-->
+    insert into rm_alarm_state_history (id, controllerId, intakeId, 
+      rtuAddr, dt, bateryVolt, 
+      loss, meter, valve, 
+      icCard, working, valveState
+      )
+    values (#{id,jdbcType=BIGINT}, #{controllerid,jdbcType=BIGINT}, #{intakeid,jdbcType=BIGINT}, 
+      #{rtuaddr,jdbcType=VARCHAR}, #{dt,jdbcType=DATE}, #{bateryvolt,jdbcType=TINYINT}, 
+      #{loss,jdbcType=TINYINT}, #{meter,jdbcType=TINYINT}, #{valve,jdbcType=TINYINT}, 
+      #{iccard,jdbcType=TINYINT}, #{working,jdbcType=TINYINT}, #{valvestate,jdbcType=TINYINT}
+      )
+  </insert>
+  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmAlarmStateHistory">
+    <!--@mbg.generated-->
+    insert into rm_alarm_state_history
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="controllerid != null">
+        controllerId,
+      </if>
+      <if test="intakeid != null">
+        intakeId,
+      </if>
+      <if test="rtuaddr != null">
+        rtuAddr,
+      </if>
+      <if test="dt != null">
+        dt,
+      </if>
+      <if test="bateryvolt != null">
+        bateryVolt,
+      </if>
+      <if test="loss != null">
+        loss,
+      </if>
+      <if test="meter != null">
+        meter,
+      </if>
+      <if test="valve != null">
+        valve,
+      </if>
+      <if test="iccard != null">
+        icCard,
+      </if>
+      <if test="working != null">
+        working,
+      </if>
+      <if test="valvestate != null">
+        valveState,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
+      <if test="controllerid != null">
+        #{controllerid,jdbcType=BIGINT},
+      </if>
+      <if test="intakeid != null">
+        #{intakeid,jdbcType=BIGINT},
+      </if>
+      <if test="rtuaddr != null">
+        #{rtuaddr,jdbcType=VARCHAR},
+      </if>
+      <if test="dt != null">
+        #{dt,jdbcType=DATE},
+      </if>
+      <if test="bateryvolt != null">
+        #{bateryvolt,jdbcType=TINYINT},
+      </if>
+      <if test="loss != null">
+        #{loss,jdbcType=TINYINT},
+      </if>
+      <if test="meter != null">
+        #{meter,jdbcType=TINYINT},
+      </if>
+      <if test="valve != null">
+        #{valve,jdbcType=TINYINT},
+      </if>
+      <if test="iccard != null">
+        #{iccard,jdbcType=TINYINT},
+      </if>
+      <if test="working != null">
+        #{working,jdbcType=TINYINT},
+      </if>
+      <if test="valvestate != null">
+        #{valvestate,jdbcType=TINYINT},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmAlarmStateHistory">
+    <!--@mbg.generated-->
+    update rm_alarm_state_history
+    <set>
+      <if test="controllerid != null">
+        controllerId = #{controllerid,jdbcType=BIGINT},
+      </if>
+      <if test="intakeid != null">
+        intakeId = #{intakeid,jdbcType=BIGINT},
+      </if>
+      <if test="rtuaddr != null">
+        rtuAddr = #{rtuaddr,jdbcType=VARCHAR},
+      </if>
+      <if test="dt != null">
+        dt = #{dt,jdbcType=DATE},
+      </if>
+      <if test="bateryvolt != null">
+        bateryVolt = #{bateryvolt,jdbcType=TINYINT},
+      </if>
+      <if test="loss != null">
+        loss = #{loss,jdbcType=TINYINT},
+      </if>
+      <if test="meter != null">
+        meter = #{meter,jdbcType=TINYINT},
+      </if>
+      <if test="valve != null">
+        valve = #{valve,jdbcType=TINYINT},
+      </if>
+      <if test="iccard != null">
+        icCard = #{iccard,jdbcType=TINYINT},
+      </if>
+      <if test="working != null">
+        working = #{working,jdbcType=TINYINT},
+      </if>
+      <if test="valvestate != null">
+        valveState = #{valvestate,jdbcType=TINYINT},
+      </if>
+    </set>
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoRm.RmAlarmStateHistory">
+    <!--@mbg.generated-->
+    update rm_alarm_state_history
+    set controllerId = #{controllerid,jdbcType=BIGINT},
+      intakeId = #{intakeid,jdbcType=BIGINT},
+      rtuAddr = #{rtuaddr,jdbcType=VARCHAR},
+      dt = #{dt,jdbcType=DATE},
+      bateryVolt = #{bateryvolt,jdbcType=TINYINT},
+      loss = #{loss,jdbcType=TINYINT},
+      meter = #{meter,jdbcType=TINYINT},
+      valve = #{valve,jdbcType=TINYINT},
+      icCard = #{iccard,jdbcType=TINYINT},
+      working = #{working,jdbcType=TINYINT},
+      valveState = #{valvestate,jdbcType=TINYINT}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+</mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAlarmStateLastMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAlarmStateLastMapper.xml
new file mode 100644
index 0000000..7a30f4f
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAlarmStateLastMapper.xml
@@ -0,0 +1,195 @@
+<?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.RmAlarmStateLastMapper">
+  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoRm.RmAlarmStateLast">
+    <!--@mbg.generated-->
+    <!--@Table rm_alarm_state_last-->
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="controllerId" jdbcType="BIGINT" property="controllerid" />
+    <result column="intakeId" jdbcType="BIGINT" property="intakeid" />
+    <result column="rtuAddr" jdbcType="VARCHAR" property="rtuaddr" />
+    <result column="dt" jdbcType="DATE" property="dt" />
+    <result column="bateryVolt" jdbcType="TINYINT" property="bateryvolt" />
+    <result column="loss" jdbcType="TINYINT" property="loss" />
+    <result column="meter" jdbcType="TINYINT" property="meter" />
+    <result column="valve" jdbcType="TINYINT" property="valve" />
+    <result column="icCard" jdbcType="TINYINT" property="iccard" />
+    <result column="working" jdbcType="TINYINT" property="working" />
+    <result column="valveState" jdbcType="TINYINT" property="valvestate" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--@mbg.generated-->
+    id, controllerId, intakeId, rtuAddr, dt, bateryVolt, loss, meter, valve, icCard, 
+    working, valveState
+  </sql>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+    <!--@mbg.generated-->
+    select 
+    <include refid="Base_Column_List" />
+    from rm_alarm_state_last
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+
+ <select id="selectByRtuAddr" parameterType="java.lang.String" resultMap="BaseResultMap">
+    <!--@mbg.generated-->
+    select
+    <include refid="Base_Column_List" />
+    from rm_alarm_state_last
+    where rtuAddr = #{rtuAddr,jdbcType=VARCHAR}
+  </select>
+
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    <!--@mbg.generated-->
+    delete from rm_alarm_state_last
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoRm.RmAlarmStateLast">
+    <!--@mbg.generated-->
+    insert into rm_alarm_state_last (id, controllerId, intakeId, 
+      rtuAddr, dt, bateryVolt, 
+      loss, meter, valve, 
+      icCard, working, valveState
+      )
+    values (#{id,jdbcType=BIGINT}, #{controllerid,jdbcType=BIGINT}, #{intakeid,jdbcType=BIGINT}, 
+      #{rtuaddr,jdbcType=VARCHAR}, #{dt,jdbcType=DATE}, #{bateryvolt,jdbcType=TINYINT}, 
+      #{loss,jdbcType=TINYINT}, #{meter,jdbcType=TINYINT}, #{valve,jdbcType=TINYINT}, 
+      #{iccard,jdbcType=TINYINT}, #{working,jdbcType=TINYINT}, #{valvestate,jdbcType=TINYINT}
+      )
+  </insert>
+  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmAlarmStateLast">
+    <!--@mbg.generated-->
+    insert into rm_alarm_state_last
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="controllerid != null">
+        controllerId,
+      </if>
+      <if test="intakeid != null">
+        intakeId,
+      </if>
+      <if test="rtuaddr != null">
+        rtuAddr,
+      </if>
+      <if test="dt != null">
+        dt,
+      </if>
+      <if test="bateryvolt != null">
+        bateryVolt,
+      </if>
+      <if test="loss != null">
+        loss,
+      </if>
+      <if test="meter != null">
+        meter,
+      </if>
+      <if test="valve != null">
+        valve,
+      </if>
+      <if test="iccard != null">
+        icCard,
+      </if>
+      <if test="working != null">
+        working,
+      </if>
+      <if test="valvestate != null">
+        valveState,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
+      <if test="controllerid != null">
+        #{controllerid,jdbcType=BIGINT},
+      </if>
+      <if test="intakeid != null">
+        #{intakeid,jdbcType=BIGINT},
+      </if>
+      <if test="rtuaddr != null">
+        #{rtuaddr,jdbcType=VARCHAR},
+      </if>
+      <if test="dt != null">
+        #{dt,jdbcType=DATE},
+      </if>
+      <if test="bateryvolt != null">
+        #{bateryvolt,jdbcType=TINYINT},
+      </if>
+      <if test="loss != null">
+        #{loss,jdbcType=TINYINT},
+      </if>
+      <if test="meter != null">
+        #{meter,jdbcType=TINYINT},
+      </if>
+      <if test="valve != null">
+        #{valve,jdbcType=TINYINT},
+      </if>
+      <if test="iccard != null">
+        #{iccard,jdbcType=TINYINT},
+      </if>
+      <if test="working != null">
+        #{working,jdbcType=TINYINT},
+      </if>
+      <if test="valvestate != null">
+        #{valvestate,jdbcType=TINYINT},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmAlarmStateLast">
+    <!--@mbg.generated-->
+    update rm_alarm_state_last
+    <set>
+      <if test="controllerid != null">
+        controllerId = #{controllerid,jdbcType=BIGINT},
+      </if>
+      <if test="intakeid != null">
+        intakeId = #{intakeid,jdbcType=BIGINT},
+      </if>
+      <if test="rtuaddr != null">
+        rtuAddr = #{rtuaddr,jdbcType=VARCHAR},
+      </if>
+      <if test="dt != null">
+        dt = #{dt,jdbcType=DATE},
+      </if>
+      <if test="bateryvolt != null">
+        bateryVolt = #{bateryvolt,jdbcType=TINYINT},
+      </if>
+      <if test="loss != null">
+        loss = #{loss,jdbcType=TINYINT},
+      </if>
+      <if test="meter != null">
+        meter = #{meter,jdbcType=TINYINT},
+      </if>
+      <if test="valve != null">
+        valve = #{valve,jdbcType=TINYINT},
+      </if>
+      <if test="iccard != null">
+        icCard = #{iccard,jdbcType=TINYINT},
+      </if>
+      <if test="working != null">
+        working = #{working,jdbcType=TINYINT},
+      </if>
+      <if test="valvestate != null">
+        valveState = #{valvestate,jdbcType=TINYINT},
+      </if>
+    </set>
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoRm.RmAlarmStateLast">
+    <!--@mbg.generated-->
+    update rm_alarm_state_last
+    set controllerId = #{controllerid,jdbcType=BIGINT},
+      intakeId = #{intakeid,jdbcType=BIGINT},
+      rtuAddr = #{rtuaddr,jdbcType=VARCHAR},
+      dt = #{dt,jdbcType=DATE},
+      bateryVolt = #{bateryvolt,jdbcType=TINYINT},
+      loss = #{loss,jdbcType=TINYINT},
+      meter = #{meter,jdbcType=TINYINT},
+      valve = #{valve,jdbcType=TINYINT},
+      icCard = #{iccard,jdbcType=TINYINT},
+      working = #{working,jdbcType=TINYINT},
+      valveState = #{valvestate,jdbcType=TINYINT}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+</mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAutoReportHistoryMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAutoReportHistoryMapper.xml
new file mode 100644
index 0000000..6df1e82
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAutoReportHistoryMapper.xml
@@ -0,0 +1,197 @@
+<?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.RmAutoReportHistoryMapper">
+  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoRm.RmAutoReportHistory">
+    <!--@mbg.generated-->
+    <!--@Table rm_auto_report_history-->
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="controllerId" jdbcType="BIGINT" property="controllerid" />
+    <result column="intakeId" jdbcType="BIGINT" property="intakeid" />
+    <result column="rtuAddr" jdbcType="VARCHAR" property="rtuaddr" />
+    <result column="dt" jdbcType="DATE" property="dt" />
+    <result column="rtuDt" jdbcType="DATE" property="rtudt" />
+    <result column="instantAmount" jdbcType="DOUBLE" property="instantamount" />
+    <result column="totalAmount" jdbcType="DOUBLE" property="totalamount" />
+    <result column="lossAmount" jdbcType="DOUBLE" property="lossamount" />
+    <result column="waterPress" jdbcType="DOUBLE" property="waterpress" />
+    <result column="batteryVolt" jdbcType="DOUBLE" property="batteryvolt" />
+    <result column="sunVolt" jdbcType="DOUBLE" property="sunvolt" />
+    <result column="signalValue" jdbcType="INTEGER" property="signalvalue" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--@mbg.generated-->
+    id, controllerId, intakeId, rtuAddr, dt, rtuDt, instantAmount, totalAmount, lossAmount, 
+    waterPress, batteryVolt, sunVolt, signalValue
+  </sql>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+    <!--@mbg.generated-->
+    select 
+    <include refid="Base_Column_List" />
+    from rm_auto_report_history
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    <!--@mbg.generated-->
+    delete from rm_auto_report_history
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoRm.RmAutoReportHistory">
+    <!--@mbg.generated-->
+    insert into rm_auto_report_history (id, controllerId, intakeId, 
+      rtuAddr, dt, rtuDt, instantAmount, 
+      totalAmount, lossAmount, waterPress, 
+      batteryVolt, sunVolt, signalValue
+      )
+    values (#{id,jdbcType=BIGINT}, #{controllerid,jdbcType=BIGINT}, #{intakeid,jdbcType=BIGINT}, 
+      #{rtuaddr,jdbcType=VARCHAR}, #{dt,jdbcType=DATE}, #{rtudt,jdbcType=DATE}, #{instantamount,jdbcType=DOUBLE}, 
+      #{totalamount,jdbcType=DOUBLE}, #{lossamount,jdbcType=DOUBLE}, #{waterpress,jdbcType=DOUBLE}, 
+      #{batteryvolt,jdbcType=DOUBLE}, #{sunvolt,jdbcType=DOUBLE}, #{signalvalue,jdbcType=INTEGER}
+      )
+  </insert>
+  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmAutoReportHistory">
+    <!--@mbg.generated-->
+    insert into rm_auto_report_history
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="controllerid != null">
+        controllerId,
+      </if>
+      <if test="intakeid != null">
+        intakeId,
+      </if>
+      <if test="rtuaddr != null">
+        rtuAddr,
+      </if>
+      <if test="dt != null">
+        dt,
+      </if>
+      <if test="rtudt != null">
+        rtuDt,
+      </if>
+      <if test="instantamount != null">
+        instantAmount,
+      </if>
+      <if test="totalamount != null">
+        totalAmount,
+      </if>
+      <if test="lossamount != null">
+        lossAmount,
+      </if>
+      <if test="waterpress != null">
+        waterPress,
+      </if>
+      <if test="batteryvolt != null">
+        batteryVolt,
+      </if>
+      <if test="sunvolt != null">
+        sunVolt,
+      </if>
+      <if test="signalvalue != null">
+        signalValue,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
+      <if test="controllerid != null">
+        #{controllerid,jdbcType=BIGINT},
+      </if>
+      <if test="intakeid != null">
+        #{intakeid,jdbcType=BIGINT},
+      </if>
+      <if test="rtuaddr != null">
+        #{rtuaddr,jdbcType=VARCHAR},
+      </if>
+      <if test="dt != null">
+        #{dt,jdbcType=DATE},
+      </if>
+      <if test="rtudt != null">
+        #{rtudt,jdbcType=DATE},
+      </if>
+      <if test="instantamount != null">
+        #{instantamount,jdbcType=DOUBLE},
+      </if>
+      <if test="totalamount != null">
+        #{totalamount,jdbcType=DOUBLE},
+      </if>
+      <if test="lossamount != null">
+        #{lossamount,jdbcType=DOUBLE},
+      </if>
+      <if test="waterpress != null">
+        #{waterpress,jdbcType=DOUBLE},
+      </if>
+      <if test="batteryvolt != null">
+        #{batteryvolt,jdbcType=DOUBLE},
+      </if>
+      <if test="sunvolt != null">
+        #{sunvolt,jdbcType=DOUBLE},
+      </if>
+      <if test="signalvalue != null">
+        #{signalvalue,jdbcType=INTEGER},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmAutoReportHistory">
+    <!--@mbg.generated-->
+    update rm_auto_report_history
+    <set>
+      <if test="controllerid != null">
+        controllerId = #{controllerid,jdbcType=BIGINT},
+      </if>
+      <if test="intakeid != null">
+        intakeId = #{intakeid,jdbcType=BIGINT},
+      </if>
+      <if test="rtuaddr != null">
+        rtuAddr = #{rtuaddr,jdbcType=VARCHAR},
+      </if>
+      <if test="dt != null">
+        dt = #{dt,jdbcType=DATE},
+      </if>
+      <if test="rtudt != null">
+        rtuDt = #{rtudt,jdbcType=DATE},
+      </if>
+      <if test="instantamount != null">
+        instantAmount = #{instantamount,jdbcType=DOUBLE},
+      </if>
+      <if test="totalamount != null">
+        totalAmount = #{totalamount,jdbcType=DOUBLE},
+      </if>
+      <if test="lossamount != null">
+        lossAmount = #{lossamount,jdbcType=DOUBLE},
+      </if>
+      <if test="waterpress != null">
+        waterPress = #{waterpress,jdbcType=DOUBLE},
+      </if>
+      <if test="batteryvolt != null">
+        batteryVolt = #{batteryvolt,jdbcType=DOUBLE},
+      </if>
+      <if test="sunvolt != null">
+        sunVolt = #{sunvolt,jdbcType=DOUBLE},
+      </if>
+      <if test="signalvalue != null">
+        signalValue = #{signalvalue,jdbcType=INTEGER},
+      </if>
+    </set>
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoRm.RmAutoReportHistory">
+    <!--@mbg.generated-->
+    update rm_auto_report_history
+    set controllerId = #{controllerid,jdbcType=BIGINT},
+      intakeId = #{intakeid,jdbcType=BIGINT},
+      rtuAddr = #{rtuaddr,jdbcType=VARCHAR},
+      dt = #{dt,jdbcType=DATE},
+      rtuDt = #{rtudt,jdbcType=DATE},
+      instantAmount = #{instantamount,jdbcType=DOUBLE},
+      totalAmount = #{totalamount,jdbcType=DOUBLE},
+      lossAmount = #{lossamount,jdbcType=DOUBLE},
+      waterPress = #{waterpress,jdbcType=DOUBLE},
+      batteryVolt = #{batteryvolt,jdbcType=DOUBLE},
+      sunVolt = #{sunvolt,jdbcType=DOUBLE},
+      signalValue = #{signalvalue,jdbcType=INTEGER}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+</mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAutoReportLastMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAutoReportLastMapper.xml
new file mode 100644
index 0000000..f334e3e
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAutoReportLastMapper.xml
@@ -0,0 +1,206 @@
+<?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.RmAutoReportLastMapper">
+  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoRm.RmAutoReportLast">
+    <!--@mbg.generated-->
+    <!--@Table rm_auto_report_last-->
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="controllerId" jdbcType="BIGINT" property="controllerid" />
+    <result column="intakeId" jdbcType="BIGINT" property="intakeid" />
+    <result column="rtuAddr" jdbcType="VARCHAR" property="rtuaddr" />
+    <result column="dt" jdbcType="DATE" property="dt" />
+    <result column="rtuDt" jdbcType="DATE" property="rtudt" />
+    <result column="instantAmount" jdbcType="DOUBLE" property="instantamount" />
+    <result column="totalAmount" jdbcType="DOUBLE" property="totalamount" />
+    <result column="lossAmount" jdbcType="DOUBLE" property="lossamount" />
+    <result column="waterPress" jdbcType="DOUBLE" property="waterpress" />
+    <result column="batteryVolt" jdbcType="DOUBLE" property="batteryvolt" />
+    <result column="sunVolt" jdbcType="DOUBLE" property="sunvolt" />
+    <result column="signalValue" jdbcType="INTEGER" property="signalvalue" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--@mbg.generated-->
+    id, controllerId, intakeId, rtuAddr, dt, rtuDt, instantAmount, totalAmount, lossAmount, 
+    waterPress, batteryVolt, sunVolt, signalValue
+  </sql>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+    <!--@mbg.generated-->
+    select 
+    <include refid="Base_Column_List" />
+    from rm_auto_report_last
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+
+  <select id="selectByRtuAddr" parameterType="java.lang.String" resultMap="BaseResultMap">
+    <!--@mbg.generated-->
+    select
+    <include refid="Base_Column_List" />
+    from rm_auto_report_last
+    where rtuAddr = #{rtuAddr,jdbcType=VARCHAR}
+  </select>
+
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    <!--@mbg.generated-->
+    delete from rm_auto_report_last
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoRm.RmAutoReportLast">
+    <!--@mbg.generated-->
+    insert into rm_auto_report_last (id, controllerId, intakeId, 
+      rtuAddr, dt, rtuDt, instantAmount, 
+      totalAmount, lossAmount, waterPress, 
+      batteryVolt, sunVolt, signalValue
+      )
+    values (#{id,jdbcType=BIGINT}, #{controllerid,jdbcType=BIGINT}, #{intakeid,jdbcType=BIGINT}, 
+      #{rtuaddr,jdbcType=VARCHAR}, #{dt,jdbcType=DATE}, #{rtudt,jdbcType=DATE}, #{instantamount,jdbcType=DOUBLE}, 
+      #{totalamount,jdbcType=DOUBLE}, #{lossamount,jdbcType=DOUBLE}, #{waterpress,jdbcType=DOUBLE}, 
+      #{batteryvolt,jdbcType=DOUBLE}, #{sunvolt,jdbcType=DOUBLE}, #{signalvalue,jdbcType=INTEGER}
+      )
+  </insert>
+  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmAutoReportLast">
+    <!--@mbg.generated-->
+    insert into rm_auto_report_last
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="controllerid != null">
+        controllerId,
+      </if>
+      <if test="intakeid != null">
+        intakeId,
+      </if>
+      <if test="rtuaddr != null">
+        rtuAddr,
+      </if>
+      <if test="dt != null">
+        dt,
+      </if>
+      <if test="rtudt != null">
+        rtuDt,
+      </if>
+      <if test="instantamount != null">
+        instantAmount,
+      </if>
+      <if test="totalamount != null">
+        totalAmount,
+      </if>
+      <if test="lossamount != null">
+        lossAmount,
+      </if>
+      <if test="waterpress != null">
+        waterPress,
+      </if>
+      <if test="batteryvolt != null">
+        batteryVolt,
+      </if>
+      <if test="sunvolt != null">
+        sunVolt,
+      </if>
+      <if test="signalvalue != null">
+        signalValue,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
+      <if test="controllerid != null">
+        #{controllerid,jdbcType=BIGINT},
+      </if>
+      <if test="intakeid != null">
+        #{intakeid,jdbcType=BIGINT},
+      </if>
+      <if test="rtuaddr != null">
+        #{rtuaddr,jdbcType=VARCHAR},
+      </if>
+      <if test="dt != null">
+        #{dt,jdbcType=DATE},
+      </if>
+      <if test="rtudt != null">
+        #{rtudt,jdbcType=DATE},
+      </if>
+      <if test="instantamount != null">
+        #{instantamount,jdbcType=DOUBLE},
+      </if>
+      <if test="totalamount != null">
+        #{totalamount,jdbcType=DOUBLE},
+      </if>
+      <if test="lossamount != null">
+        #{lossamount,jdbcType=DOUBLE},
+      </if>
+      <if test="waterpress != null">
+        #{waterpress,jdbcType=DOUBLE},
+      </if>
+      <if test="batteryvolt != null">
+        #{batteryvolt,jdbcType=DOUBLE},
+      </if>
+      <if test="sunvolt != null">
+        #{sunvolt,jdbcType=DOUBLE},
+      </if>
+      <if test="signalvalue != null">
+        #{signalvalue,jdbcType=INTEGER},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmAutoReportLast">
+    <!--@mbg.generated-->
+    update rm_auto_report_last
+    <set>
+      <if test="controllerid != null">
+        controllerId = #{controllerid,jdbcType=BIGINT},
+      </if>
+      <if test="intakeid != null">
+        intakeId = #{intakeid,jdbcType=BIGINT},
+      </if>
+      <if test="rtuaddr != null">
+        rtuAddr = #{rtuaddr,jdbcType=VARCHAR},
+      </if>
+      <if test="dt != null">
+        dt = #{dt,jdbcType=DATE},
+      </if>
+      <if test="rtudt != null">
+        rtuDt = #{rtudt,jdbcType=DATE},
+      </if>
+      <if test="instantamount != null">
+        instantAmount = #{instantamount,jdbcType=DOUBLE},
+      </if>
+      <if test="totalamount != null">
+        totalAmount = #{totalamount,jdbcType=DOUBLE},
+      </if>
+      <if test="lossamount != null">
+        lossAmount = #{lossamount,jdbcType=DOUBLE},
+      </if>
+      <if test="waterpress != null">
+        waterPress = #{waterpress,jdbcType=DOUBLE},
+      </if>
+      <if test="batteryvolt != null">
+        batteryVolt = #{batteryvolt,jdbcType=DOUBLE},
+      </if>
+      <if test="sunvolt != null">
+        sunVolt = #{sunvolt,jdbcType=DOUBLE},
+      </if>
+      <if test="signalvalue != null">
+        signalValue = #{signalvalue,jdbcType=INTEGER},
+      </if>
+    </set>
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoRm.RmAutoReportLast">
+    <!--@mbg.generated-->
+    update rm_auto_report_last
+    set controllerId = #{controllerid,jdbcType=BIGINT},
+      intakeId = #{intakeid,jdbcType=BIGINT},
+      rtuAddr = #{rtuaddr,jdbcType=VARCHAR},
+      dt = #{dt,jdbcType=DATE},
+      rtuDt = #{rtudt,jdbcType=DATE},
+      instantAmount = #{instantamount,jdbcType=DOUBLE},
+      totalAmount = #{totalamount,jdbcType=DOUBLE},
+      lossAmount = #{lossamount,jdbcType=DOUBLE},
+      waterPress = #{waterpress,jdbcType=DOUBLE},
+      batteryVolt = #{batteryvolt,jdbcType=DOUBLE},
+      sunVolt = #{sunvolt,jdbcType=DOUBLE},
+      signalValue = #{signalvalue,jdbcType=INTEGER}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+</mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TaskPool.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TaskPool.java
index 78ec7a6..69b1dd7 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TaskPool.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TaskPool.java
@@ -26,23 +26,25 @@
 	 * 澶氱嚎绋嬬幆澧冧笅杩愯
 	 * @return
 	 */
-	public static synchronized TaskSurpport popTask(){
-		TaskSurpport t = (tasks.size() > 0)?tasks.get(0):null ;
-		if(t != null){
-			tasks.remove(0) ;
-		}else{
-			try {
-				t = newTaskTree() ;
-			} catch (Exception e) {
-				log.error(e.getMessage() == null?"瀹炰緥鍖栦笂琛屾暟鎹鐞嗕换鍔″璞℃爲澶辫触锛�" : e.getMessage(), e);
-			} finally {
-				if(t == null){
-					log.error("瀹炰緥鍖栦笂琛屾暟鎹鐞嗕换鍔″璞″け璐ワ紒" );
+	public static TaskSurpport popTask(){
+		synchronized(tasks){
+			TaskSurpport t = (tasks.size() > 0)?tasks.get(0):null ;
+			if(t != null){
+				tasks.remove(0) ;
+			}else{
+				try {
+					t = newTaskTree() ;
+				} catch (Exception e) {
+					log.error(e.getMessage() == null?"瀹炰緥鍖栦笂琛屾暟鎹鐞嗕换鍔″璞℃爲澶辫触锛�" : e.getMessage(), e);
+				} finally {
+					if(t == null){
+						log.error("瀹炰緥鍖栦笂琛屾暟鎹鐞嗕换鍔″璞″け璐ワ紒" );
+					}
 				}
 			}
+
+			return t ;
 		}
-		
-		return t ;
 	}
 	
 	/**
@@ -51,18 +53,20 @@
 	 * 杩欓噷闇�瑕佸悓姝ラ攣锛屽洜涓轰笂闈㈡柟娉曚腑鎵ц瀹宼asks.get(0)涓旀湭鎵цtasks.remove(0)鏈熼棿锛屾湰鏂规硶鎵ц骞朵笖鎵ц瀹岋紝閭d箞鍚庢湡灏变細鍑轰贡瀛�
 	 * @param t
 	 */
-	public static synchronized void freeAndCleanTask(TaskSurpport t){
-		if(t != null){
-			boolean find = false ;
-			for(TaskSurpport tin : tasks){
-				if(tin == t){
-					find = true ;
-					break ;
+	public static void freeAndCleanTask(TaskSurpport t){
+		synchronized(tasks) {
+			if (t != null) {
+				boolean find = false;
+				for (TaskSurpport tin : tasks) {
+					if (tin == t) {
+						find = true;
+						break;
+					}
 				}
-			}
-			if(!find){
-				t.cleanMeAndSubs();
-				tasks.add(0, t) ;
+				if (!find) {
+					t.cleanMeAndSubs();
+					tasks.add(0, t);
+				}
 			}
 		}
 	}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TaskSurpport.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TaskSurpport.java
index f1e5b28..5842211 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TaskSurpport.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TaskSurpport.java
@@ -11,7 +11,7 @@
 	private static final Logger log = LogManager.getLogger(TaskSurpport.class.getName()) ;
 	
 	//褰撳墠鎵�澶勭悊鐨勪笂琛屾暟鎹墍灞濺TU鐨勫湴鍧�
-	public String rtuAddr_inRootTk ;//鍙湪鏍箁oot浠诲姟瀵硅薄涓婁細浠樻鍊�
+	//public String rtuAddr_inRootTk ;//鍙湪鏍箁oot浠诲姟瀵硅薄涓婁細浠樻鍊�
 	//鏈妭鐐归厤缃�
 	protected TaskConfig conf ;
 	//鏍逛换鍔�
@@ -35,7 +35,7 @@
 	 */
 	@Override
 	public void cleanMeAndSubs() {
-		rtuAddr_inRootTk = null ;
+		//rtuAddr_inRootTk = null ;
 		taskResult = null ;
 		if(this.subTasks != null && this.subTasks.length > 0){
 			for(int i = 0 ; i < this.subTasks.length; i++){
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/dbSv/DbSv.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/dbSv/DbSv.java
index c645532..05435e4 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/dbSv/DbSv.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/dbSv/DbSv.java
@@ -2,11 +2,20 @@
 
 import com.dy.pipIrrGlobal.daoPr.PrControllerMapper;
 import com.dy.pipIrrGlobal.daoPr.PrControllerTrampMapper;
+import com.dy.pipIrrGlobal.daoRm.RmAlarmStateHistoryMapper;
+import com.dy.pipIrrGlobal.daoRm.RmAlarmStateLastMapper;
+import com.dy.pipIrrGlobal.daoRm.RmAutoReportHistoryMapper;
+import com.dy.pipIrrGlobal.daoRm.RmAutoReportLastMapper;
 import com.dy.pipIrrGlobal.pojoPr.PrController;
 import com.dy.pipIrrGlobal.pojoPr.PrControllerTramp;
+import com.dy.pipIrrGlobal.pojoRm.RmAlarmStateHistory;
+import com.dy.pipIrrGlobal.pojoRm.RmAlarmStateLast;
+import com.dy.pipIrrGlobal.pojoRm.RmAutoReportHistory;
+import com.dy.pipIrrGlobal.pojoRm.RmAutoReportLast;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
@@ -22,6 +31,14 @@
     private PrControllerTrampMapper prControllerTrampMapperDao;//娴佹氮鎺у埗鍣―AO
     @Autowired
     private PrControllerMapper prControllerMapperDao ;//鎺у埗鍣―AO
+    @Autowired
+    private RmAlarmStateLastMapper rmAlarmStateLastMapperDao ;//鎺у埗鍣ㄦ渶鏂版姤璀﹀拰鐘舵�丏AO
+    @Autowired
+    private RmAlarmStateHistoryMapper rmAlarmStateHistoryMapperDao ;//鎺у埗鍣ㄥ巻鍙叉姤璀﹀拰鐘舵�丏AO
+    @Autowired
+    private RmAutoReportLastMapper rmAutoReportLastMapperDao ;//鎺у埗鍣ㄦ渶鏂颁笂鎶ユ暟鎹瓺AO
+    @Autowired
+    private RmAutoReportHistoryMapper rmAutoReportHistoryMapperDao ;//鎺у埗鍣ㄥ巻鍙蹭笂鎶ユ暟鎹瓺AO
 
     @Autowired
     @Lazy
@@ -33,7 +50,7 @@
      * @return 鎺у埗鍣�
      */
     public PrController getPrControllerByRtuAddr(String rtuAddr){
-        List<PrController> list = this.prControllerMapperDao.selectPrControllerByRtuAddr(rtuAddr) ;
+        List<PrController> list = this.prControllerMapperDao.getControllersByRtuAddr(rtuAddr) ;
         if(list != null && list.size() > 0){
             return list.get(0) ;
         }
@@ -45,20 +62,75 @@
      * @return 娴佹氮鎺у埗鍣�
      */
     public PrControllerTramp getPrControllerTrampByRtuAddr(String rtuAddr){
-        List<PrControllerTramp> list = this.prControllerTrampMapperDao.selectPrControllerTrampByRtuAddr(rtuAddr) ;
+        List<PrControllerTramp> list = this.prControllerTrampMapperDao.getPrControllerTrampByRtuAddr(rtuAddr) ;
         if(list != null && list.size() > 0){
             return list.get(0) ;
         }
         return null ;
     }
-
-
     /**
      * 淇濆瓨娴佹氮鎺у埗鍣�
      * @param po
      */
+    @Transactional(rollbackFor = Exception.class)
     public void savePrConctrollerTramp(PrControllerTramp po){
         this.prControllerTrampMapperDao.insert(po) ;
     }
+    /**
+     * 寰楀埌鎺у埗鍣ㄦ姤璀︿笌鐘舵�佹渶鏂拌褰�
+     * @param rtuAddr
+     * @return
+     */
+    public RmAlarmStateLast getRmLastAlarmState(String rtuAddr){
+        List<RmAlarmStateLast> list = rmAlarmStateLastMapperDao.selectByRtuAddr(rtuAddr) ;
+        if(list != null && list.size() > 0){
+            return list.get(0) ;
+        }
+        return null ;
+    }
+    /**
+     * 淇濆瓨鎺у埗鍣ㄦ姤璀︿笌鐘舵�佹渶鏂拌褰�
+     * @param po
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void saveRmAlarmStateLast(RmAlarmStateLast po){
+        this.rmAlarmStateLastMapperDao.insert(po) ;
+    }
+    /**
+     * 淇濆瓨鎺у埗鍣ㄦ姤璀︿笌鐘舵�佸巻鍙茶褰�
+     * @param po
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void saveRmAlarmStateHistory(RmAlarmStateHistory po){
+        this.rmAlarmStateHistoryMapperDao.insert(po) ;
+    }
+    /**
+     * 寰楀埌鎺у埗鍣ㄤ笂鎶ユ暟鎹渶鏂拌褰�
+     * @param rtuAddr
+     * @return
+     */
+    public RmAutoReportLast getRmLastAutoReport(String rtuAddr){
+        List<RmAutoReportLast> list = rmAutoReportLastMapperDao.selectByRtuAddr(rtuAddr) ;
+        if(list != null && list.size() > 0){
+            return list.get(0) ;
+        }
+        return null ;
+    }
+    /**
+     * 淇濆瓨鎺у埗鍣ㄤ笂鎶ユ暟鎹渶鏂拌褰�
+     * @param po
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void saveRmAutoReportLast(RmAutoReportLast po){
+        this.rmAutoReportLastMapperDao.insert(po) ;
+    }
+    /**
+     * 淇濆瓨鎺у埗鍣ㄤ笂鎶ユ暟鎹巻鍙茶褰�
+     * @param po
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void saveRmAutoReportHistory(RmAutoReportHistory po){
+        this.rmAutoReportHistoryMapperDao.insert(po) ;
+    }
 
 }
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealAlarmStatus.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealAlarmStatus.java
new file mode 100644
index 0000000..defaeea
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealAlarmStatus.java
@@ -0,0 +1,127 @@
+package com.dy.aceMw.server.rtuData.p206V1_0_0;
+
+import com.dy.aceMw.server.rtuData.TaskSurpport;
+import com.dy.aceMw.server.rtuData.dbSv.DbSv;
+import com.dy.common.mw.protocol.Data;
+import com.dy.common.mw.protocol.p206V1_0_0.DataAlarmVo;
+import com.dy.common.mw.protocol.p206V1_0_0.DataStateVo;
+import com.dy.common.mw.protocol.p206V1_0_0.DataV1_0_1;
+import com.dy.pipIrrGlobal.pojoPr.PrController;
+import com.dy.pipIrrGlobal.pojoRm.RmAlarmStateHistory;
+import com.dy.pipIrrGlobal.pojoRm.RmAlarmStateLast;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import java.util.Date;
+
+/**
+ * @Author liurunyu
+ * @Date 2024/1/15 21:59
+ * @LastEditTime 2024/1/15 21:59
+ * @Description
+ */
+public class TkDealAlarmStatus extends TaskSurpport {
+
+    private static final Logger log = LogManager.getLogger(TkDealAlarmStatus.class.getName()) ;
+
+    //绫籌D锛屼竴瀹氫笌Tree.xml閰嶇疆鏂囦欢涓厤缃竴鑷�
+    public static final String taskId = "TkDealAlarmStatus" ;
+
+    /**
+     * 鎵ц鑺傜偣浠诲姟锛氭姤璀﹀強鐘舵��
+     * @param data 闇�瑕佸鐞嗙殑鏁版嵁
+     */
+    @Override
+    public void execute(Object data) {
+        Data d = (Data)data ;
+        Object subD = d.getSubData() ;
+        if(subD != null){
+            DataV1_0_1 dV1_0_1 = (DataV1_0_1)subD ;
+            if(dV1_0_1 != null){
+                //dV1_0_1.dataCd81Vo 涓� dV1_0_1.dataCdC0Vo 涓嶄細鍚屾椂鏈夊��
+                if(dV1_0_1.dataCd81Vo != null){
+                    if(dV1_0_1.dataCd81Vo.alarmVo != null || dV1_0_1.dataCd81Vo.stateVo != null){
+                        Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ;
+                        DbSv sv = (DbSv)objs[0] ;
+                        PrController controller = (PrController)objs[1] ;
+                        this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), dV1_0_1.dataCd81Vo.alarmVo, dV1_0_1.dataCd81Vo.stateVo) ;
+                        this.saveHistory(sv, controller, d.getRtuAddr(), dV1_0_1.dataCd81Vo.alarmVo, dV1_0_1.dataCd81Vo.stateVo) ;
+                    }
+                } else if(dV1_0_1.dataCdC0Vo != null){
+                    if(dV1_0_1.dataCdC0Vo.alarmVo != null || dV1_0_1.dataCdC0Vo.stateVo != null){
+                        Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ;
+                        DbSv sv = (DbSv)objs[0] ;
+                        PrController controller = (PrController)objs[1] ;
+                        this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), dV1_0_1.dataCdC0Vo.alarmVo, dV1_0_1.dataCdC0Vo.stateVo) ;
+                        this.saveHistory(sv, controller, d.getRtuAddr(), dV1_0_1.dataCdC0Vo.alarmVo, dV1_0_1.dataCdC0Vo.stateVo) ;
+                    }
+                }
+            }
+        }
+    }
+    /**
+     * 淇濆瓨鎶ヨ鐘舵�佹渶鏂版暟鎹�
+     * @param sv 鏈嶅姟
+     * @param controller 鎺у埗鍣ㄥ璞�
+     * @param rtuAddr 鎺у埗鍣ㄥ湴鍧�
+     * @param alarmVo 鎶ヨ瀵硅薄
+     * @param stateVo 鐘舵�佸璞�
+     */
+    private void saveOrUpdateLast(DbSv sv, PrController controller, String rtuAddr, DataAlarmVo alarmVo, DataStateVo stateVo){
+        RmAlarmStateLast po = sv.getRmLastAlarmState(rtuAddr) ;
+        if(po == null){
+            po = new RmAlarmStateLast(null, controller.getId(), controller.getId(),
+                    rtuAddr,
+                    new Date(),
+                    alarmVo==null?null:alarmVo.batteryVolt, alarmVo==null?null:alarmVo.loss, alarmVo==null?null:alarmVo.meter, alarmVo==null?null:alarmVo.valve,
+                    stateVo==null?null:stateVo.icCard, stateVo==null?null:stateVo.working, stateVo==null?null:stateVo.valve) ;
+            sv.saveRmAlarmStateLast(po) ;
+        }else{
+            po = this.update(po, alarmVo, stateVo) ;
+            sv.saveRmAlarmStateLast(po);
+        }
+    }
+
+    /**
+     * 淇濆瓨鎶ヨ鐘舵�佸巻鍙茶褰�
+     * @param sv 鏈嶅姟
+     * @param controller 鎺у埗鍣ㄥ璞�
+     * @param rtuAddr 鎺у埗鍣ㄥ湴鍧�
+     * @param alarmVo 鎶ヨ瀵硅薄
+     * @param stateVo 鐘舵�佸璞�
+     */
+    private void saveHistory(DbSv sv, PrController controller, String rtuAddr, DataAlarmVo alarmVo, DataStateVo stateVo){
+        RmAlarmStateHistory po = new RmAlarmStateHistory(null, controller.getId(), controller.getId(),
+                rtuAddr,
+                new Date(),
+                alarmVo==null?null:alarmVo.batteryVolt, alarmVo==null?null:alarmVo.loss, alarmVo==null?null:alarmVo.meter, alarmVo==null?null:alarmVo.valve,
+                stateVo==null?null:stateVo.icCard, stateVo==null?null:stateVo.working, stateVo==null?null:stateVo.valve) ;
+        sv.saveRmAlarmStateHistory(po) ;
+    }
+
+
+    private RmAlarmStateLast update(RmAlarmStateLast po, DataAlarmVo alarmVo, DataStateVo stateVo){
+        po.dt = new Date() ;
+        if(alarmVo != null){
+            po.bateryvolt = alarmVo.batteryVolt ;
+            po.loss = alarmVo.loss ;
+            po.meter = alarmVo.meter ;
+            po.valve = alarmVo.valve ;
+        }else{
+            po.bateryvolt = null ;
+            po.loss = null ;
+            po.meter = null ;
+            po.valve = null ;
+        }
+        if(stateVo != null){
+           po.iccard = stateVo.icCard ;
+           po.working = stateVo.working ;
+           po.valvestate = stateVo.valve ;
+        }else{
+            po.iccard = null ;
+            po.working = null ;
+            po.valvestate = null ;
+        }
+        return po ;
+    }
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealAutoReport.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealAutoReport.java
new file mode 100644
index 0000000..5143c34
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealAutoReport.java
@@ -0,0 +1,38 @@
+package com.dy.aceMw.server.rtuData.p206V1_0_0;
+
+import com.dy.aceMw.server.rtuData.TaskSurpport;
+import com.dy.common.mw.protocol.Data;
+import com.dy.common.mw.protocol.p206V1_0_0.DataCdC0Vo;
+import com.dy.common.mw.protocol.p206V1_0_0.DataV1_0_1;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+/**
+ * @Author liurunyu
+ * @Date 2024/1/16 14:11
+ * @LastEditTime 2024/1/16 14:11
+ * @Description
+ */
+public class TkDealAutoReport  extends TaskSurpport {
+
+    private static final Logger log = LogManager.getLogger(TkDealAlarmStatus.class.getName()) ;
+
+    //绫籌D锛屼竴瀹氫笌Tree.xml閰嶇疆鏂囦欢涓厤缃竴鑷�
+    public static final String taskId = "TkDealAlarmStatus" ;
+
+    /**
+     * 鎵ц鑺傜偣浠诲姟锛歊TU鑷姤
+     * @param data 闇�瑕佸鐞嗙殑鏁版嵁
+     */
+    @Override
+    public void execute(Object data) {
+        Data d = (Data) data;
+        Object subD = d.getSubData();
+        if (subD != null) {
+            DataV1_0_1 dV1_0_1 = (DataV1_0_1) subD;
+            if (dV1_0_1 != null && dV1_0_1.dataCdC0Vo != null) {
+                DataCdC0Vo dataCdC0Vo = dV1_0_1.dataCdC0Vo ;
+            }
+        }
+    }
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkFindReport.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkFindReport.java
index 6255791..bd96177 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkFindReport.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkFindReport.java
@@ -28,15 +28,10 @@
      */
     @Override
     public void execute(Object data) {
-        if(data instanceof Data){
-            Data d = (Data)data ;
-            if(d.getCommandId() == null || d.getCommandId().trim().equals("")){
-                //鏃犲懡浠D
-                this.toNextTasks(data);
-            }
+        Data d = (Data)data ;
+        if(d.getCommandId() == null || d.getCommandId().trim().equals("")){
+            //鏃犲懡浠D
+            this.toNextTasks(data);
         }
-        //Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ;
-        //DbSv sv = (DbSv)objs[0] ;
-        //PrController controller = (PrController)objs[1] ;
     }
 }
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/resources/RtuDataDealTree.xml b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/resources/RtuDataDealTree.xml
index 75a82be..6eebb0b 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/resources/RtuDataDealTree.xml
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/resources/RtuDataDealTree.xml
@@ -14,6 +14,8 @@
 					<!-- 闈炴祦娴�匯TU锛屽繀椤绘斁鍦═kDealControllerTramp鍚庨潰 -->
 					<!-- 璇嗗埆涓诲姩涓婃姤鏁版嵁 -->
 					<task id="TkFindReport" name="璇嗗埆涓婃姤鏁版嵁" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkFindReport">
+						<task id="TkDealAlarmStatus" name="鎶ヨ涓庣姸鎬佹暟鎹�" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkDealAlarmStatus" />
+						<task id="TkDealAutoReport" name="缁堢鑷姤" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkDealAutoReport" />
 
 					</task>
 					<!-- 璇嗗埆鍛戒护鍝嶅簲鏁版嵁 -->
@@ -22,6 +24,7 @@
 						</task>
 					</task>
 				</task>
+			</task>
 		</task>
 	</task>
 </project>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/SeClientToVoClient.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/SeClientToVoClient.java
index dfd265e..f5452f0 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/SeClientToVoClient.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/SeClientToVoClient.java
@@ -20,7 +20,7 @@
     @Mapping(target = "name", source = "name")
     @Mapping(target = "clientNum", source = "clientnum")
     @Mapping(target = "phone", source = "phone")
-    @Mapping(target = "idCard", source = "idcard")
+    @Mapping(target = "idcard", source = "idcard")
     //@Mapping(target = "cardCount", source = "cardCount")
     @Mapping(target = "address", source = "address")
     @Mapping(target = "operateDt", source = "operatedt")

--
Gitblit v1.8.0