From 9281643d18bc2e0aaffed3c5f216d1df12d68424 Mon Sep 17 00:00:00 2001
From: wuzeyu <1223318623@qq.com>
Date: 星期四, 18 一月 2024 09:44:19 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/global/GlParse.java                  |    4 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83CloseVo.java                       |    8 
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerCtrl.java |   93 +
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrControllerTramp.java                               |   11 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmIntakeAmountMapper.xml                                            |  151 ++
 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                                           |    8 
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/result/ProjectResultCode.java              |    2 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/dbSv/DbSv.java                         |   90 +
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmOpenCloseValveReport.java                          |  172 ++
 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/daoRm/RmAutoReportLastMapper.java                           |   65 +
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/ControllerCtrl.java             |   49 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/ActiveCardCtrl.java                   |    9 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoController.java                                      |   11 
 pipIrr-platform/文档/取水口控制器及测控数据关系.docx                                                                                       |    0 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveReportMapper.xml                                    |  303 ++++
 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/RmAlarmStateHistoryMapper.xml                                       |  186 +++
 pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/role/RoleCtrl.java                               |  147 --
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealAutoReport.java       |  107 +
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAutoReportHistory.java                             |  115 +
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrControllerTrampMapper.java                          |   19 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAutoReportHistoryMapper.xml                                       |  197 +++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Up.java                        |    8 
 pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/role/DtoRole.java                                |    2 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealAlarmStatus.java      |  134 ++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmAlarmStateLastMapper.java                           |   65 +
 pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml                                                     |    8 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/Task.java                              |    4 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealCloseValveReport.java |   36 
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerSv.java   |   32 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerTrampMapper.xml                                         |   24 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveReportMapper.java                     |   56 
 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/java/com/dy/pipIrrGlobal/pojoPr/PrController.java                                    |   26 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealOpenValveReport.java  |   50 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmIntakeAmountMapper.java                             |   55 
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/ControllerSv.java               |   42 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrIntakeMapper.java                                   |    6 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAlarmStateHistory.java                             |  107 +
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAutoReportLastMapper.xml                                          |  206 +++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAutoReportLast.java                                |  115 +
 pipIrr-platform/文档/取水口控制器及测控数据关系.vsd                                                                                        |    0 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkPreGenObjs.java           |   13 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmAutoReportHistoryMapper.java                        |   56 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TaskSurpport.java                      |    8 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCdC0Vo.java                            |    4 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/Constant.java                                          |   57 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83OpenVo.java                        |    8 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerMapper.xml                                              |  147 +-
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml                                                  |    9 
 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                               |   24 
 /dev/null                                                                                                                   |   24 
 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/pojoRm/RmAlarmStateLast.java                                |  109 +
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/DtoIntakeController.java  |    4 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmIntakeAmount.java                                  |   90 +
 60 files changed, 3,244 insertions(+), 366 deletions(-)

diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83CloseVo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83CloseVo.java
index da14235..83d46cc 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83CloseVo.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83CloseVo.java
@@ -9,8 +9,8 @@
     // 6銆佹祦閲忚鏁呴殰鍏抽榾锛�7銆佺揣鎬ュ叧闃�锛�8銆佺敤鎴疯繙绋嬪紑闃�锛�9銆佺敤鎴疯繙绋嬪叧闃�锛�
     public Byte type ;
     public Double totalAmount; //绱娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999999锛屽崟浣嶄负m3銆�
-    public String cardNo ;//IC鍗$紪鍙�
-    public String icAddr ;//ic鍗″湴鍧�
+    public String IcCardNo;//IC鍗$紪鍙�
+    public String icCardAddr;//ic鍗″湴鍧�
     public Double remainMoney ;//鍓╀綑閲戦锛氱敤鎴蜂綑棰�4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0.00~999999.99锛屽崟浣嶄负鍏�
     public String openDt ;//鐢ㄦ按鎴风敤姘村紑濮嬫椂闂达細6瀛楄妭BCD鐮侊紝椤哄簭鏄勾鏈堟棩鏃跺垎绉掞紝鍏朵腑鍏厓骞�=2000+骞淬��
     public String closeDt ;//鐢ㄦ按鎴风敤姘寸粨鏉熸椂闂达細6瀛楄妭BCD鐮侊紝椤哄簭鏄勾鏈堟棩鏃跺垎绉掞紝鍏朵腑鍏厓骞�=2000+骞淬��
@@ -29,10 +29,10 @@
         sb.append(totalAmount==null?"":totalAmount);
         sb.append("\n");
         sb.append("      IC鍗$紪鍙凤細");
-        sb.append(cardNo);
+        sb.append(IcCardNo);
         sb.append("\n");
         sb.append("      ic鍗″湴鍧�锛�");
-        sb.append(icAddr);
+        sb.append(icCardAddr);
         sb.append("\n");
         sb.append("      鍓╀綑閲戦锛堝厓锛夛細");
         sb.append(remainMoney ==null?"": remainMoney);
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83OpenVo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83OpenVo.java
index 8accb71..ef094d6 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83OpenVo.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83OpenVo.java
@@ -11,8 +11,8 @@
     // 16锛岀敤鎴峰紑闃�鍚庣閬撳唴娌℃湁姘达紝鑷姩鍏抽榾銆傜閬撲笉鍑烘按鑷姩鍏抽榾
     public Byte type ;
     public Double totalAmount; //绱娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999999锛屽崟浣嶄负m3銆�
-    public String cardNo ;//IC鍗$紪鍙�
-    public String icAddr ;//ic鍗″湴鍧�
+    public String icCardNo;//IC鍗$紪鍙�
+    public String icCardAddr;//ic鍗″湴鍧�
     public Double remainMoney;//鍓╀綑閲戦锛氱敤鎴蜂綑棰�4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0.00~999999.99锛屽崟浣嶄负鍏�
     public String openDt ;//鐢ㄦ按鎴峰紑闃�鏃堕棿锛�6瀛楄妭BCD鐮侊紝椤哄簭鏄勾鏈堟棩鏃跺垎绉掞紝鍏朵腑鍏厓骞�=2000+骞淬��
     public String rtuDt ;//鎺у埗鍣ㄦ椂閽�
@@ -27,10 +27,10 @@
         sb.append(totalAmount==null?"":totalAmount);
         sb.append("\n");
         sb.append("      IC鍗$紪鍙凤細");
-        sb.append(cardNo);
+        sb.append(icCardNo);
         sb.append("\n");
         sb.append("      ic鍗″湴鍧�锛�");
-        sb.append(icAddr);
+        sb.append(icCardAddr);
         sb.append("\n");
         sb.append("      鍓╀綑閲戦锛堝厓锛夛細");
         sb.append(remainMoney ==null?"": remainMoney);
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_83_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Up.java
index 381487d..6ef5bbd 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Up.java
@@ -116,11 +116,11 @@
         cdData.totalAmount += tpInt * 100000000.0 ;
 
         //鐢ㄦ按鎴峰彿鏁版嵁鏍煎紡锛�5瀛楄妭BCD鐮佷綆浣嶅湪鍓嶉珮浣嶅湪鍚庛��
-        cdData.cardNo = ByteUtil.BCD2String_LE(bs, index, index + 4) ;
+        cdData.icCardNo = ByteUtil.BCD2String_LE(bs, index, index + 4) ;
         index += 5 ;
 
         //IC鍗″彿鏍煎紡锛�4瀛楄妭HEX鐮佷綆浣嶅湪鍓嶉珮浣嶅湪鍚庛��
-        cdData.cardNo = ByteUtil.bytesToHex(bs, index, index + 3) ;
+        cdData.icCardNo = ByteUtil.bytesToHex(bs, index, index + 3) ;
         index += 4 ;
 
         //鐢ㄦ按鎴蜂綑棰濓細鐢ㄦ埛浣欓4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0.00~999999.99锛屽崟浣嶄负鍏冦��
@@ -174,11 +174,11 @@
         cdData.totalAmount += tpInt * 100000000.0 ;
 
         //鐢ㄦ按鎴峰彿鏁版嵁鏍煎紡锛�5瀛楄妭BCD鐮佷綆浣嶅湪鍓嶉珮浣嶅湪鍚庛��
-        cdData.cardNo = ByteUtil.BCD2String_LE(bs, index, index + 4) ;
+        cdData.IcCardNo = ByteUtil.BCD2String_LE(bs, index, index + 4) ;
         index += 5 ;
 
         //IC鍗″彿鏍煎紡锛�4瀛楄妭HEX鐮佷綆浣嶅湪鍓嶉珮浣嶅湪鍚庛��
-        cdData.cardNo = ByteUtil.bytesToHex(bs, index, index + 3) ;
+        cdData.IcCardNo = ByteUtil.bytesToHex(bs, index, index + 3) ;
         index += 4 ;
 
         //鐢ㄦ按鎴蜂綑棰濓細鐢ㄦ埛浣欓4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0.00~999999.99锛屽崟浣嶄负鍏冦��
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 59d64ac..f9dbdc5 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
@@ -45,11 +45,19 @@
     List<VoController> getControllers(Map<?, ?> params);
 
     /**
-     * 鏍规嵁鎺у埗鍣ㄥ湴鍧�鑾峰彇鎺у埗鍣ㄥ垪琛�
+     * 鏍规嵁鎺у埗鍣ㄧ紪鍙疯幏鍙栨帶鍒跺櫒鍒楄〃
      * @param rtuAddr
      * @return
      */
     List<Map<String, Object>> getControllersByAddr(@Param("rtuAddr") String rtuAddr);
+
+    /**
+     * 鏍规嵁鎺у埗鍣ㄧ紪鍙疯幏鍙栨帶鍒跺櫒鍒楄〃
+     * @param rtuAddr
+     * @return
+     */
+    List<PrController> getControllersByRtuAddrAndIntakeNotNull(@Param("rtuAddr") String rtuAddr);
+
 
     /**
      * 鏍规嵁鎺у埗鍣ㄧ紪鍙烽�昏緫鍒犻櫎鎺у埗
@@ -64,4 +72,18 @@
      * @return
      */
     Integer getRecordCountOfController(@Param("controllerId") Long controllerId);
+
+    /**
+     * 鏍规嵁鎺у埗鍣ㄧ紪鍙疯幏鍙栧凡缁戝畾璁板綍鏁�
+     * @param controllerId
+     * @return
+     */
+    Integer getBindedCount(@Param("controllerId") Long controllerId);
+
+    /**
+     * 鏍规嵁鎺у埗鍣ㄧ紪鍙峰垹闄ゅ彇姘村彛缂栧彿
+     * @param controllerId
+     * @return
+     */
+    Integer deleteIntakeId(@Param("controllerId") Long controllerId);
 }
\ No newline at end of file
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..4d1b995 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;
 
@@ -11,7 +12,7 @@
  * @Date 2024/1/15 15:27
  * @LastEditTime 2024/1/15 15:27
  * @Description
- */   
+ */
 @Mapper
 public interface PrControllerTrampMapper extends BaseMapper<PrControllerTramp> {
     /**
@@ -47,7 +48,7 @@
      * @param rutAddr 鎺у埗鍣ㄥ湴鍧�
      * @return object by 鎺у埗鍣ㄥ湴鍧�
      */
-    List<PrControllerTramp> selectPrControllerTrampByRtuAddr(String rutAddr);
+    List<PrControllerTramp> getPrControllerTrampByRtuAddr(String rutAddr);
 
     /**
      * update record selective
@@ -62,4 +63,18 @@
      * @return update count
      */
     int updateByPrimaryKey(PrControllerTramp record);
+
+    /**
+     * 鏍规嵁鎺у埗鍣ㄧ紪鍙疯幏鍙栨祦娴帶鍒跺櫒鍦板潃
+     * @param controllerId 娴佹氮鎺у埗鍣ㄧ紪鍙�
+     * @return 璁板綍鏁伴噺
+     */
+    //String getTrampRtuAddr(@Param("controllerId") Long controllerId);
+
+    /**
+     * 鏍规嵁鎺у埗鍣ㄧ紪鍙疯幏鍙栨祦娴帶鍒跺櫒淇℃伅
+     * @param controllerId
+     * @return
+     */
+    PrControllerTramp getTrampControllerInfo(@Param("controllerId") Long controllerId);
 }
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrIntakeMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrIntakeMapper.java
index c1cb703..d6262c9 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrIntakeMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrIntakeMapper.java
@@ -104,4 +104,10 @@
      * @return  Level  鍖哄煙绛夌骇
      */
     Integer getLevelByRegionId(long regionId);
+
+    /**
+     * 鑾峰彇鏈粦鎺у埗鍣ㄧ殑鍙栨按鍙e垪琛�
+     * @return
+     */
+    List<Map<String, Object>> getNoBindingIntakes();
 }
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/daoRm/RmIntakeAmountMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmIntakeAmountMapper.java
new file mode 100644
index 0000000..d326cbc
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmIntakeAmountMapper.java
@@ -0,0 +1,55 @@
+package com.dy.pipIrrGlobal.daoRm;
+
+import com.dy.pipIrrGlobal.pojoRm.RmIntakeAmount;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @Author liurunyu
+ * @Date 2024/1/17 9:07
+ * @LastEditTime 2024/1/17 9:07
+ * @Description
+ */   
+@Mapper
+public interface RmIntakeAmountMapper {
+    /**
+     * 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(RmIntakeAmount record);
+
+    /**
+     * insert record to table selective
+     * @param record the record
+     * @return insert count
+     */
+    int insertSelective(RmIntakeAmount record);
+
+    /**
+     * select by primary key
+     * @param id primary key
+     * @return object by primary key
+     */
+    RmIntakeAmount selectByPrimaryKey(Long id);
+
+    /**
+     * update record selective
+     * @param record the updated record
+     * @return update count
+     */
+    int updateByPrimaryKeySelective(RmIntakeAmount record);
+
+    /**
+     * update record
+     * @param record the updated record
+     * @return update count
+     */
+    int updateByPrimaryKey(RmIntakeAmount record);
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveReportMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveReportMapper.java
new file mode 100644
index 0000000..8507461
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveReportMapper.java
@@ -0,0 +1,56 @@
+package com.dy.pipIrrGlobal.daoRm;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveReport;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @Author liurunyu
+ * @Date 2024/1/16 19:44
+ * @LastEditTime 2024/1/16 19:44
+ * @Description
+ */
+@Mapper
+public interface RmOpenCloseValveReportMapper extends BaseMapper<RmOpenCloseValveReport> {
+    /**
+     * 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(RmOpenCloseValveReport record);
+
+    /**
+     * insert record to table selective
+     * @param record the record
+     * @return insert count
+     */
+    int insertSelective(RmOpenCloseValveReport record);
+
+    /**
+     * select by primary key
+     * @param id primary key
+     * @return object by primary key
+     */
+    RmOpenCloseValveReport selectByPrimaryKey(Long id);
+
+    /**
+     * update record selective
+     * @param record the updated record
+     * @return update count
+     */
+    int updateByPrimaryKeySelective(RmOpenCloseValveReport record);
+
+    /**
+     * update record
+     * @param record the updated record
+     * @return update count
+     */
+    int updateByPrimaryKey(RmOpenCloseValveReport record);
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrController.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrController.java
index ed77806..0000ebb 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrController.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrController.java
@@ -8,6 +8,7 @@
 import com.dy.common.po.BaseEntity;
 import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
 import lombok.*;
 import org.hibernate.validator.constraints.Length;
 
@@ -43,12 +44,19 @@
     private Long id;
 
     /**
+     * 鍙栨按鍙D
+     */
+    @Schema(description = "鍙栨按鍙D", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "鍙栨按鍙D涓嶈兘涓虹┖")
+    private Long intakeId;
+
+    /**
      * 鎺у埗鍣ㄥ湴鍧�
      */
     @Schema(description = "鎺у埗鍣ㄥ湴鍧�", requiredMode = Schema.RequiredMode.REQUIRED)
     @NotBlank(message = "鎺у埗鍣ㄥ湴鍧�涓嶈兘涓虹┖")
     @Length(message = "鎺у埗鍣ㄥ湴鍧�涓嶅ぇ浜巤max}瀛�",max = 11)
-    private String rtuaddr;
+    private String rtuAddr;
 
     /**
      * 閫氳鍗忚
@@ -59,22 +67,16 @@
     private String protocol;
 
     /**
-     * 鍦ㄧ嚎鐘舵��;1-鍦ㄧ嚎锛�2-绂荤嚎
+     * 鍙戠幇鏃ユ湡鏃堕棿
      */
-    @Schema(description = "鍦ㄧ嚎鐘舵��", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    private Byte onlinestate;
-
-    /**
-     * 鏈�杩戜笂鎶ユ椂闂�
-     */
-    @Schema(description = "鏈�杩戜笂鎶ユ椂闂�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    private Date reporttime;
+    @Schema(description = "鍙戠幇鏃ユ湡鏃堕棿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    private Date findDt;
 
     /**
      * 娣诲姞鏂瑰紡;1-绯荤粺鑷姩锛�2-鎵嬪姩
      */
     @Schema(description = "娣诲姞鏂瑰紡", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    private Byte addways;
+    private Byte addWays;
 
     /**
      * 鎿嶄綔浜篒D
@@ -86,7 +88,7 @@
      * 鎿嶄綔鏃堕棿
      */
     @Schema(description = "鎿嶄綔鏃堕棿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    private Date operatedt;
+    private Date operateDt;
 
     /**
      * 閫昏緫鍒犻櫎鏍囪瘑;0-鏈垹闄わ紝1-鍒犻櫎
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrControllerTramp.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrControllerTramp.java
index 05ac965..02e942e 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrControllerTramp.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrControllerTramp.java
@@ -15,8 +15,11 @@
 import com.dy.common.po.BaseEntity;
 import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
 import lombok.*;
 import org.hibernate.validator.constraints.Length;
+
+import java.util.Date;
 
 /**
  * 娴佹氮鎺у埗鍣�
@@ -39,7 +42,7 @@
     public Long id;
 
     /**
-     * 閫氳鍗忚
+     * 鎺у埗鍣ㄥ湴鍧�
      */
     @Schema(description = "鎺у埗鍣ㄥ湴鍧�", requiredMode = Schema.RequiredMode.REQUIRED)
     @NotBlank(message = "鎺у埗鍣ㄥ湴鍧�涓嶈兘涓虹┖")
@@ -55,10 +58,10 @@
     public String protocol;
 
     /**
-     * 閫氳鍗忚
+     * 鍙戠幇鏃堕棿
      */
     @Schema(description = "鍙戠幇鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotBlank(message = "鍙戠幇鏃堕棿涓嶈兘涓虹┖")
-    public String findDt;//鍙戠幇鏃堕棿锛� yyyy-mm-dd HH:MM:SS锛�
+    @NotNull(message = "鍙戠幇鏃堕棿涓嶈兘涓虹┖")
+    public Date findDt;//鍙戠幇鏃堕棿锛� yyyy-mm-dd HH:MM:SS锛�
 
 }
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..7701176
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAlarmStateHistory.java
@@ -0,0 +1,107 @@
+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..24a6aab
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAlarmStateLast.java
@@ -0,0 +1,109 @@
+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..6a306d3
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAutoReportHistory.java
@@ -0,0 +1,115 @@
+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..a0f9424
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAutoReportLast.java
@@ -0,0 +1,115 @@
+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/java/com/dy/pipIrrGlobal/pojoRm/RmIntakeAmount.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmIntakeAmount.java
new file mode 100644
index 0000000..97ad83b
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmIntakeAmount.java
@@ -0,0 +1,90 @@
+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/17 9:07
+ * @LastEditTime 2024/1/17 9:07
+ * @Description 鍙栨按鍙e彇姘撮噺
+ */
+@TableName(value="rm_intake_amount", autoResultMap = true)
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(name = "鍙栨按鍙e彇姘撮噺")
+public class RmIntakeAmount implements BaseEntity {
+
+    public static final long serialVersionUID = 202401170908001L;
+    /**
+     * 涓婚敭
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @TableId(type = IdType.INPUT)
+    public Long id;
+
+    /**
+     * 鍙栨按鍙D锛堝閿級
+     */
+    @Schema(description = "鍙栨按鍙e疄浣撳閿�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    public Long intakeid;
+
+    /**
+    * 绱鍙栨按閲忥紙涓嶅寘鎷紡鎹熸按閲忥級
+    */
+    @Schema(description = "绱鍙栨按閲忥紙涓嶅寘鎷紡鎹熸按閲忥級", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Double amount;
+
+    /**
+    * 绱婕忔崯姘撮噺
+    */
+    @Schema(description = "绱婕忔崯姘撮噺", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+   public Double loss;
+
+    /**
+    * 鏈�鍚庤姘撮噺鐨勬帶鍒跺櫒ID锛堝閿級
+    */
+    @Schema(description = "鎺у埗鍣ㄥ疄浣撳閿�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    public Long controlleridlast;
+
+    /**
+    * 鏈�鍚庤姘撮噺鏃ユ湡
+    */
+    @Schema(description = "鏈�鍚庤姘撮噺鏃ユ湡", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    public Date dtlast;
+
+    /**
+    * 鏈�鍚庤姘撮噺鏃舵帶鍒跺櫒鍙栨按閲�
+    */
+    @Schema(description = "鏈�鍚庤姘撮噺鏃舵帶鍒跺櫒鍙栨按閲�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Double amountlast;
+
+    /**
+    * 鏈�鍚庤姘撮噺鏃舵帶鍒跺櫒绱姘撮噺
+    */
+    @Schema(description = "鏈�鍚庤姘撮噺鏃舵帶鍒跺櫒绱姘撮噺", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Double totalamountlast;
+
+    /**
+    * 鏈�鍚庤姘撮噺鏉ユ簮锛�1寮�闃�宸ヤ綔鎶ワ紝2鍏抽榾鎶ワ紝3鑷姤锛�
+    */
+    @Schema(description = "鏈�鍚庤姘撮噺鏉ユ簮锛�1寮�闃�宸ヤ綔鎶ワ紝2鍏抽榾鎶ワ紝3鑷姤锛�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Byte resourcetypelast;
+
+
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmOpenCloseValveReport.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmOpenCloseValveReport.java
new file mode 100644
index 0000000..f507c15
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmOpenCloseValveReport.java
@@ -0,0 +1,172 @@
+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 19:44
+ * @LastEditTime 2024/1/16 19:44
+ * @Description 鎺у埗鍣ㄥ紑鍏抽榾璁板綍
+ */
+@TableName(value="rm_open_close_valve_report", autoResultMap = true)
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(name = "鎺у埗鍣ㄥ紑鍏抽榾璁板綍")
+public class RmOpenCloseValveReport implements BaseEntity {
+
+    public static final long serialVersionUID = 202401161929001L;
+    /**
+     * 涓婚敭
+     */
+    @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;
+
+    /**
+    * 鍙栨按鍙e疄浣揑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 opdt;
+
+    /**
+    * 寮�闃�绫诲瀷
+    */
+    @Schema(description = "寮�闃�绫诲瀷", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Byte optype;
+
+    /**
+    * 寮�闃�鏃剁疮璁℃祦閲�
+    */
+    @Schema(description = "寮�闃�鏃剁疮璁℃祦閲�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Double optotalamount;
+
+    /**
+    * 寮�闃�IC鍗$紪鍙�
+    */
+    @Schema(description = "寮�闃�IC鍗$紪鍙�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public String opiccardno;
+
+    /**
+    * 寮�闃�ic鍗″湴鍧�
+    */
+    @Schema(description = "寮�闃�ic鍗″湴鍧�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public String opiccardaddr;
+
+    /**
+    * 寮�闃�鏃跺墿浣欓噾棰�
+    */
+    @Schema(description = "寮�闃�鏃跺墿浣欓噾棰�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Double opremainmoney;
+
+    /**
+    * 寮�闃�鏃舵帶鍒跺櫒鏃堕挓
+    */
+    @Schema(description = "寮�闃�鏃舵帶鍒跺櫒鏃堕挓", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    public Date opendt;
+
+    /**
+    * 鍏抽榾鏁版嵁鎺ユ敹鏃ユ湡鏃堕棿
+    */
+    @Schema(description = "闃�鏁版嵁鎺ユ敹鏃ユ湡鏃堕棿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    public Date cldt;
+
+    /**
+    * 鍏抽榾绫诲瀷
+    */
+    @Schema(description = "鍏抽榾绫诲瀷", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Byte cltype;
+
+    /**
+    * 鍏抽榾鏃剁疮璁℃祦閲�
+    */
+    @Schema(description = "鍏抽榾鏃剁疮璁℃祦閲�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Double cltotalamount;
+
+    /**
+     * 鍏抽榾鏃禝C鍗$紪鍙�
+     */
+    @Schema(description = "鍏抽榾鏃禝C鍗$紪鍙�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public String cliccardno;
+
+    /**
+    * 鍏抽榾鏃禝C鍗″湴鍧�
+    */
+    @Schema(description = "鍏抽榾鏃禝C鍗″湴鍧�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public String cliccardaddr;
+
+    /**
+    * 鍏抽榾鏃跺墿浣欓噾棰�
+    */
+    @Schema(description = "鍏抽榾鏃跺墿浣欓噾棰�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Double clremainmoney;
+
+    /**
+    * 鍏抽榾鎶ヤ腑鏈鐢ㄦ按閲�
+    */
+    @Schema(description = "鍏抽榾鎶ヤ腑鏈鐢ㄦ按閲�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Double clthisamount;
+
+    /**
+    * 鍏抽榾鎶ヤ腑鏈娑堣垂閲戦
+    */
+    @Schema(description = "鍏抽榾鎶ヤ腑鏈娑堣垂閲戦", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Double clthismoney;
+
+    /**
+    * 鍏抽榾鎶ヤ腑鏈鐢ㄦ按鏃堕暱锛堝垎閽燂級
+    */
+    @Schema(description = "鍏抽榾鎶ヤ腑鏈鐢ㄦ按鏃堕暱锛堝垎閽燂級", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Integer clthistime;
+
+    /**
+    * 鍏抽榾鎶ヤ腑鐨勫紑闃�鏃舵帶鍒跺櫒鏃堕挓
+    */
+    @Schema(description = "鍏抽榾鎶ヤ腑鐨勫紑闃�鏃舵帶鍒跺櫒鏃堕挓", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    public Date clopendt;
+
+    /**
+    * 鍏抽榾鏃舵帶鍒跺櫒鏃堕挓
+    */
+    @Schema(description = "鍏抽榾鏃舵帶鍒跺櫒鏃堕挓", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    public Date closedt;
+
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/Constant.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/Constant.java
index c523017..23e4cf8 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/Constant.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/Constant.java
@@ -1,7 +1,9 @@
 package com.dy.pipIrrGlobal.util;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 public class Constant {
     /**
@@ -11,6 +13,14 @@
     public static final Integer no = 0 ;
     public static final String YES = "1" ;
     public static final String NO = "0" ;
+
+    // 椤圭洰缂栧彿
+    public static final Integer projectCode_ym = 100;
+    public static final Integer projectCode_pj = 101;
+
+    // 鍗忚鍒楄〃
+    public static final String[] protocol = {"DYJS_2023", "DYJS_2024"};
+
     public static List<String[]> yesNo(){
         List<String[]> list = new ArrayList<>() ;
         list.add(new String[]{YES , "鏄�"}) ;
@@ -42,4 +52,51 @@
         return null ;
     }
 
+    // 1銆佸埛鍗″紑闃�锛�2鍒峰崱鍏抽榾锛�3銆佷腑蹇冪珯寮�闃�锛�4銆佷腑蹇冪珯鍏抽榾锛�5銆佹瑺璐瑰叧闃�锛�
+    // 6銆佹祦閲忚鏁呴殰鍏抽榾锛�7銆佺揣鎬ュ叧闃�锛�8銆佺敤鎴疯繙绋嬪紑闃�锛�9銆佺敤鎴疯繙绋嬪叧闃�锛�
+    // 16锛岀敤鎴峰紑闃�鍚庣閬撳唴娌℃湁姘达紝鑷姩鍏抽榾銆傜閬撲笉鍑烘按鑷姩鍏抽榾
+    public static final Integer valveOpenByIC = 1 ;//鍒峰崱寮�闃�
+    public static final Integer valveCloseByIC = 2 ;//鍒峰崱鍏抽榾
+    public static final Integer valveOpenByCenter = 3 ;//涓績绔欏紑闃�
+    public static final Integer valveCloseByCenter = 4 ;//涓績绔欏叧闃�
+    public static final Integer valveCloseByFee = 5 ;//娆犺垂鍏抽榾
+    public static final Integer valveCloseByFlowMeterFault = 6 ;//娴侀噺璁℃晠闅滃叧闃�
+    public static final Integer valveCloseByEmergency = 7 ;//绱ф�ュ叧闃�
+    public static final Integer valveOpenByRemoteUser = 8 ;//鐢ㄦ埛杩滅▼寮�闃�
+    public static final Integer valveCloseByRemoteUser = 9 ;//鐢ㄦ埛杩滅▼鍏抽榾锛�
+    public static final Integer valveCloseByNoWater = 16 ;//绠¢亾鏃犳按鑷姩鍏抽榾锛�
+
+    public static Map<Integer, String> openCloseValveTypes(){
+        Map<Integer, String> map = new HashMap<>() ;
+        map.put(valveOpenByIC, "鍒峰崱寮�闃�");
+        map.put(valveCloseByIC , "鍒峰崱鍏抽榾") ;
+        map.put(valveOpenByCenter , "涓績绔欏紑闃�") ;
+        map.put(valveCloseByCenter , "涓績绔欏叧闃�") ;
+        map.put(valveCloseByFee , "娆犺垂鍏抽榾") ;
+        map.put(valveCloseByFlowMeterFault , "娴侀噺璁℃晠闅滃叧闃�") ;
+        map.put(valveCloseByEmergency , "绱ф�ュ叧闃�") ;
+        map.put(valveOpenByRemoteUser , "鐢ㄦ埛杩滅▼寮�闃�") ;
+        map.put(valveCloseByRemoteUser , "鐢ㄦ埛杩滅▼鍏抽榾") ;
+        map.put(valveCloseByNoWater , "绠¢亾鏃犳按鑷姩鍏抽榾") ;
+        return map ;
+    }
+    public static String openCloseValveTypeName(Integer type){
+        if(type != null){
+            return switch (type.intValue()) {
+                case 1 -> "鍒峰崱寮�闃�";
+                case 2 -> "鍒峰崱鍏抽榾";
+                case 3 -> "涓績绔欏紑闃�";
+                case 4 -> "涓績绔欏叧闃�";
+                case 5 -> "娆犺垂鍏抽榾";
+                case 6 -> "娴侀噺璁℃晠闅滃叧闃�";
+                case 7 -> "绱ф�ュ叧闃�";
+                case 8 -> "鐢ㄦ埛杩滅▼寮�闃�";
+                case 9 -> "鐢ㄦ埛杩滅▼鍏抽榾";
+                case 16 -> "绠¢亾鏃犳按鑷姩鍏抽榾";
+                default -> "鏈煡";
+            };
+        }
+        return null ;
+    }
+
 }
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoController.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoController.java
index 2a35b3c..cdc8a43 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoController.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoController.java
@@ -32,11 +32,6 @@
     @ColumnWidth(15)
     private String rtuAddr;
 
-    @Schema(title = "鍦ㄧ嚎鐘舵��")
-    @ExcelProperty("鍦ㄧ嚎鐘舵��")
-    @ColumnWidth(15)
-    private String onlineState;
-
     @Schema(title = "缁戝畾鍙栨按鍙�")
     @ExcelProperty("缁戝畾鍙栨按鍙�")
     @ColumnWidth(10)
@@ -49,8 +44,8 @@
 
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    @Schema(title = "鏈�杩戜笂鎶ユ椂闂�")
-    @ExcelProperty("鏈�杩戜笂鎶ユ椂闂�")
+    @Schema(title = "鍙戠幇鏃ユ湡鏃堕棿")
+    @ExcelProperty("鍙戠幇鏃ユ湡鏃堕棿")
     @ColumnWidth(30)
-    private Date reportTime;
+    private Date findDt;
 }
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 edd8936..28bf7d0 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
@@ -114,9 +114,9 @@
         idSuffix: 7
 
 #椤圭洰缂栧彿
-projectCode:
-    ym: 100
-    pj: 101
+#projectCode:
+#    ym: 100
+#    pj: 101
 
 #閫氳鍗忚
-protocol: DYJS_2023,DYJS_2024
\ No newline at end of file
+#protocol: DYJS_2023,DYJS_2024
\ 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 5c5ef10..aa36478 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerMapper.xml
@@ -5,18 +5,28 @@
     <!--@mbg.generated-->
     <!--@Table pr_controller-->
     <id column="id" jdbcType="BIGINT" property="id" />
-    <result column="rtuAddr" jdbcType="VARCHAR" property="rtuaddr" />
+    <result column="intakeId" jdbcType="BIGINT" property="intakeId" />
+    <result column="rtuAddr" jdbcType="VARCHAR" property="rtuAddr" />
     <result column="protocol" jdbcType="VARCHAR" property="protocol" />
-    <result column="onlineState" jdbcType="TINYINT" property="onlinestate" />
-    <result column="reportTime" jdbcType="TIMESTAMP" property="reporttime" />
-    <result column="addWays" jdbcType="TINYINT" property="addways" />
+    <result column="findDt" jdbcType="TIMESTAMP" property="findDt" />
+    <result column="addWays" jdbcType="TINYINT" property="addWays" />
     <result column="operator" jdbcType="BIGINT" property="operator" />
-    <result column="operateDt" jdbcType="TIMESTAMP" property="operatedt" />
+    <result column="operateDt" jdbcType="TIMESTAMP" property="operateDt" />
     <result column="deleted" jdbcType="TINYINT" property="deleted" />
   </resultMap>
+  <resultMap id="PartResultMap" type="com.dy.pipIrrGlobal.pojoPr.PrController">
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="intakeId" jdbcType="BIGINT" property="intakeId" />
+    <result column="rtuAddr" jdbcType="VARCHAR" property="rtuAddr" />
+  </resultMap>
+
   <sql id="Base_Column_List">
     <!--@mbg.generated-->
-    id, rtuAddr, protocol, onlineState, reportTime, addWays, `operator`, operateDt, deleted
+    id, intakeId, rtuAddr, protocol, findDt, addWays, `operator`, operateDt, deleted
+  </sql>
+  <sql id="Part_Column_List">
+    <!--@mbg.generated-->
+    id, rtuAddr, intakeId
   </sql>
   <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
     <!--@mbg.generated-->
@@ -32,13 +42,13 @@
   </delete>
   <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoPr.PrController">
     <!--@mbg.generated-->
-    insert into pr_controller (id, rtuAddr, protocol, 
-      onlineState, reportTime, addWays, 
+    insert into pr_controller (id, intakeId, rtuAddr,
+      protocol, findDt, addWays,
       `operator`, operateDt, deleted
       )
-    values (#{id,jdbcType=BIGINT}, #{rtuaddr,jdbcType=VARCHAR}, #{protocol,jdbcType=VARCHAR}, 
-      #{onlinestate,jdbcType=TINYINT}, #{reporttime,jdbcType=TIMESTAMP}, #{addways,jdbcType=TINYINT}, 
-      #{operator,jdbcType=BIGINT}, #{operatedt,jdbcType=TIMESTAMP}, #{deleted,jdbcType=TINYINT}
+    values (#{id,jdbcType=BIGINT}, #{intakeId,jdbcType=BIGINT}, #{rtuAddr,jdbcType=VARCHAR},
+      #{protocol,jdbcType=VARCHAR}, #{findDt,jdbcType=TIMESTAMP}, #{addWays,jdbcType=TINYINT},
+      #{operator,jdbcType=BIGINT}, #{operateDt,jdbcType=TIMESTAMP}, #{deleted,jdbcType=TINYINT}
       )
   </insert>
   <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoPr.PrController">
@@ -48,25 +58,25 @@
       <if test="id != null">
         id,
       </if>
-      <if test="rtuaddr != null">
+      <if test="intakeId != null">
+        intakeId,
+      </if>
+      <if test="rtuAddr != null">
         rtuAddr,
       </if>
       <if test="protocol != null">
         protocol,
       </if>
-      <if test="onlinestate != null">
-        onlineState,
+      <if test="findDt != null">
+        findDt,
       </if>
-      <if test="reporttime != null">
-        reportTime,
-      </if>
-      <if test="addways != null">
+      <if test="addWays != null">
         addWays,
       </if>
       <if test="operator != null">
         `operator`,
       </if>
-      <if test="operatedt != null">
+      <if test="operateDt != null">
         operateDt,
       </if>
       <if test="deleted != null">
@@ -77,26 +87,26 @@
       <if test="id != null">
         #{id,jdbcType=BIGINT},
       </if>
-      <if test="rtuaddr != null">
-        #{rtuaddr,jdbcType=VARCHAR},
+      <if test="intakeId != null">
+        #{intakeId,jdbcType=BIGINT},
+      </if>
+      <if test="rtuAddr != null">
+        #{rtuAddr,jdbcType=VARCHAR},
       </if>
       <if test="protocol != null">
         #{protocol,jdbcType=VARCHAR},
       </if>
-      <if test="onlinestate != null">
-        #{onlinestate,jdbcType=TINYINT},
+      <if test="findDt != null">
+        #{findDt,jdbcType=TIMESTAMP},
       </if>
-      <if test="reporttime != null">
-        #{reporttime,jdbcType=TIMESTAMP},
-      </if>
-      <if test="addways != null">
-        #{addways,jdbcType=TINYINT},
+      <if test="addWays != null">
+        #{addWays,jdbcType=TINYINT},
       </if>
       <if test="operator != null">
         #{operator,jdbcType=BIGINT},
       </if>
-      <if test="operatedt != null">
-        #{operatedt,jdbcType=TIMESTAMP},
+      <if test="operateDt != null">
+        #{operateDt,jdbcType=TIMESTAMP},
       </if>
       <if test="deleted != null">
         #{deleted,jdbcType=TINYINT},
@@ -107,26 +117,26 @@
     <!--@mbg.generated-->
     update pr_controller
     <set>
-      <if test="rtuaddr != null">
-        rtuAddr = #{rtuaddr,jdbcType=VARCHAR},
+      <if test="intakeId != null">
+        intakeId = #{intakeId,jdbcType=BIGINT},
+      </if>
+      <if test="rtuAddr != null">
+        rtuAddr = #{rtuAddr,jdbcType=VARCHAR},
       </if>
       <if test="protocol != null">
         protocol = #{protocol,jdbcType=VARCHAR},
       </if>
-      <if test="onlinestate != null">
-        onlineState = #{onlinestate,jdbcType=TINYINT},
+      <if test="findDt != null">
+        findDt = #{findDt,jdbcType=TIMESTAMP},
       </if>
-      <if test="reporttime != null">
-        reportTime = #{reporttime,jdbcType=TIMESTAMP},
-      </if>
-      <if test="addways != null">
-        addWays = #{addways,jdbcType=TINYINT},
+      <if test="addWays != null">
+        addWays = #{addWays,jdbcType=TINYINT},
       </if>
       <if test="operator != null">
         `operator` = #{operator,jdbcType=BIGINT},
       </if>
-      <if test="operatedt != null">
-        operateDt = #{operatedt,jdbcType=TIMESTAMP},
+      <if test="operateDt != null">
+        operateDt = #{operateDt,jdbcType=TIMESTAMP},
       </if>
       <if test="deleted != null">
         deleted = #{deleted,jdbcType=TINYINT},
@@ -137,26 +147,32 @@
   <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoPr.PrController">
     <!--@mbg.generated-->
     update pr_controller
-    set rtuAddr = #{rtuaddr,jdbcType=VARCHAR},
+    set intakeId = #{intakeId,jdbcType=BIGINT},
+      rtuAddr = #{rtuAddr,jdbcType=VARCHAR},
       protocol = #{protocol,jdbcType=VARCHAR},
-      onlineState = #{onlinestate,jdbcType=TINYINT},
-      reportTime = #{reporttime,jdbcType=TIMESTAMP},
-      addWays = #{addways,jdbcType=TINYINT},
+      findDt = #{findDt,jdbcType=TIMESTAMP},
+      addWays = #{addWays,jdbcType=TINYINT},
       `operator` = #{operator,jdbcType=BIGINT},
-      operateDt = #{operatedt,jdbcType=TIMESTAMP},
+      operateDt = #{operateDt,jdbcType=TIMESTAMP},
       deleted = #{deleted,jdbcType=TINYINT}
     where id = #{id,jdbcType=BIGINT}
   </update>
 
-  <!--鏍规嵁鎸囧畾鑾峰彇鎺у埗鍣ㄨ褰曟暟-->
+  <!--鏍规嵁鎺у埗鍣ㄧ紪鍙峰垹闄ゅ彇姘村彛缂栧彿-->
+  <update id="deleteIntakeId">
+    UPDATE pr_controller SET intakeId = null WHERE id = ${controllerId}
+  </update>
+
+  <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇鎺у埗鍣ㄨ褰曟暟-->
   <select id="getRecordCount" resultType="java.lang.Long">
     SELECT
         COUNT(*) AS recordCount
     FROM pr_controller con
         INNER JOIN pr_intake_controller ic ON ic.controllerId = con.id
-        INNER JOIN pr_intake inta ON ic.intakeId = inta.id
+        INNER JOIN pr_intake inta ON con.intakeId = inta.id
     <where>
       AND ic.operateType = 1
+      AND deleted = 0
 
       <if test = "id != null and id > 0">
         AND con.id = ${id}
@@ -164,10 +180,6 @@
 
       <if test = "rtuAddr != null and rtuAddr !=''">
         AND con.rtuAddr like CONCAT('%',#{rtuAddr},'%')
-      </if>
-
-      <if test = "onlineState != null and onlineState > 0">
-        AND con.onlineState = ${onlineState}
       </if>
 
       <if test = "bindNumber != null and bindNumber > 0">
@@ -176,22 +188,19 @@
     </where>
   </select>
 
-  <!--鏍规嵁鎸囧畾鑾峰彇鎺у埗鍣ㄨ褰�-->
+  <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇鎺у埗鍣ㄨ褰�-->
   <select id="getControllers" resultType="com.dy.pipIrrGlobal.voPr.VoController">
     SELECT
         con.rtuAddr AS rtuAddr,
-        (CASE
-            WHEN con.onlineState = 1 THEN "鍦ㄧ嚎"
-            WHEN con.onlineState = 2 THEN "绂荤嚎"
-        END) AS onlineState,
         inta.name AS intakeName,
         (SELECT COUNT(*) FROM pr_intake_controller WHERE controllerId = con.id AND intakeId = inta.id AND operateType = 1) AS bindNumber,
-        con.reportTime
+        con.findDt
     FROM pr_controller con
         INNER JOIN pr_intake_controller ic ON ic.controllerId = con.id
-        INNER JOIN pr_intake inta ON ic.intakeId = inta.id
+        INNER JOIN pr_intake inta ON con.intakeId = inta.id
     <where>
       AND ic.operateType = 1
+      AND deleted = 0
 
       <if test = "id != null and id > 0">
         AND con.id = ${id}
@@ -199,10 +208,6 @@
 
       <if test = "rtuAddr != null and rtuAddr !=''">
         AND con.rtuAddr like CONCAT('%',#{rtuAddr},'%')
-      </if>
-
-      <if test = "onlineState != null and onlineState > 0">
-        AND con.onlineState = ${onlineState}
       </if>
 
       <if test = "bindNumber != null and bindNumber > 0">
@@ -213,12 +218,19 @@
     <if test="pageCurr != null and pageSize != null">
       LIMIT ${pageCurr}, ${pageSize}
     </if>
-
   </select>
 
   <!--鏍规嵁鎺у埗鍣ㄥ湴鍧�鑾峰彇鎺у埗鍣ㄥ垪琛�-->
   <select id="getControllersByAddr" resultType="java.util.Map">
-    SELECT id, rtuAddr FROM pr_controller WHERE rtuAddr LIKE CONCAT('%',#{rtuAddr},'%')
+    SELECT id, rtuAddr FROM pr_controller WHERE deleted = 0 AND rtuAddr LIKE CONCAT('%',#{rtuAddr},'%')
+  </select>
+
+  <!--鏍规嵁鎺у埗鍣ㄥ湴鍧�鑾峰彇鎺у埗鍣ㄥ垪琛�-->
+  <select id="getControllersByRtuAddrAndIntakeNotNull" parameterType="java.lang.String" resultMap="PartResultMap">
+    SELECT
+    <include refid="Part_Column_List">
+    </include>
+    FROM pr_controller WHERE deleted = 0 AND intakeId is not null AND rtuAddr=#{rtuAddr,jdbcType=VARCHAR}
   </select>
 
   <!--鏍规嵁鎺у埗鍣ㄧ紪鍙烽�昏緫鍒犻櫎鎺у埗-->
@@ -230,4 +242,9 @@
   <select id="getRecordCountOfController" resultType="java.lang.Integer">
     SELECT COUNT(*) AS recordCount FROM pr_controller WHERE deleted = 0 AND id = ${controllerId}
   </select>
+
+  <!--鏍规嵁鎺у埗鍣ㄧ紪鍙疯幏鍙栧凡缁戝畾璁板綍鏁�-->
+  <select id="getBindedCount" resultType="java.lang.Integer">
+    SELECT COUNT(*) AS recordCount FROM pr_controller WHERE rtuAddr = (SELECT rtuAddr FROM pr_controller_tramp WHERE id = ${controllerId}) AND intakeId IS NOT NULL
+  </select>
 </mapper>
\ No newline at end of file
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..3753a1b 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerTrampMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerTrampMapper.xml
@@ -7,7 +7,7 @@
     <id column="id" jdbcType="BIGINT" property="id" />
     <result column="rtuAddr" jdbcType="VARCHAR" property="rtuAddr" />
     <result column="protocol" jdbcType="VARCHAR" property="protocol" />
-    <result column="findDt" jdbcType="VARCHAR" property="findDt" />
+    <result column="findDt" jdbcType="TIMESTAMP" property="findDt" />
   </resultMap>
   <sql id="Base_Column_List">
     <!--@mbg.generated-->
@@ -20,13 +20,15 @@
     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" />
     from pr_controller_tramp
     where rtuAddr = #{rtuAddr,jdbcType=VARCHAR}
   </select>
+
   <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
     <!--@mbg.generated-->
     delete from pr_controller_tramp
@@ -37,7 +39,7 @@
     insert into pr_controller_tramp (id, rtuAddr, protocol, 
       findDt)
     values (#{id,jdbcType=BIGINT}, #{rtuAddr,jdbcType=VARCHAR}, #{protocol,jdbcType=VARCHAR},
-      #{findDt,jdbcType=VARCHAR})
+      #{findDt,jdbcType=TIMESTAMP})
   </insert>
   <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoPr.PrControllerTramp">
     <!--@mbg.generated-->
@@ -67,7 +69,7 @@
         #{protocol,jdbcType=VARCHAR},
       </if>
       <if test="findDt != null">
-        #{findDt,jdbcType=VARCHAR},
+        #{findDt,jdbcType=TIMESTAMP},
       </if>
     </trim>
   </insert>
@@ -82,7 +84,7 @@
         protocol = #{protocol,jdbcType=VARCHAR},
       </if>
       <if test="findDt != null">
-        findDt = #{findDt,jdbcType=VARCHAR},
+        findDt = #{findDt,jdbcType=TIMESTAMP},
       </if>
     </set>
     where id = #{id,jdbcType=BIGINT}
@@ -92,7 +94,17 @@
     update pr_controller_tramp
     set rtuAddr = #{rtuAddr,jdbcType=VARCHAR},
       protocol = #{protocol,jdbcType=VARCHAR},
-      findDt = #{findDt,jdbcType=VARCHAR}
+      findDt = #{findDt,jdbcType=TIMESTAMP}
     where id = #{id,jdbcType=BIGINT}
   </update>
+
+  <!--鏍规嵁鎺у埗鍣ㄧ紪鍙疯幏鍙栨祦娴帶鍒跺櫒鍦板潃-->
+<!--  <select id="getTrampRtuAddr" resultType="java.lang.String">-->
+<!--    SELECT rtuAddr FROM pr_controller_tramp WHERE id = ${controllerId}-->
+<!--  </select>-->
+
+  <!--鏍规嵁鎺у埗鍣ㄧ紪鍙疯幏鍙栨祦娴帶鍒跺櫒淇℃伅-->
+  <select id="getTrampControllerInfo" resultMap="BaseResultMap">
+    SELECT rtuAddr, protocol, findDt FROM pr_controller_tramp WHERE id = ${controllerId}
+  </select>
 </mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml
index bc529ac..9530df5 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml
@@ -309,4 +309,13 @@
     where region.id = #{regionId,jdbcType=BIGINT}
   </select>
 
+  <!--鑾峰彇鏈粦鎺у埗鍣ㄧ殑鍙栨按鍙e垪琛�-->
+  <select id="getNoBindingIntakes" resultType="java.util.HashMap">
+    SELECT
+        CAST(inta.id AS char)AS intakeId,
+        name AS intakeName
+    FROM pr_intake inta
+    WHERE id NOT IN(SELECT intakeId FROM pr_controller) AND deleted = 0
+  </select>
+
 </mapper>
\ No newline at end of file
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-global/src/main/resources/mapper/RmIntakeAmountMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmIntakeAmountMapper.xml
new file mode 100644
index 0000000..d1eb46e
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmIntakeAmountMapper.xml
@@ -0,0 +1,151 @@
+<?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.RmIntakeAmountMapper">
+  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoRm.RmIntakeAmount">
+    <!--@mbg.generated-->
+    <!--@Table rm_intake_amount-->
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="intakeId" jdbcType="BIGINT" property="intakeid" />
+    <result column="amount" jdbcType="DOUBLE" property="amount" />
+    <result column="loss" jdbcType="DOUBLE" property="loss" />
+    <result column="controllerIdLast" jdbcType="BIGINT" property="controlleridlast" />
+    <result column="dtLast" jdbcType="DATE" property="dtlast" />
+    <result column="amountLast" jdbcType="DOUBLE" property="amountlast" />
+    <result column="totalAmountLast" jdbcType="DOUBLE" property="totalamountlast" />
+    <result column="resourceTypeLast" jdbcType="TINYINT" property="resourcetypelast" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--@mbg.generated-->
+    id, intakeId, amount, loss, controllerIdLast, dtLast, amountLast, totalAmountLast, 
+    resourceTypeLast
+  </sql>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+    <!--@mbg.generated-->
+    select 
+    <include refid="Base_Column_List" />
+    from rm_intake_amount
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    <!--@mbg.generated-->
+    delete from rm_intake_amount
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoRm.RmIntakeAmount">
+    <!--@mbg.generated-->
+    insert into rm_intake_amount (id, intakeId, amount, 
+      loss, controllerIdLast, dtLast, 
+      amountLast, totalAmountLast, resourceTypeLast
+      )
+    values (#{id,jdbcType=BIGINT}, #{intakeid,jdbcType=BIGINT}, #{amount,jdbcType=DOUBLE}, 
+      #{loss,jdbcType=DOUBLE}, #{controlleridlast,jdbcType=BIGINT}, #{dtlast,jdbcType=DATE}, 
+      #{amountlast,jdbcType=DOUBLE}, #{totalamountlast,jdbcType=DOUBLE}, #{resourcetypelast,jdbcType=TINYINT}
+      )
+  </insert>
+  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmIntakeAmount">
+    <!--@mbg.generated-->
+    insert into rm_intake_amount
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="intakeid != null">
+        intakeId,
+      </if>
+      <if test="amount != null">
+        amount,
+      </if>
+      <if test="loss != null">
+        loss,
+      </if>
+      <if test="controlleridlast != null">
+        controllerIdLast,
+      </if>
+      <if test="dtlast != null">
+        dtLast,
+      </if>
+      <if test="amountlast != null">
+        amountLast,
+      </if>
+      <if test="totalamountlast != null">
+        totalAmountLast,
+      </if>
+      <if test="resourcetypelast != null">
+        resourceTypeLast,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
+      <if test="intakeid != null">
+        #{intakeid,jdbcType=BIGINT},
+      </if>
+      <if test="amount != null">
+        #{amount,jdbcType=DOUBLE},
+      </if>
+      <if test="loss != null">
+        #{loss,jdbcType=DOUBLE},
+      </if>
+      <if test="controlleridlast != null">
+        #{controlleridlast,jdbcType=BIGINT},
+      </if>
+      <if test="dtlast != null">
+        #{dtlast,jdbcType=DATE},
+      </if>
+      <if test="amountlast != null">
+        #{amountlast,jdbcType=DOUBLE},
+      </if>
+      <if test="totalamountlast != null">
+        #{totalamountlast,jdbcType=DOUBLE},
+      </if>
+      <if test="resourcetypelast != null">
+        #{resourcetypelast,jdbcType=TINYINT},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmIntakeAmount">
+    <!--@mbg.generated-->
+    update rm_intake_amount
+    <set>
+      <if test="intakeid != null">
+        intakeId = #{intakeid,jdbcType=BIGINT},
+      </if>
+      <if test="amount != null">
+        amount = #{amount,jdbcType=DOUBLE},
+      </if>
+      <if test="loss != null">
+        loss = #{loss,jdbcType=DOUBLE},
+      </if>
+      <if test="controlleridlast != null">
+        controllerIdLast = #{controlleridlast,jdbcType=BIGINT},
+      </if>
+      <if test="dtlast != null">
+        dtLast = #{dtlast,jdbcType=DATE},
+      </if>
+      <if test="amountlast != null">
+        amountLast = #{amountlast,jdbcType=DOUBLE},
+      </if>
+      <if test="totalamountlast != null">
+        totalAmountLast = #{totalamountlast,jdbcType=DOUBLE},
+      </if>
+      <if test="resourcetypelast != null">
+        resourceTypeLast = #{resourcetypelast,jdbcType=TINYINT},
+      </if>
+    </set>
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoRm.RmIntakeAmount">
+    <!--@mbg.generated-->
+    update rm_intake_amount
+    set intakeId = #{intakeid,jdbcType=BIGINT},
+      amount = #{amount,jdbcType=DOUBLE},
+      loss = #{loss,jdbcType=DOUBLE},
+      controllerIdLast = #{controlleridlast,jdbcType=BIGINT},
+      dtLast = #{dtlast,jdbcType=DATE},
+      amountLast = #{amountlast,jdbcType=DOUBLE},
+      totalAmountLast = #{totalamountlast,jdbcType=DOUBLE},
+      resourceTypeLast = #{resourcetypelast,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/RmOpenCloseValveReportMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveReportMapper.xml
new file mode 100644
index 0000000..53ac000
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveReportMapper.xml
@@ -0,0 +1,303 @@
+<?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.RmOpenCloseValveReportMapper">
+  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveReport">
+    <!--@mbg.generated-->
+    <!--@Table rm_open_close_valve_report-->
+    <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="opDt" jdbcType="DATE" property="opdt" />
+    <result column="opType" jdbcType="TINYINT" property="optype" />
+    <result column="opTotalAmount" jdbcType="DOUBLE" property="optotalamount" />
+    <result column="opIcCardNo" jdbcType="VARCHAR" property="opiccardno" />
+    <result column="opIcCardAddr" jdbcType="VARCHAR" property="opiccardaddr" />
+    <result column="opRemainMoney" jdbcType="DOUBLE" property="opremainmoney" />
+    <result column="openDt" jdbcType="DATE" property="opendt" />
+    <result column="clDt" jdbcType="DATE" property="cldt" />
+    <result column="clType" jdbcType="TINYINT" property="cltype" />
+    <result column="clTotalAmount" jdbcType="DOUBLE" property="cltotalamount" />
+    <result column="clIcCardNo" jdbcType="VARCHAR" property="cliccardno" />
+    <result column="clIcCardAddr" jdbcType="VARCHAR" property="cliccardaddr" />
+    <result column="clRemainMoney" jdbcType="DOUBLE" property="clremainmoney" />
+    <result column="clThisAmount" jdbcType="DOUBLE" property="clthisamount" />
+    <result column="clThisMoney" jdbcType="DOUBLE" property="clthismoney" />
+    <result column="clThisTime" jdbcType="INTEGER" property="clthistime" />
+    <result column="clOpenDt" jdbcType="DATE" property="clopendt" />
+    <result column="closeDt" jdbcType="DATE" property="closedt" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--@mbg.generated-->
+    id, controllerId, intakeId, rtuAddr, opDt, opType, opTotalAmount, opIcCardNo, opIcCardAddr, 
+    opRemainMoney, openDt, clDt, clType, clTotalAmount, clIcCardNo, clIcCardAddr, clRemainMoney, 
+    clThisAmount, clThisMoney, clThisTime, clOpenDt, closeDt
+  </sql>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+    <!--@mbg.generated-->
+    select 
+    <include refid="Base_Column_List" />
+    from rm_open_close_valve_report
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    <!--@mbg.generated-->
+    delete from rm_open_close_valve_report
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveReport">
+    <!--@mbg.generated-->
+    insert into rm_open_close_valve_report (id, controllerId, intakeId, 
+      rtuAddr, opDt, opType, 
+      opTotalAmount, opIcCardNo, opIcCardAddr, 
+      opRemainMoney, openDt, clDt, 
+      clType, clTotalAmount, clIcCardNo, 
+      clIcCardAddr, clRemainMoney, clThisAmount, 
+      clThisMoney, clThisTime, clOpenDt, 
+      closeDt)
+    values (#{id,jdbcType=BIGINT}, #{controllerid,jdbcType=BIGINT}, #{intakeid,jdbcType=BIGINT}, 
+      #{rtuaddr,jdbcType=VARCHAR}, #{opdt,jdbcType=DATE}, #{optype,jdbcType=TINYINT}, 
+      #{optotalamount,jdbcType=DOUBLE}, #{opiccardno,jdbcType=VARCHAR}, #{opiccardaddr,jdbcType=VARCHAR}, 
+      #{opremainmoney,jdbcType=DOUBLE}, #{opendt,jdbcType=DATE}, #{cldt,jdbcType=DATE}, 
+      #{cltype,jdbcType=TINYINT}, #{cltotalamount,jdbcType=DOUBLE}, #{cliccardno,jdbcType=VARCHAR}, 
+      #{cliccardaddr,jdbcType=VARCHAR}, #{clremainmoney,jdbcType=DOUBLE}, #{clthisamount,jdbcType=DOUBLE}, 
+      #{clthismoney,jdbcType=DOUBLE}, #{clthistime,jdbcType=INTEGER}, #{clopendt,jdbcType=DATE}, 
+      #{closedt,jdbcType=DATE})
+  </insert>
+  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveReport">
+    <!--@mbg.generated-->
+    insert into rm_open_close_valve_report
+    <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="opdt != null">
+        opDt,
+      </if>
+      <if test="optype != null">
+        opType,
+      </if>
+      <if test="optotalamount != null">
+        opTotalAmount,
+      </if>
+      <if test="opiccardno != null">
+        opIcCardNo,
+      </if>
+      <if test="opiccardaddr != null">
+        opIcCardAddr,
+      </if>
+      <if test="opremainmoney != null">
+        opRemainMoney,
+      </if>
+      <if test="opendt != null">
+        openDt,
+      </if>
+      <if test="cldt != null">
+        clDt,
+      </if>
+      <if test="cltype != null">
+        clType,
+      </if>
+      <if test="cltotalamount != null">
+        clTotalAmount,
+      </if>
+      <if test="cliccardno != null">
+        clIcCardNo,
+      </if>
+      <if test="cliccardaddr != null">
+        clIcCardAddr,
+      </if>
+      <if test="clremainmoney != null">
+        clRemainMoney,
+      </if>
+      <if test="clthisamount != null">
+        clThisAmount,
+      </if>
+      <if test="clthismoney != null">
+        clThisMoney,
+      </if>
+      <if test="clthistime != null">
+        clThisTime,
+      </if>
+      <if test="clopendt != null">
+        clOpenDt,
+      </if>
+      <if test="closedt != null">
+        closeDt,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
+      <if test="controllerid != null">
+        #{controllerid,jdbcType=BIGINT},
+      </if>
+      <if test="intakeid != null">
+        #{intakeid,jdbcType=BIGINT},
+      </if>
+      <if test="rtuaddr != null">
+        #{rtuaddr,jdbcType=VARCHAR},
+      </if>
+      <if test="opdt != null">
+        #{opdt,jdbcType=DATE},
+      </if>
+      <if test="optype != null">
+        #{optype,jdbcType=TINYINT},
+      </if>
+      <if test="optotalamount != null">
+        #{optotalamount,jdbcType=DOUBLE},
+      </if>
+      <if test="opiccardno != null">
+        #{opiccardno,jdbcType=VARCHAR},
+      </if>
+      <if test="opiccardaddr != null">
+        #{opiccardaddr,jdbcType=VARCHAR},
+      </if>
+      <if test="opremainmoney != null">
+        #{opremainmoney,jdbcType=DOUBLE},
+      </if>
+      <if test="opendt != null">
+        #{opendt,jdbcType=DATE},
+      </if>
+      <if test="cldt != null">
+        #{cldt,jdbcType=DATE},
+      </if>
+      <if test="cltype != null">
+        #{cltype,jdbcType=TINYINT},
+      </if>
+      <if test="cltotalamount != null">
+        #{cltotalamount,jdbcType=DOUBLE},
+      </if>
+      <if test="cliccardno != null">
+        #{cliccardno,jdbcType=VARCHAR},
+      </if>
+      <if test="cliccardaddr != null">
+        #{cliccardaddr,jdbcType=VARCHAR},
+      </if>
+      <if test="clremainmoney != null">
+        #{clremainmoney,jdbcType=DOUBLE},
+      </if>
+      <if test="clthisamount != null">
+        #{clthisamount,jdbcType=DOUBLE},
+      </if>
+      <if test="clthismoney != null">
+        #{clthismoney,jdbcType=DOUBLE},
+      </if>
+      <if test="clthistime != null">
+        #{clthistime,jdbcType=INTEGER},
+      </if>
+      <if test="clopendt != null">
+        #{clopendt,jdbcType=DATE},
+      </if>
+      <if test="closedt != null">
+        #{closedt,jdbcType=DATE},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveReport">
+    <!--@mbg.generated-->
+    update rm_open_close_valve_report
+    <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="opdt != null">
+        opDt = #{opdt,jdbcType=DATE},
+      </if>
+      <if test="optype != null">
+        opType = #{optype,jdbcType=TINYINT},
+      </if>
+      <if test="optotalamount != null">
+        opTotalAmount = #{optotalamount,jdbcType=DOUBLE},
+      </if>
+      <if test="opiccardno != null">
+        opIcCardNo = #{opiccardno,jdbcType=VARCHAR},
+      </if>
+      <if test="opiccardaddr != null">
+        opIcCardAddr = #{opiccardaddr,jdbcType=VARCHAR},
+      </if>
+      <if test="opremainmoney != null">
+        opRemainMoney = #{opremainmoney,jdbcType=DOUBLE},
+      </if>
+      <if test="opendt != null">
+        openDt = #{opendt,jdbcType=DATE},
+      </if>
+      <if test="cldt != null">
+        clDt = #{cldt,jdbcType=DATE},
+      </if>
+      <if test="cltype != null">
+        clType = #{cltype,jdbcType=TINYINT},
+      </if>
+      <if test="cltotalamount != null">
+        clTotalAmount = #{cltotalamount,jdbcType=DOUBLE},
+      </if>
+      <if test="cliccardno != null">
+        clIcCardNo = #{cliccardno,jdbcType=VARCHAR},
+      </if>
+      <if test="cliccardaddr != null">
+        clIcCardAddr = #{cliccardaddr,jdbcType=VARCHAR},
+      </if>
+      <if test="clremainmoney != null">
+        clRemainMoney = #{clremainmoney,jdbcType=DOUBLE},
+      </if>
+      <if test="clthisamount != null">
+        clThisAmount = #{clthisamount,jdbcType=DOUBLE},
+      </if>
+      <if test="clthismoney != null">
+        clThisMoney = #{clthismoney,jdbcType=DOUBLE},
+      </if>
+      <if test="clthistime != null">
+        clThisTime = #{clthistime,jdbcType=INTEGER},
+      </if>
+      <if test="clopendt != null">
+        clOpenDt = #{clopendt,jdbcType=DATE},
+      </if>
+      <if test="closedt != null">
+        closeDt = #{closedt,jdbcType=DATE},
+      </if>
+    </set>
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveReport">
+    <!--@mbg.generated-->
+    update rm_open_close_valve_report
+    set controllerId = #{controllerid,jdbcType=BIGINT},
+      intakeId = #{intakeid,jdbcType=BIGINT},
+      rtuAddr = #{rtuaddr,jdbcType=VARCHAR},
+      opDt = #{opdt,jdbcType=DATE},
+      opType = #{optype,jdbcType=TINYINT},
+      opTotalAmount = #{optotalamount,jdbcType=DOUBLE},
+      opIcCardNo = #{opiccardno,jdbcType=VARCHAR},
+      opIcCardAddr = #{opiccardaddr,jdbcType=VARCHAR},
+      opRemainMoney = #{opremainmoney,jdbcType=DOUBLE},
+      openDt = #{opendt,jdbcType=DATE},
+      clDt = #{cldt,jdbcType=DATE},
+      clType = #{cltype,jdbcType=TINYINT},
+      clTotalAmount = #{cltotalamount,jdbcType=DOUBLE},
+      clIcCardNo = #{cliccardno,jdbcType=VARCHAR},
+      clIcCardAddr = #{cliccardaddr,jdbcType=VARCHAR},
+      clRemainMoney = #{clremainmoney,jdbcType=DOUBLE},
+      clThisAmount = #{clthisamount,jdbcType=DOUBLE},
+      clThisMoney = #{clthismoney,jdbcType=DOUBLE},
+      clThisTime = #{clthistime,jdbcType=INTEGER},
+      clOpenDt = #{clopendt,jdbcType=DATE},
+      closeDt = #{closedt,jdbcType=DATE}
+    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/Task.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/Task.java
index 66f221b..e460a61 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/Task.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/Task.java
@@ -1,5 +1,7 @@
 package com.dy.aceMw.server.rtuData;
 
+import java.text.ParseException;
+
 public interface Task {
 	
 	
@@ -14,7 +16,7 @@
 	 * 鎵ц鑺傜偣浠诲姟
 	 * @param data 闇�瑕佸鐞嗙殑鏁版嵁
 	 */
-	public void execute(Object data) ;
+	public void execute(Object data) throws ParseException;
 	
 	/**
 	 * 寰楀埌鏈换鍔¤妭鐐瑰鐞嗕骇鐢熺殑涓棿缁撴灉锛屼互渚涙湰鑺傜偣鎵�鍦ㄦ爲鏋濈殑涓嬬骇浠诲姟鑺傜偣鍙婃湰鏍戞灊鐨勫乏渚э紙鏍瑰湪涓婏級鎵�鏈夋爲鏋濈殑鑺傜偣搴旂敤鏈粨鏋�
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..2b0a8c7 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
@@ -3,6 +3,8 @@
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
+import java.text.ParseException;
+
 /**
  * 閮ㄥ垎瀹炵幇Task
  */
@@ -11,7 +13,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 ;
 	//鏍逛换鍔�
@@ -26,7 +28,7 @@
 	 * @param data 闇�瑕佸鐞嗙殑鏁版嵁
 	 */
 	@Override
-	public abstract void execute(Object data) ;
+	public abstract void execute(Object data) throws ParseException;
 	
 	/**
 	 * 浠诲姟閲囩敤瀵硅薄姹狅紝浠ヤ究閲嶇敤浠诲姟瀵硅薄锛�
@@ -35,7 +37,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..86b05f5 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,22 @@
 
 import com.dy.pipIrrGlobal.daoPr.PrControllerMapper;
 import com.dy.pipIrrGlobal.daoPr.PrControllerTrampMapper;
+import com.dy.pipIrrGlobal.daoPr.PrIntakeMapper;
+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.pojoPr.PrIntake;
+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,18 +33,26 @@
     private PrControllerTrampMapper prControllerTrampMapperDao;//娴佹氮鎺у埗鍣―AO
     @Autowired
     private PrControllerMapper prControllerMapperDao ;//鎺у埗鍣―AO
-
     @Autowired
-    @Lazy
-    private DbSv sv ;
+    private RmAlarmStateLastMapper rmAlarmStateLastMapperDao ;//鎺у埗鍣ㄦ渶鏂版姤璀﹀拰鐘舵�丏AO
+    @Autowired
+    private RmAlarmStateHistoryMapper rmAlarmStateHistoryMapperDao ;//鎺у埗鍣ㄥ巻鍙叉姤璀﹀拰鐘舵�丏AO
+    @Autowired
+    private RmAutoReportLastMapper rmAutoReportLastMapperDao ;//鎺у埗鍣ㄦ渶鏂颁笂鎶ユ暟鎹瓺AO
+    @Autowired
+    private RmAutoReportHistoryMapper rmAutoReportHistoryMapperDao ;//鎺у埗鍣ㄥ巻鍙蹭笂鎶ユ暟鎹瓺AO
+
+    //@Autowired
+    //@Lazy
+    //private DbSv sv ;
 
     /**
      * 閫氳繃鎺у埗鍣ㄥ湴鍧�浠庢暟鎹簱琛ㄤ腑鏌ヨ鎺у埗鍣�
      * @param rtuAddr 鎺у埗鍣ㄥ湴鍧�
      * @return 鎺у埗鍣�
      */
-    public PrController getPrControllerByRtuAddr(String rtuAddr){
-        List<PrController> list = this.prControllerMapperDao.selectPrControllerByRtuAddr(rtuAddr) ;
+    public PrController getControllersByRtuAddrAndIntakeNotNull(String rtuAddr){
+        List<PrController> list = this.prControllerMapperDao.getControllersByRtuAddrAndIntakeNotNull(rtuAddr) ;
         if(list != null && list.size() > 0){
             return list.get(0) ;
         }
@@ -45,20 +64,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..1e6fc88
--- /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,134 @@
+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.common.util.DateTime;
+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 涓嶄細鍚屾椂鏈夊��
+                try{
+                    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, dV1_0_1.dataCd81Vo.alarmVo, dV1_0_1.dataCd81Vo.stateVo) ;
+                            this.saveHistory(sv, controller, d.getRtuAddr(), dV1_0_1, 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, dV1_0_1.dataCdC0Vo.alarmVo, dV1_0_1.dataCdC0Vo.stateVo) ;
+                            this.saveHistory(sv, controller, d.getRtuAddr(), dV1_0_1, dV1_0_1.dataCdC0Vo.alarmVo, dV1_0_1.dataCdC0Vo.stateVo) ;
+                        }
+                    }
+                }catch (Exception e){
+                    log.error("淇濆瓨鎺у埗鍣ㄦ姤璀﹀拰鐘舵�佹暟鎹椂鍙戠敓寮傚父", e);
+                }
+            }
+        }
+    }
+    /**
+     * 淇濆瓨鎶ヨ鐘舵�佹渶鏂版暟鎹�
+     * @param sv 鏈嶅姟
+     * @param controller 鎺у埗鍣ㄥ璞�
+     * @param rtuAddr 鎺у埗鍣ㄥ湴鍧�
+     * @param alarmVo 鎶ヨ瀵硅薄
+     * @param stateVo 鐘舵�佸璞�
+     */
+    private void saveOrUpdateLast(DbSv sv, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataAlarmVo alarmVo, DataStateVo stateVo) throws Exception {
+        RmAlarmStateLast po = sv.getRmLastAlarmState(rtuAddr) ;
+        if(po == null){
+            po = new RmAlarmStateLast(null, controller==null?null:controller.getId(), controller==null?null:controller.getIntakeId(),
+                    rtuAddr,
+                    DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt),
+                    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(controller, po, dV1_0_1, alarmVo, stateVo) ;
+            sv.saveRmAlarmStateLast(po);
+        }
+    }
+
+    /**
+     * 淇濆瓨鎶ヨ鐘舵�佸巻鍙茶褰�
+     * @param sv 鏈嶅姟
+     * @param controller 鎺у埗鍣ㄥ璞�
+     * @param rtuAddr 鎺у埗鍣ㄥ湴鍧�
+     * @param alarmVo 鎶ヨ瀵硅薄
+     * @param stateVo 鐘舵�佸璞�
+     */
+    private void saveHistory(DbSv sv, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataAlarmVo alarmVo, DataStateVo stateVo) throws Exception {
+        RmAlarmStateHistory po = new RmAlarmStateHistory(null, controller==null?null:controller.getId(), controller==null?null:controller.getIntakeId(),
+                rtuAddr,
+                DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt),
+                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(PrController controller, RmAlarmStateLast po, DataV1_0_1 dV1_0_1, DataAlarmVo alarmVo, DataStateVo stateVo) throws Exception {
+        po.controllerid = controller==null?null:controller.getId() ;
+
+        po.dt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt) ;
+        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..4e6f9df
--- /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,107 @@
+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.DataCdC0Vo;
+import com.dy.common.mw.protocol.p206V1_0_0.DataV1_0_1;
+import com.dy.common.util.DateTime;
+import com.dy.pipIrrGlobal.pojoPr.PrController;
+import com.dy.pipIrrGlobal.pojoRm.RmAutoReportHistory;
+import com.dy.pipIrrGlobal.pojoRm.RmAutoReportLast;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import java.util.Date;
+
+/**
+ * @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" ;
+
+    /**
+     * 鎵ц鑺傜偣浠诲姟锛氭帶鍒跺櫒鑷姤鏁版嵁锛堝姛鑳界爜涓篊0锛�
+     * @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) {
+                Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ;
+                DbSv sv = (DbSv)objs[0] ;
+                PrController controller = (PrController)objs[1] ;
+                try{
+                    this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), dV1_0_1, dV1_0_1.dataCdC0Vo) ;
+                    this.saveHistory(sv, controller, d.getRtuAddr(),dV1_0_1, dV1_0_1.dataCdC0Vo) ;
+                }catch (Exception e){
+                    log.error("淇濆瓨鎺у埗鍣ㄨ嚜鎶ユ暟鎹椂鍙戠敓寮傚父", e);
+                }
+            }
+        }
+    }
+    /**
+     * 淇濆瓨鑷姤鏈�鏂版暟鎹�
+     * @param sv 鏈嶅姟
+     * @param controller 鎺у埗鍣ㄥ璞�
+     * @param rtuAddr 鎺у埗鍣ㄥ湴鍧�
+     * @param dataCdC0Vo 鑷姤鏁版嵁瀵硅薄
+     */
+    private void saveOrUpdateLast(DbSv sv, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCdC0Vo dataCdC0Vo) throws Exception {
+        RmAutoReportLast po = sv.getRmLastAutoReport(rtuAddr) ;
+        if(po == null){
+            po = new RmAutoReportLast(null, controller==null?null:controller.getId(), controller==null?null:controller.getId(),
+                    rtuAddr,
+                    DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt),
+                    DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCdC0Vo.rtuDt),
+                    dataCdC0Vo.instantAmount, dataCdC0Vo.totalAmount, dataCdC0Vo.lossAmount,
+                    dataCdC0Vo.waterPress, dataCdC0Vo.batteryVolt, dataCdC0Vo.sunVolt, dataCdC0Vo.signalValue) ;
+            sv.saveRmAutoReportLast(po) ;
+        }else{
+            po = this.update(po, dV1_0_1, dataCdC0Vo) ;
+            sv.saveRmAutoReportLast(po);
+        }
+    }
+
+    /**
+     * 淇濆瓨鑷姤鍘嗗彶璁板綍
+     * @param sv 鏈嶅姟
+     * @param controller 鎺у埗鍣ㄥ璞�
+     * @param rtuAddr 鎺у埗鍣ㄥ湴鍧�
+     * @param dataCdC0Vo 鑷姤鏁版嵁瀵硅薄
+     */
+    private void saveHistory(DbSv sv, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCdC0Vo dataCdC0Vo) throws Exception {
+        RmAutoReportHistory po = new RmAutoReportHistory(null, controller==null?null:controller.getId(), controller==null?null:controller.getIntakeId(),
+                rtuAddr,
+                DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt),
+                DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCdC0Vo.rtuDt),
+                dataCdC0Vo.instantAmount, dataCdC0Vo.totalAmount, dataCdC0Vo.lossAmount,
+                dataCdC0Vo.waterPress, dataCdC0Vo.batteryVolt, dataCdC0Vo.sunVolt, dataCdC0Vo.signalValue) ;
+        sv.saveRmAutoReportHistory(po) ;
+    }
+
+
+    private RmAutoReportLast update(RmAutoReportLast po, DataV1_0_1 dV1_0_1, DataCdC0Vo dataCdC0Vo) throws Exception {
+        po.dt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt);
+        po.rtudt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCdC0Vo.rtuDt) ;
+        po.instantamount = dataCdC0Vo.instantAmount;
+        po.totalamount = dataCdC0Vo.totalAmount;
+        po.lossamount = dataCdC0Vo.lossAmount;
+        po.waterpress = dataCdC0Vo.waterPress;
+        po.batteryvolt = dataCdC0Vo.batteryVolt;
+        po.sunvolt = dataCdC0Vo.sunVolt;
+        po.signalvalue = dataCdC0Vo.signalValue;
+        return po ;
+    }
+}
+
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealCloseValveReport.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealCloseValveReport.java
new file mode 100644
index 0000000..56d8170
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealCloseValveReport.java
@@ -0,0 +1,36 @@
+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.pipIrrGlobal.pojoPr.PrControllerTramp;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+/**
+ * @Author liurunyu
+ * @Date 2024/1/16 17:18
+ * @LastEditTime 2024/1/16 17:18
+ * @Description
+ */
+/**
+ * 澶勭悊鎺у埗鍣ㄥ叧闃�涓婃姤
+ */
+public class TkDealCloseValveReport extends TaskSurpport {
+
+    private static final Logger log = LogManager.getLogger(TkDealCloseValveReport.class.getName()) ;
+
+    //绫籌D锛屼竴瀹氫笌Tree.xml閰嶇疆鏂囦欢涓厤缃竴鑷�
+    public static final String taskId = "TkDealCloseValveReport" ;
+
+    /**
+     * 鎵ц鑺傜偣浠诲姟: 澶勭悊鎺у埗鍣ㄥ叧闃�涓婃姤
+     * @param data 闇�瑕佸鐞嗙殑鏁版嵁
+     */
+    @Override
+    public void execute(Object data) {
+        Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ;
+        DbSv sv = (DbSv)objs[0] ;
+        PrControllerTramp rtuTramp = (PrControllerTramp)objs[2] ;
+        sv.savePrConctrollerTramp(rtuTramp);
+    }
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealOpenValveReport.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealOpenValveReport.java
new file mode 100644
index 0000000..2364a3e
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealOpenValveReport.java
@@ -0,0 +1,50 @@
+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.DataV1_0_1;
+import com.dy.pipIrrGlobal.pojoPr.PrController;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+/**
+ * @Author liurunyu
+ * @Date 2024/1/16 17:16
+ * @LastEditTime 2024/1/16 17:16
+ * @Description
+ */
+/**
+ * 澶勭悊鎺у埗鍣ㄥ紑闃�涓婃姤
+ */
+public class TkDealOpenValveReport extends TaskSurpport {
+
+    private static final Logger log = LogManager.getLogger(TkDealOpenValveReport.class.getName()) ;
+
+    //绫籌D锛屼竴瀹氫笌Tree.xml閰嶇疆鏂囦欢涓厤缃竴鑷�
+    public static final String taskId = "TkDealOpenValveReport" ;
+
+    /**
+     * 鎵ц鑺傜偣浠诲姟: 澶勭悊鎺у埗鍣ㄥ紑闃�涓婃姤
+     * @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.dataCd83OpenVo != null) {
+                Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ;
+                DbSv sv = (DbSv)objs[0] ;
+                PrController controller = (PrController)objs[1] ;
+                try{
+                    this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), dV1_0_1.dataCdC0Vo) ;
+                    this.saveHistory(sv, controller, d.getRtuAddr(), dV1_0_1.dataCdC0Vo) ;
+                }catch (Exception e){
+                    log.error("淇濆瓨鎺у埗鍣ㄥ紑闃�涓婃姤鏃跺彂鐢熷紓甯�", e);
+                }
+            }
+        }
+    }
+}
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/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkPreGenObjs.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkPreGenObjs.java
index a4771a6..ebd0896 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkPreGenObjs.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkPreGenObjs.java
@@ -10,6 +10,11 @@
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
 public class TkPreGenObjs extends TaskSurpport {
 	
 	private static final Logger log = LogManager.getLogger(TkPreGenObjs.class.getName()) ;
@@ -22,18 +27,18 @@
 	 * @param data 闇�瑕佸鐞嗙殑鏁版嵁
 	 */
 	@Override
-	public void execute(Object data) {
+	public void execute(Object data) throws ParseException {
 		Data d = (Data)data ;
 		String rtuAddr = d.getRtuAddr() ;//TkRtuData閲屽垽鏂簡rtuAddr涓虹┖
 		DbSv sv = (DbSv)SpringContextUtil.getBean(DbSv.class) ;
 		if(sv != null){
-			PrController controller = sv.getPrControllerByRtuAddr(rtuAddr) ;
+			PrController controller = sv.getControllersByRtuAddrAndIntakeNotNull(rtuAddr) ;
 			if(controller == null){
-				//鏁版嵁搴撲腑鏈煡璇㈠埌鎺у埗鍣紙RTU瀹炰綋锛�
+				//鏁版嵁搴撲腑鏈煡璇�(宸茬粡缁戝畾涓旀帶鍒跺櫒鍦板潃鐩哥)鍒版帶鍒跺櫒锛圧TU瀹炰綋锛�
 				//娴佹氮鑰呮帶鍒跺櫒
 				PrControllerTramp rtuTramp = sv.getPrControllerTrampByRtuAddr(rtuAddr);
 				if(rtuTramp == null){
-					rtuTramp = new PrControllerTramp(null, rtuAddr, d.getProtocol(), DateTime.yyyy_MM_dd_HH_mm_ss()) ;
+					rtuTramp = new PrControllerTramp(null, rtuAddr, d.getProtocol(), new Date()) ;
 					this.taskResult = new Object[]{sv, null, rtuTramp} ;
 					this.toNextOneTask(data, TkDealControllerTramp.taskId);
 				}
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..e89ee78 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
@@ -13,8 +13,11 @@
 					<task id="TkDealControllerTramp" name="澶勭悊娴佹氮鎺у埗鍣�" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkDealControllerTramp" />
 					<!-- 闈炴祦娴�匯TU锛屽繀椤绘斁鍦═kDealControllerTramp鍚庨潰 -->
 					<!-- 璇嗗埆涓诲姩涓婃姤鏁版嵁 -->
-					<task id="TkFindReport" name="璇嗗埆涓婃姤鏁版嵁" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkFindReport">
-
+					<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 id="TkDealOpenValveReport" name="鎺у埗鍣ㄥ紑闃�涓婃姤" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkDealOpenValveReport" />
+						<task id="TkDealCloseValveReport" name="鎺у埗鍣ㄥ叧闃�涓婃姤" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkDealCloseValveReport" />
 					</task>
 					<!-- 璇嗗埆鍛戒护鍝嶅簲鏁版嵁 -->
 					<task id="TkFindComResponse" name="璇嗗埆鍝嶅簲鍛戒护鏁版嵁" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkFindComResponse">
@@ -22,6 +25,7 @@
 						</task>
 					</task>
 				</task>
+			</task>
 		</task>
 	</task>
 </project>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/role/DtoRole.java b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/role/DtoRole.java
index 1a07e74..af09b06 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/role/DtoRole.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/role/DtoRole.java
@@ -23,7 +23,7 @@
      */
     @Schema(description = "瑙掕壊缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
     @Positive(message = "瑙掕壊缂栧彿蹇呴』涓哄ぇ浜�0鐨勬暣鏁�")
-    private Long roleid;
+    private Long roleId;
 
     /**
      * 瑙掕壊鍚嶇О
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/role/RoleCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/role/RoleCtrl.java
index ed76f2d..a14f8a3 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/role/RoleCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/role/RoleCtrl.java
@@ -36,13 +36,7 @@
 @SuppressWarnings("unchecked")//java鐗堟湰瓒婇珮锛屽娉涘瀷绾︽潫瓒婁弗锛屾墍浠ラ厤缃甋uppressWarnings("unchecked")
 public class RoleCtrl {
 
-    //private RoleSv sv ;
     private final RoleSv roleSv;
-
-    //@Autowired
-    //private void setSv(RoleSv sv){
-    //    this.sv = sv ;
-    //}
 
     /**
      * 鏍规嵁鎸囧畾鏉′欢锛堣鑹茬紪鍙枫�佽鑹插悕绉帮級鑾峰彇瑙掕壊鍒楄〃
@@ -80,68 +74,15 @@
     }
 
     /**
-     * 娣诲姞瑙掕壊鍙婃潈闄愬垪琛紝娣诲姞鍓嶅垽鏂鑹插悕鏄惁宸插瓨鍦�
-     * @param po 瑙掕壊浼犲叆瀵硅薄锛屽寘鎷鑹插悕绉般�佹潈闄愬垪琛ㄣ�佹搷浣滀汉缂栧彿
-     * @param bindingResult
-     * @return
-     */
-    @Operation(summary = "娣诲姞瑙掕壊", description = "鎻愪氦瑙掕壊鏁版嵁鍙婃潈闄愭暟鎹紝杩涜淇濆瓨")
-    @ApiResponses(value = {
-            @ApiResponse(
-                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
-                    description = "鎿嶄綔缁撴灉锛歵rue锛氭垚鍔燂紝false锛氬け璐ワ紙BaseResponse.content锛�",
-                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
-                            schema = @Schema(implementation = Boolean.class))}
-            )
-    })
-    @PostMapping(path = "save", consumes = MediaType.APPLICATION_JSON_VALUE)
-    @Transactional(rollbackFor = Exception.class)
-    @SsoAop()
-    public BaseResponse<Boolean> save(@RequestBody @Valid DtoRole po, BindingResult bindingResult){
-        if(bindingResult != null && bindingResult.hasErrors()){
-            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
-        }
-
-        // 鑾峰彇瑙掕壊鍚嶇О绾ф潈闄愬垪琛�
-        String roleName = Optional.ofNullable(po.getRoleName()).orElse("");
-        JSONArray permissions = Optional.ofNullable(JSONArray.parseArray(po.getPermissions())).orElse(JSONArray.parseArray("[]"));
-        Long operator = Optional.ofNullable(po.getOperator()).orElse(0L);
-
-        // 鍒ゆ柇瑙掕壊鍚嶇О鏄惁閲嶅悕
-        Integer recordCount = Optional.ofNullable(roleSv.getRecordCountByName(roleName)).orElse(0);
-        if(recordCount > 0)
-            return BaseResponseUtils.buildFail(SystemResultCode.ROLE_NAME_EXIST.getMessage());
-
-        // 娣诲姞瑙掕壊
-        BaRole baRole = new BaRole();
-        Long roleId = 0L;
-        try {
-            baRole.setName(roleName);
-            baRole.setOperator(operator);
-            Date operateTime = new Date();
-            baRole.setOperateDt(operateTime);
-            baRole.setDeleted(Deleted.NO.getCode());
-            roleId = roleSv.addRole(baRole);
-        } catch (Exception e) {
-            return BaseResponseUtils.buildException(e.getMessage()) ;
-        }
-
-        if(roleId <= 0)
-            return BaseResponseUtils.buildFail(SystemResultCode.ADD_ROLE_FAIL.getMessage());
-
-        // 娣诲姞鏉冮檺鍒楄〃
-        BaRolePermissions baRolePermissions = new BaRolePermissions();
-        baRolePermissions.setRoleid(roleId);
-        baRolePermissions.setPermissions(permissions);
-        Integer rc = Optional.ofNullable(roleSv.addPermissions(baRolePermissions)).orElse(0);
-        if(rc <= 0) {
-            return BaseResponseUtils.buildFail(SystemResultCode.ADD_ROLE_FAIL.getMessage());
-        }
-        return BaseResponseUtils.buildSuccess(true) ;
-    }
-
-    /**
-     * 瑙掕壊鎺堟潈锛屽綋瑙掕壊缂栧彿涓虹┖鏃讹紝瀹為檯涓烘坊鍔犺鑹插強鏉冮檺鍒楄〃
+     * 瑙掕壊鎺堟潈
+     * 1. 濡傛灉roleid鍜宺oleName閮界┖锛氭彁绀洪敊璇俊鎭�
+     * 2. 濡傛灉roleid涓虹┖锛氭柊寤鸿鑹蹭笖鎺堟潈
+     *      1. 娣诲姞瑙掕壊璁板綍
+     *      2. 娣诲姞瑙掕壊銆佹潈闄愬叧鑱旇褰�
+     * 3. 濡傛灉roleid涓嶄负绌猴細淇敼瑙掕壊鍙婃巿鏉�
+     *      1. 鍒犻櫎瑙掕壊銆佹潈闄愯褰�
+     *      2. 淇敼瑙掕壊淇℃伅
+     *      3. 娣诲姞瑙掕壊銆佹潈闄愯褰�
      * @param po
      * @param bindingResult
      * @return
@@ -163,19 +104,8 @@
             return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
         }
 
-        /**
-         * 濡傛灉roleid鍜宺oleName閮界┖锛氭彁绀洪敊璇俊鎭�
-         * 濡傛灉roleid涓虹┖锛氭柊寤鸿鑹蹭笖鎺堟潈
-         *      1. 娣诲姞瑙掕壊璁板綍
-         *      2. 娣诲姞瑙掕壊銆佹潈闄愬叧鑱旇褰�
-         * 濡傛灉roleid涓嶄负绌猴細淇敼瑙掕壊鎺堟潈
-         *      1. 鍒犻櫎瑙掕壊銆佹潈闄愯褰�
-         *      2. 娣诲姞瑙掕壊銆佹潈闄愯褰�
-         */
-
-        Long roleId = Optional.ofNullable(po.getRoleid()).orElse(0L);
+        Long roleId = Optional.ofNullable(po.getRoleId()).orElse(0L);
         String roleName = Optional.ofNullable(po.getRoleName()).orElse("");
-        //String permissions = Optional.ofNullable(po.getPermissions()).orElse("");
         JSONArray permissions = Optional.ofNullable(JSONArray.parseArray(po.getPermissions())).orElse(JSONArray.parseArray("[]"));
         Long operator = Optional.ofNullable(po.getOperator()).orElse(0L);
 
@@ -199,60 +129,21 @@
             return BaseResponseUtils.buildSuccess(true) ;
         }
 
+        // 淇敼瑙掕壊淇℃伅
+        BaRole baRole = new BaRole();
+        baRole.setId(roleId);
+        baRole.setName(roleName);
+        baRole.setOperator(operator);
+        Date operateTime = new Date();
+        baRole.setOperateDt(operateTime);
+        roleSv.updateRole(baRole);
+
         // 淇敼瑙掕壊鎺堟潈
         BaRolePermissions baRolePermissions = new BaRolePermissions();
         baRolePermissions.setRoleid(roleId);
         baRolePermissions.setPermissions(permissions);
         roleSv.delPermissionsByRoleId(roleId);
         roleSv.addPermissions(baRolePermissions);
-        return BaseResponseUtils.buildSuccess(true) ;
-    }
-
-    /**
-     * 淇敼瑙掕壊
-     * @param po 淇濆瓨瑙掕壊form琛ㄥ崟瀵硅薄
-     * @return 鏄惁鎴愬姛
-     */
-    @Operation(summary = "淇敼瑙掕壊", description = "鎻愪氦瑙掕壊鏁版嵁锛岃繘琛屼慨鏀�")
-    @ApiResponses(value = {
-            @ApiResponse(
-                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
-                    description = "鎿嶄綔缁撴灉锛歵rue锛氭垚鍔燂紝false锛氬け璐ワ紙BaseResponse.content锛�",
-                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
-                            schema = @Schema(implementation = Boolean.class))}
-            )
-    })
-    @PostMapping(path = "update", consumes = MediaType.APPLICATION_JSON_VALUE)
-    @SsoAop()
-    public BaseResponse<Boolean> update(@RequestBody @Valid BaRole po, BindingResult bindingResult){
-        if(bindingResult != null && bindingResult.hasErrors()){
-            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
-        }
-
-        // 鎺ユ敹瑙掕壊缂栧彿銆佽鑹插悕绉般�佹搷浣滀汉缂栧彿
-        Long roleId = Optional.ofNullable(po.getId()).orElse(0L);
-        String roleName = Optional.ofNullable(po.getName()).orElse("");
-        Long operator = Optional.ofNullable(po.getOperator()).orElse(0L);
-
-        // 鍒ゆ柇涓婚敭鏄惁涓虹┖
-        if(roleId == 0)
-            return BaseResponseUtils.buildFail(SystemResultCode.PLEASE_INPUT_ROLE_ID.getMessage()) ;
-
-        Integer recordCount = 0;
-        try {
-            po.setName(roleName);
-            po.setOperator(operator);
-            Date operateTime = new Date();
-            po.setOperateDt(operateTime);
-
-            //po.deleted = null ;//璁剧疆涓簄ull锛屼笉鍋氭洿鏂�
-            recordCount = roleSv.updateRole(po);
-        } catch (Exception e) {
-            return BaseResponseUtils.buildException(e.getMessage()) ;
-        }
-
-        if(recordCount <= 0)
-            return BaseResponseUtils.buildFail("鏁版嵁搴撳瓨鍌ㄥけ璐�") ;
 
         return BaseResponseUtils.buildSuccess(true) ;
     }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/ControllerCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/ControllerCtrl.java
index 0eab6fc..30a1954 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/ControllerCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/ControllerCtrl.java
@@ -1,5 +1,6 @@
 package com.dy.pipIrrProject.controller;
 
+import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.support.ExcelTypeEnum;
 import com.dy.common.aop.SsoAop;
@@ -81,7 +82,7 @@
 
     /**
      * 鏍规嵁鎺у埗鍣ㄧ紪鍙疯幏鍙栨帶鍒跺櫒鍒楄〃
-     * @param controllerCode 鎺у埗鍣ㄧ紪鍙�
+     * @param rtuAddr 鎺у埗鍣ㄥ湴鍧�
      * @return 绗﹀悎鏉′欢鐨勬帶鍒跺櫒鍒楄〃
      */
     @Operation(summary = "鑾峰緱鎺у埗鍣ㄨ褰�", description = "杩斿洖鍙栨帶鍒跺櫒鏁版嵁")
@@ -126,17 +127,23 @@
     @PostMapping(path = "add", consumes = MediaType.APPLICATION_JSON_VALUE)
     @Transactional(rollbackFor = Exception.class)
     @SsoAop()
-    public BaseResponse<Boolean> add(@RequestBody @Valid DtoController po, BindingResult bindingResult){
+    //public BaseResponse<Boolean> add(@RequestBody @Valid DtoController po, BindingResult bindingResult){
+    public BaseResponse<Boolean> add(@RequestBody @Valid PrController po, BindingResult bindingResult){
         if(bindingResult != null && bindingResult.hasErrors()){
             return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
         }
 
-        PrController prController = DtoToPojo.INSTANCT.po2vo(po);
+        //PrController prController = DtoToPojo.INSTANCT.po2vo(po);
+        //Date operateTime = new Date();
+        //prController.setOperatedt(operateTime);
+        //prController.setDeleted((byte)0);
+        //prController.setReporttime(operateTime);
+
         Date operateTime = new Date();
-        prController.setOperatedt(operateTime);
-        prController.setDeleted((byte)0);
-        prController.setReporttime(operateTime);
-        Integer rec = Optional.ofNullable(controllerSv.addController(prController)).orElse(0);
+        po.setOperateDt(operateTime);
+        po.setDeleted((byte)0);
+        po.setFindDt(operateTime);
+        Integer rec = Optional.ofNullable(controllerSv.addController(po)).orElse(0);
         if(rec == 0) {
             return BaseResponseUtils.buildFail(ProjectResultCode.CONTROLLER_FAIL.getMessage());
         }
@@ -173,6 +180,34 @@
     }
 
     /**
+     * 鑾峰彇鏈粦鎺у埗鍣ㄧ殑鍙栨按鍙e垪琛�
+     * @return
+     */
+    @Operation(summary = "鑾峰緱鏈粦鎺у埗鍣ㄧ殑鍙栨按鍙h褰�", description = "杩斿洖鏈粦鎺у埗鍣ㄧ殑鍙栨按鍙f暟鎹�")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "杩斿洖鎺у埗鍣ㄦ暟鎹紙BaseResponse.content:QueryResultVo[{}]锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = BaClient.class))}
+            )
+    })
+    @GetMapping(path = "nobinding_intakes")
+    @SsoAop()
+    public BaseResponse<JSONArray> getNoBindingIntakes(){
+        try {
+            JSONArray array = controllerSv.getNoBindingIntakes();
+            if(array.size() <= 0) {
+                return BaseResponseUtils.buildFail(ProjectResultCode.NO_BINDING_INTAKE.getMessage());
+            }
+            return BaseResponseUtils.buildSuccess(array);
+        } catch (Exception e) {
+            log.error("鏌ヨ鎺у埗鍣ㄥ紓甯�", e);
+            return BaseResponseUtils.buildException(e.getMessage()) ;
+        }
+    }
+
+    /**
      * 瀵煎嚭鎺у埗鍣ㄥ垪琛�
      * @param response
      * @param vo
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/ControllerSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/ControllerSv.java
index 12af178..9ff24a4 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/ControllerSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/ControllerSv.java
@@ -1,7 +1,10 @@
 package com.dy.pipIrrProject.controller;
 
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONArray;
 import com.dy.common.webUtil.QueryResultVo;
 import com.dy.pipIrrGlobal.daoPr.PrControllerMapper;
+import com.dy.pipIrrGlobal.daoPr.PrIntakeMapper;
 import com.dy.pipIrrGlobal.pojoPr.PrController;
 import com.dy.pipIrrGlobal.voPr.VoController;
 import lombok.extern.slf4j.Slf4j;
@@ -12,6 +15,7 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 
 /**
  * @author ZhuBaoMin
@@ -25,6 +29,9 @@
 public class ControllerSv {
     @Autowired
     private PrControllerMapper prControllerMapper;
+
+    @Autowired
+    private PrIntakeMapper prIntakeMapper;
 
     /**
      * 鏍规嵁鎸囧畾鑾峰彇鎺у埗鍣ㄨ褰�
@@ -94,7 +101,42 @@
         return rsVo ;
     }
 
+    /**
+     * 鏍规嵁鎺у埗鍣ㄧ紪鍙疯幏鍙栨湭鍒犻櫎鐨勬帶鍒跺櫒鏁伴噺
+     * @param controllerId
+     * @return
+     */
     public Integer getRecordCountOfController(Long controllerId) {
         return prControllerMapper.getRecordCountOfController(controllerId);
     }
+    /**
+     * 鏍规嵁鎺у埗鍣ㄧ紪鍙疯幏鍙栧凡缁戝畾璁板綍鏁�
+     * @param controllerId
+     * @return
+     */
+    public Integer getBindedCount(Long controllerId) {
+        return prControllerMapper.getBindedCount(controllerId);
+    }
+
+    /**
+     * 鏍规嵁涓婚敭鍒犻櫎澶栭敭
+     * @param controllerId
+     * @return
+     */
+    public Integer deleteIntakeId(Long controllerId) {
+        return prControllerMapper.deleteIntakeId(controllerId);
+    }
+
+    /**
+     * 鑾峰彇鏈粦鎺у埗鍣ㄧ殑鍙栨按鍙e垪琛�
+     * @return
+     */
+    public JSONArray getNoBindingIntakes() {
+        List<Map<String, Object>> list = Optional.ofNullable(prIntakeMapper.getNoBindingIntakes()).orElse(new ArrayList<>());
+        JSONArray array= null;
+        if(list.size() > 0) {
+            array= JSONArray.parseArray(JSON.toJSONString(list));
+        }
+        return array;
+    }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/DtoController.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/DtoController.java
deleted file mode 100644
index b698813..0000000
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/DtoController.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package com.dy.pipIrrProject.controller;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotBlank;
-import lombok.Data;
-import org.hibernate.validator.constraints.Length;
-
-/**
- * @author ZhuBaoMin
- * @date 2024-01-02 16:36
- * @LastEditTime 2024-01-02 16:36
- * @Description
- */
-
-@Data
-@Schema(name = "鎺у埗鍣ㄤ紶鍏ュ璞�")
-public class DtoController {
-    public static final long serialVersionUID = 1L;
-
-    /**
-     * 鎺у埗鍣ㄥ湴鍧�
-     */
-    @Schema(description = "鎺у埗鍣ㄥ湴鍧�", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotBlank(message = "鎺у埗鍣ㄥ湴鍧�涓嶈兘涓虹┖")
-    @Length(message = "鎺у埗鍣ㄥ湴鍧�涓嶅ぇ浜巤max}瀛�",max = 11)
-    private String rtuAddr;
-
-    /**
-     * 閫氳鍗忚
-     */
-    @Schema(description = "閫氳鍗忚", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotBlank(message = "閫氳鍗忚涓嶈兘涓虹┖")
-    @Length(message = "閫氳鍗忚涓嶅ぇ浜巤max}瀛�",max = 25)
-    private String protocol;
-
-    /**
-     * 鍦ㄧ嚎鐘舵��
-     */
-    @Schema(description = "鍦ㄧ嚎鐘舵��", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    private Byte onlineState;
-
-    /**
-     * 娣诲姞鏂瑰紡;1-绯荤粺鑷姩锛�2-鎵嬪姩
-     */
-    @Schema(description = "娣诲姞鏂瑰紡", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    private Byte addWays;
-
-    /**
-     * 鎿嶄綔浜虹紪鍙�
-     */
-    @Schema(description = "鎿嶄綔浜虹紪鍙�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    private Long operator;
-}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/DtoToPojo.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/DtoToPojo.java
deleted file mode 100644
index 554a3fb..0000000
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/DtoToPojo.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.dy.pipIrrProject.controller;
-
-import com.dy.pipIrrGlobal.pojoPr.PrController;
-import org.mapstruct.Mapper;
-import org.mapstruct.Mapping;
-import org.mapstruct.factory.Mappers;
-
-/**
- * @author ZhuBaoMin
- * @date 2024-01-02 16:39
- * @LastEditTime 2024-01-02 16:39
- * @Description
- */
-
-@Mapper
-public interface DtoToPojo {
-    DtoToPojo INSTANCT = Mappers.getMapper(DtoToPojo.class);
-    @Mapping(target = "rtuaddr", source = "rtuAddr")
-    @Mapping(target = "protocol", source = "protocol")
-    @Mapping(target = "onlinestate", source = "onlineState")
-    @Mapping(target = "addways", source = "addWays")
-    @Mapping(target = "operator", source = "operator")
-    PrController po2vo(DtoController po);
-}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/DtoIntakeController.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/DtoIntakeController.java
index 451f3a5..05e545b 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/DtoIntakeController.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/DtoIntakeController.java
@@ -19,14 +19,14 @@
     public static final long serialVersionUID = 1L;
 
     /**
-     * 鍙栨按鍙g紪鍙�
+     * 鍙栨按鍙D
      */
     @Schema(description = "鍙栨按鍙D", requiredMode = Schema.RequiredMode.REQUIRED)
     @NotNull(message = "鍙栨按鍙D涓嶈兘涓虹┖")
     private Long intakeId;
 
     /**
-     * 鎺у埗鍣ㄧ紪鍙�
+     * 鎺у埗鍣↖D
      */
     @Schema(description = "鎺у埗鍣↖D", requiredMode = Schema.RequiredMode.REQUIRED)
     @NotNull(message = "鎺у埗鍣↖D涓嶈兘涓虹┖")
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerCtrl.java
index 1384dfa..d1324ff 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerCtrl.java
@@ -6,6 +6,8 @@
 import com.dy.common.webUtil.QueryResultVo;
 import com.dy.common.webUtil.ResultCodeMsg;
 import com.dy.pipIrrGlobal.pojoBa.BaClient;
+import com.dy.pipIrrGlobal.pojoPr.PrController;
+import com.dy.pipIrrGlobal.pojoPr.PrControllerTramp;
 import com.dy.pipIrrGlobal.pojoPr.PrIntakeController;
 import com.dy.pipIrrProject.controller.ControllerSv;
 import com.dy.pipIrrProject.intake.IntakeSv;
@@ -24,6 +26,8 @@
 import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.*;
 
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.*;
 
 /**
@@ -44,9 +48,15 @@
     private final ControllerSv controllerSv;
 
     /**
-     * 娣诲姞鍙栨按鍙�/鎺у埗鍣ㄦ崋缁戣褰�
-     *      鑻ュ彇姘村彛鎴栨帶鍒跺櫒涓嶅瓨鍦ㄩ渶鎻愮ず鐢ㄦ埛
-     *      鑻ュ彇姘村彛宸茬粡涓庢帶鍒跺櫒缁戝畾闇�鎻愮ず鐢ㄦ埛
+     * 鍙栨按鍙g粦瀹氭帶鍒跺櫒
+     * 1. 鎺ユ敹鍙栨按鍙D鍙婃祦娴帶鍒跺櫒ID锛屽苟楠岃瘉鍙栨按鍙e拰鎺у埗鍣ㄦ槸鍚﹀瓨鍦�
+     * 2. 鍒ゆ柇璇ユ帶鍒跺櫒鏄惁瀛樺湪鏈В缁戣褰曪紝濡傛灉瀛樺湪鎻愮ず鐢ㄦ埛璇ユ帶鍒跺櫒瀛樺湪鏈В缁戣褰�
+     * 3. 缁勮鎺у埗鍣ㄥ璞℃彃鍏ユ帶鍒跺櫒琛ㄤ腑
+     * 4. 娣诲姞缁戝畾璁板綍
+     * 5. 鍒犻櫎娴佹氮鎺у埗鍣紙鐗╃悊鍒犻櫎锛�
+     * @param po
+     * @param bindingResult
+     * @return
      */
     @Operation(summary = "娣诲姞缁戝畾璁板綍", description = "娣诲姞缁戝畾璁板綍")
     @ApiResponses(value = {
@@ -60,39 +70,70 @@
     @PostMapping(path = "bind", consumes = MediaType.APPLICATION_JSON_VALUE)
     @Transactional(rollbackFor = Exception.class)
     @SsoAop()
-    public BaseResponse<Boolean> bind(@RequestBody @Valid DtoIntakeController po, BindingResult bindingResult){
+    public BaseResponse<Boolean> bind(@RequestBody @Valid DtoIntakeController po, BindingResult bindingResult) throws ParseException {
+        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         if(bindingResult != null && bindingResult.hasErrors()){
             return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
         }
-        // 鏍规嵁缂栧彿鍒嗗埆鑾峰彇鍙栨按鍙c�佹帶鍒跺櫒鏈垹闄よ褰曟暟
-        Integer recIntke = Optional.ofNullable(intakeSv.getRecordCountOfIntake(po.getIntakeId())).orElse(0);
-        Integer recController = Optional.ofNullable(controllerSv.getRecordCountOfController(po.getControllerId())).orElse(0);
-        if(recIntke == 0 || recController == 0) {
+        // 鎺ユ敹鍙傛暟
+        Long intakeId = po.getIntakeId();
+        Long controllerId = po.getControllerId();
+        String remarks = po.getRemarks();
+        Long operator = po.getOperator();
+
+        // 鏍规嵁缂栧彿鍒嗗埆鑾峰彇鍙栨按鍙h褰曟暟銆佹祦娴帶鍒跺櫒淇℃伅锛屽垽鏂彇姘村彛鍙婃帶鍒跺櫒鏄惁瀛樺湪
+        Integer recIntke = Optional.ofNullable(intakeSv.getRecordCountOfIntake(intakeId)).orElse(0);
+        PrControllerTramp prControllerTramp = intakeControllerSv.getTrampControllerInfo(controllerId);
+        //Map map_TrampController = Optional.ofNullable(intakeControllerSv.getTrampControllerInfo(controllerId)).orElse(new HashMap());
+        if(recIntke == 0 || prControllerTramp == null) {
             return BaseResponseUtils.buildFail(ProjectResultCode.INTAKE_OR_CONTROLLER_NO_EXIST.getMessage());
         }
 
-        Integer recordCount = Optional.ofNullable(intakeControllerSv.getBindRecordCount(po.getIntakeId(), po.getControllerId(), (byte)1)).orElse(0);
-        if(recordCount > 0) {
-            return BaseResponseUtils.buildFail(ProjectResultCode.INTAKE_HAS_BINDED_CONTROLLER.getMessage());
+        // 鏍规嵁鎺у埗鍣ㄧ紪鍙峰垽鏂鎺у埗鍣ㄦ槸鍚﹀瓨鍦ㄦ湭瑙g粦璁板綍
+        Integer recBinded = Optional.ofNullable(controllerSv.getBindedCount(controllerId)).orElse(0);
+        if(recBinded > 0) {
+            return BaseResponseUtils.buildFail(ProjectResultCode.CONTROLLER_BINDED.getMessage());
         }
 
-        PrIntakeController prIntakeController = DtoToPojo.INSTANCT.po2vo(po);
+        // 娣诲姞鎺у埗鍣ㄨ褰�
+        PrController prController = new PrController();
+        prController.setIntakeId(intakeId);
+        prController.setRtuAddr(prControllerTramp.getRtuAddr());
+        prController.setProtocol(prControllerTramp.getProtocol());
+        prController.setFindDt(prControllerTramp.getFindDt());
+        prController.setAddWays((byte)1);
+        prController.setOperator(operator);
         Date operateTime = new Date();
+        prController.setOperateDt(operateTime);
+        prController.setDeleted((byte)0);
+        Integer rec_addController = Optional.ofNullable(controllerSv.addController(prController)).orElse(0);
+        if(rec_addController == 0) {
+            return BaseResponseUtils.buildFail(ProjectResultCode.BIND_FAIL.getMessage());
+        }
+
+        // 娣诲姞缁戝畾璁板綍
+        PrIntakeController prIntakeController = DtoToPojo.INSTANCT.po2vo(po);
         prIntakeController.setOperatedt(operateTime);
         prIntakeController.setOperatetype((byte)1);
-
         Integer rec = Optional.ofNullable(intakeControllerSv.addRecord(prIntakeController)).orElse(0);
         if(rec == 0) {
             return BaseResponseUtils.buildFail(ProjectResultCode.BIND_FAIL.getMessage());
         }
+
+        // 鏍规嵁娴佹氮鎺у埗鍣ㄧ紪鍙峰垹闄ゆ祦娴帶鍒跺櫒璁板綍
+        intakeControllerSv.deleteTrampController(controllerId);
+
         return BaseResponseUtils.buildSuccess(true) ;
     }
 
     /**
-     * 娣诲姞鍙栨按鍙�/鎺у埗鍣ㄨВ缁戣褰�
-     * 1. 鍒ゆ柇鍙栨按鍙f槸鍚﹀瓨鍦�
-     * 2. 鍒ゆ柇鎺у埗鍣ㄦ槸鍚﹀瓨鍦�
-     * 3. 鍒ゆ柇鍙栨按鍙c�佹帶鍒跺櫒瑙g粦鍏崇郴鏄惁宸插瓨鍦�
+     * 鍙栨按鍙hВ缁戞帶鍒跺櫒
+     * 1. 鎺ユ敹鍙栨按鍙D鍙婃祦娴帶鍒跺櫒ID锛屽苟楠岃瘉鍙栨按鍙e拰鎺у埗鍣ㄦ槸鍚﹀瓨鍦�
+     * 2. 娣诲姞瑙g粦璁板綍
+     * 3. 鍒犻櫎鎺у埗鍣ㄥ閿�
+     * @param po
+     * @param bindingResult
+     * @return
      */
     @Operation(summary = "娣诲姞瑙g粦璁板綍", description = "娣诲姞瑙g粦璁板綍")
     @ApiResponses(value = {
@@ -118,20 +159,28 @@
             return BaseResponseUtils.buildFail(ProjectResultCode.INTAKE_OR_CONTROLLER_NO_EXIST.getMessage());
         }
 
-        Integer recordCount = Optional.ofNullable(intakeControllerSv.getBindRecordCount(po.getIntakeId(), po.getControllerId(), (byte)2)).orElse(0);
-        if(recordCount > 0) {
-            return BaseResponseUtils.buildFail(ProjectResultCode.INTAKE_CONTROLLER_HAS_UNBOUND.getMessage());
-        }
+        // 鍒ゆ柇鏈�鍚庢搷浣滆褰曟槸鍚︿负瑙g粦璁板綍
+        //Integer recordCount = Optional.ofNullable(intakeControllerSv.getBindRecordCount(po.getIntakeId(), po.getControllerId(), (byte)2)).orElse(0);
+        //if(recordCount > 0) {
+        //    return BaseResponseUtils.buildFail(ProjectResultCode.INTAKE_CONTROLLER_HAS_UNBOUND.getMessage());
+        //}
 
+        // 娣诲姞瑙g粦璁板綍
         PrIntakeController prIntakeController = DtoToPojo.INSTANCT.po2vo(po);
         Date operateTime = new Date();
         prIntakeController.setOperatedt(operateTime);
         prIntakeController.setOperatetype((byte)2);
-
         Integer rec = Optional.ofNullable(intakeControllerSv.addRecord(prIntakeController)).orElse(0);
         if(rec == 0) {
             return BaseResponseUtils.buildFail(ProjectResultCode.BIND_FAIL.getMessage());
         }
+
+        // 鍒犻櫎鎺у埗鍣ㄥ閿�
+        Integer rec_deleteIntakeId = Optional.ofNullable(controllerSv.deleteIntakeId(po.getControllerId())).orElse(0);
+        if(rec_deleteIntakeId == 0) {
+            return BaseResponseUtils.buildFail(ProjectResultCode.BIND_FAIL.getMessage());
+        }
+
         return BaseResponseUtils.buildSuccess(true) ;
     }
 
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerSv.java
index 42a8910..11928ca 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerSv.java
@@ -1,6 +1,8 @@
 package com.dy.pipIrrProject.intakeController;
 
+import com.dy.pipIrrGlobal.daoPr.PrControllerTrampMapper;
 import com.dy.pipIrrGlobal.daoPr.PrIntakeControllerMapper;
+import com.dy.pipIrrGlobal.pojoPr.PrControllerTramp;
 import com.dy.pipIrrGlobal.pojoPr.PrIntakeController;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -21,6 +23,9 @@
 public class IntakeControllerSv {
     @Autowired
     private PrIntakeControllerMapper prIntakeControllerMapper;
+
+    @Autowired
+    private PrControllerTrampMapper prControllerTrampMapper;
 
     /**
      * 鏍规嵁鍙栨按鍙g紪鍙枫�佹帶鍒跺櫒缂栧彿銆佹搷浣滅被鍒幏鍙栬褰曟暟閲�
@@ -59,4 +64,31 @@
     List<Map<String, Object>> getBindsByControllerId(Long controllerId) {
         return prIntakeControllerMapper.getBindsByControllerId(controllerId);
     }
+
+    /**
+     * 鏍规嵁鎺у埗鍣ㄧ紪鍙疯幏鍙栨祦娴帶鍒跺櫒鍦板潃
+     * @param controllerId 娴佹氮鎺у埗鍣ㄧ紪鍙�
+     * @return 娴佹氮鎺у埗鍣ㄥ湴鍧�
+     */
+    //public String getTrampRtuAddr(Long controllerId) {
+    //    return prControllerTrampMapper.getTrampRtuAddr(controllerId);
+    //}
+
+    /**
+     * 鏍规嵁鎺у埗鍣ㄧ紪鍙疯幏鍙栨祦娴帶鍒跺櫒淇℃伅
+     * @param controllerId
+     * @return
+     */
+    public PrControllerTramp getTrampControllerInfo(Long controllerId) {
+        return prControllerTrampMapper.getTrampControllerInfo(controllerId);
+    }
+
+    /**
+     * 鏍规嵁娴佹氮鎺у埗鍣ㄧ紪鍙峰垹闄ゆ祦娴帶鍒跺櫒璁板綍
+     * @param controllerId
+     * @return
+     */
+    public Integer deleteTrampController(Long controllerId) {
+        return prControllerTrampMapper.deleteByPrimaryKey(controllerId);
+    }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/result/ProjectResultCode.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/result/ProjectResultCode.java
index 95b9f3b..b2d3a86 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/result/ProjectResultCode.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/result/ProjectResultCode.java
@@ -28,6 +28,7 @@
     UPDATE_INTAKE(20003, "淇敼鍙栨按鍙f暟鎹け璐�"),
     PLEASE_INPUT_INTAKE_ID(20004, "鍙栨按鍙g紪鍙蜂笉涓虹┖"),
     DELETE_INTAKE_FAIL(20005, "鍙栨按鍙e垹闄ゅけ璐�"),
+    NO_BINDING_INTAKE(20006, "娌℃湁鏈粦瀹氱殑鍙栨按鍙�"),
 
     /**
      * 鎺у埗鍣�
@@ -46,6 +47,7 @@
     INTAKE_NO_RECORDS(40004, "璇ュ彇姘村彛鏃犵粦瀹氳褰�"),
     CONTROLLER_NO_RECORDS(40005, "璇ユ帶鍒跺櫒鏃犵粦瀹氳褰�"),
     INTAKE_OR_CONTROLLER_NO_EXIST(40006, "鍙栨按鍙f垨鎺у埗鍣ㄤ笉瀛樺湪"),
+    CONTROLLER_BINDED(40007, "璇ユ帶鍒跺櫒灏氭湭瑙g粦"),
 
     /**
      * 娴侀噺鐩戞祴绔�
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/ActiveCardCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/ActiveCardCtrl.java
index 99e7eae..745991c 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/ActiveCardCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/ActiveCardCtrl.java
@@ -7,6 +7,7 @@
 import com.dy.common.webUtil.ResultCodeMsg;
 import com.dy.pipIrrGlobal.pojoSe.SeActiveCard;
 import com.dy.pipIrrGlobal.pojoSe.SeClientCard;
+import com.dy.pipIrrGlobal.util.Constant;
 import com.dy.pipIrrGlobal.voSe.VoActiveCard;
 import com.dy.pipIrrSell.clientCard.CardStateENUM;
 import com.dy.pipIrrSell.clientCard.ClientCardSv;
@@ -23,7 +24,6 @@
 import jakarta.validation.Valid;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.MediaType;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.BindingResult;
@@ -48,8 +48,8 @@
     private final ClientCardSv clientCardSv;
     private final RechargeCtrl rechargeCtrl;
 
-    @Value("${projectCode.ym}")
-    private Integer projectCode;
+    //@Value("${projectCode.ym}")
+    //private Integer projectCode;
 
     /**
      * 鑾峰彇寮�鍗¤褰�
@@ -222,7 +222,8 @@
         }
 
         Map map = new HashMap();
-        map.put("projectCode", projectCode);
+        //map.put("projectCode", projectCode);
+        map.put("projectCode", Constant.projectCode_ym);
         map.put("cardNum", cardNum);
         return BaseResponseUtils.buildSuccess(map) ;
     }
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")
diff --git "a/pipIrr-platform/\346\226\207\346\241\243/\345\217\226\346\260\264\345\217\243\346\216\247\345\210\266\345\231\250\345\217\212\346\265\213\346\216\247\346\225\260\346\215\256\345\205\263\347\263\273.docx" "b/pipIrr-platform/\346\226\207\346\241\243/\345\217\226\346\260\264\345\217\243\346\216\247\345\210\266\345\231\250\345\217\212\346\265\213\346\216\247\346\225\260\346\215\256\345\205\263\347\263\273.docx"
new file mode 100644
index 0000000..44ce634
--- /dev/null
+++ "b/pipIrr-platform/\346\226\207\346\241\243/\345\217\226\346\260\264\345\217\243\346\216\247\345\210\266\345\231\250\345\217\212\346\265\213\346\216\247\346\225\260\346\215\256\345\205\263\347\263\273.docx"
Binary files differ
diff --git "a/pipIrr-platform/\346\226\207\346\241\243/\345\217\226\346\260\264\345\217\243\346\216\247\345\210\266\345\231\250\345\217\212\346\265\213\346\216\247\346\225\260\346\215\256\345\205\263\347\263\273.vsd" "b/pipIrr-platform/\346\226\207\346\241\243/\345\217\226\346\260\264\345\217\243\346\216\247\345\210\266\345\231\250\345\217\212\346\265\213\346\216\247\346\225\260\346\215\256\345\205\263\347\263\273.vsd"
new file mode 100644
index 0000000..70de7ed
--- /dev/null
+++ "b/pipIrr-platform/\346\226\207\346\241\243/\345\217\226\346\260\264\345\217\243\346\216\247\345\210\266\345\231\250\345\217\212\346\265\213\346\216\247\346\225\260\346\215\256\345\205\263\347\263\273.vsd"
Binary files differ

--
Gitblit v1.8.0