From d9765e031e100e1d8eea34e086cb9c81766e1a00 Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期五, 21 二月 2025 09:52:14 +0800
Subject: [PATCH] 针对王江海制定的协议: 1、优化相关注释; 2、优化代码; 3、协议中报警信息有变化:外门报警改为电池电压报警、增加阀门开关状态、增加阀门堵转报警等。

---
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/upVos/DataAlarmVo.java                          |    2 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealAlarmStatusV202404.java  |   77 +++++++-----
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/global/GlParse.java                  |    8 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/ProtocolConstantV206V202404.java           |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/CodeV1.java                                     |   10 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V2/TkDealAlarmStatusV2.java            |    9 +
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealVirCardStateV202404.java |   43 +++++++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/CodeV202404.java                           |   12 +-
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkPreGenObjsV202404.java       |   66 ++++++++++
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealAlarmStatus.java              |    2 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkPreGenObjs.java                   |    4 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/RtuDataDealTree.xml                                               |   10 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/AlarmVo.java                         |   96 ++++++++++++++-
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAlarmStateHistory.java                              |    1 
 14 files changed, 278 insertions(+), 64 deletions(-)

diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/CodeV1.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/CodeV1.java
index 81ae3e8..961f686 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/CodeV1.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/CodeV1.java
@@ -2,7 +2,7 @@
 
 public class CodeV1 {
 	//鍔熻兘鐮佷负瀛楃涓诧紝鍗佸叚杩涘埗鏁版嵁
-	public static final String cd_02 = "02" ;//閬ユ祴绔欓摼璺娴�
+	public static final String cd_02 = "02" ;//閬ユ祴绔欓摼璺娴�     涓诲姩涓婃姤
 	public static final String cd_10 = "10" ;//璁剧疆閬ユ祴绔欑粓绔湴鍧�
 	public static final String cd_11 = "11" ;//璁剧疆閬ユ祴绔欐椂閽燂紙鏈疄鐜帮級
 	public static final String cd_12 = "12" ;//璁剧疆宸ヤ綔妯″紡锛堟湭瀹炵幇锛�
@@ -30,9 +30,9 @@
 	public static final String cd_6A = "6A" ;//鏌ヨ闃�闂ㄥ牭杞數娴佸��
 	public static final String cd_6B = "6B" ;//鏌ヨ闃�闂ㄨ秴鏃舵椂闂�
 	public static final String cd_6D = "6D" ;//鏌ヨ闃舵姘翠环
-	public static final String cd_81 = "81" ;//闅忔満鑷姤鎶� ok
-	public static final String cd_83 = "83" ;//閬ユ祴绔欏紑鍏抽榾鑷姤 ok
-	public static final String cd_84 = "84" ;//寮�闃�宸ヤ綔鎶� ok
+	public static final String cd_81 = "81" ;//闅忔満鑷姤鎶�     涓诲姩涓婃姤
+	public static final String cd_83 = "83" ;//閬ユ祴绔欏紑鍏抽榾鑷姤    涓诲姩涓婃姤
+	public static final String cd_84 = "84" ;//寮�闃�宸ヤ綔鎶�    涓诲姩涓婃姤
 	public static final String cd_91 = "91" ;//娓呯┖鍘嗗彶璁板綍
 	public static final String cd_92 = "92" ;//閬ユ帶鍚姩闃�闂�
 	public static final String cd_93 = "93" ;//閬ユ帶鍏抽棴闃�闂�
@@ -44,7 +44,7 @@
 	public static final String cd_A1 = "A1" ;//瀹氭椂鍏抽榾寮忚鍒掑紑闃�
 	public static final String cd_A2 = "A2" ;//瀹氶噺鍏抽榾寮忚鍒掑紑闃�
 	public static final String cd_B0 = "B0" ;//鏌ヨ瀹炴椂鏁版嵁锛堟湭瀹炵幇锛�
-	public static final String cd_C0 = "C0" ;//閬ユ祴绔欐暣鐐逛笂鎶ュ疄鏃舵暟鎹� ok
+	public static final String cd_C0 = "C0" ;//閬ユ祴绔欐暣鐐逛笂鎶ュ疄鏃舵暟鎹�    涓诲姩涓婃姤
 
 	public static final String cd_1600 = "1600" ;//鍗囩骇澶嶄綅
 	public static final String cd_1601 = "1601" ;//鍗囩骇閰嶇疆
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/upVos/DataAlarmVo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/upVos/DataAlarmVo.java
index d613365..0c14fcf 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/upVos/DataAlarmVo.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/upVos/DataAlarmVo.java
@@ -69,7 +69,7 @@
         }
        if(loss != null && loss == 1){
             txt += (hasTxt?"銆�":"") + "婕忔崯鎶ヨ" ;
-           hasTxt = true ;
+            hasTxt = true ;
         }
         return txt ;
     }
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/CodeV202404.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/CodeV202404.java
index 323e0b1..3bce602 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/CodeV202404.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/CodeV202404.java
@@ -2,12 +2,10 @@
 
 public class CodeV202404 {
 	//鍔熻兘鐮佷负瀛楃涓诧紝鍗佸叚杩涘埗鏁版嵁
-	public static final String cd_02 = "02" ;//閾捐矾妫�娴�
+	public static final String cd_02 = "02" ;//閾捐矾妫�娴�     涓诲姩涓婃姤
 	public static final String cd_10 = "10" ;//璁剧疆璁惧缁堢鍦板潃
 	public static final String cd_8A = "8A" ;//璁惧鐧诲綍
 	public static final String cd_50 = "50" ; //鏌ヨ璁惧缁堢鍦板潃
-	public static final String cd_80 = "80" ; //璁惧缁堢宸ヤ綔涓婃姤
-	public static final String cd_81 = "81" ; //璁惧缁堢闅忔満鑷姤
 	public static final String cd_5B = "5B" ; //鏌ヨ璁惧缁堢瀹炴椂鍊�
 	public static final String cd_65 = "65" ; //鏌ヨ璁惧缁堢鐢ㄦ埛鐢ㄦ按璁板綍
 	public static final String cd_97 = "97" ; //娓呴櫎璁惧缁堢鐢ㄦ埛鐢ㄦ按璁板綍
@@ -26,9 +24,11 @@
 	public static final String cd_93 = "93" ; //骞冲彴杩滅▼鍏抽棴姘存车/闃�闂�
 	public static final String cd_A2 = "A2" ; //APP杩滅▼寮�鍚按娉�/闃�闂�
 	public static final String cd_A3 = "A3" ; //APP杩滅▼鍏抽棴姘存车/闃�闂�
-	public static final String cd_83 = "83" ; //閬ユ祴缁堢瀹氱偣涓婃姤
-	public static final String cd_84 = "84" ; //鍒峰崱寮�娉�/闃�涓婃姤
-	public static final String cd_85 = "85" ; //鍒峰崱鍏虫车/闃�涓婃姤
+	public static final String cd_80 = "80" ; //璁惧缁堢宸ヤ綔涓婃姤    涓诲姩涓婃姤
+	public static final String cd_81 = "81" ; //璁惧缁堢闅忔満鑷姤    涓诲姩涓婃姤
+	public static final String cd_83 = "83" ; //閬ユ祴缁堢瀹氱偣涓婃姤锛堜竴澶╂姤涓�娆★級    涓诲姩涓婃姤
+	public static final String cd_84 = "84" ; //鍒峰崱寮�娉�/闃�涓婃姤    涓诲姩涓婃姤
+	public static final String cd_85 = "85" ; //鍒峰崱鍏虫车/闃�涓婃姤    涓诲姩涓婃姤
 	public static final String cd_9A = "9A" ; //鏌ヨ骞寸敤姘撮噺
 	public static final String cd_26 = "26" ; //璁剧疆璁惧缁堢骞寸敤姘撮噺
 	public static final String cd_21 = "21" ; //璁剧疆璁惧缁堢IP鍦板潃
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/ProtocolConstantV206V202404.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/ProtocolConstantV206V202404.java
index a3a22fa..32e197c 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/ProtocolConstantV206V202404.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/ProtocolConstantV206V202404.java
@@ -48,6 +48,8 @@
     public static final int codeIndex = 12 ;//鍔熻兘鐮佸瓧鑺傛暟缁勪笅鏍�
     public static final int dataIndex = 13 ;//鍏蜂綋鏁版嵁瀛楄妭鏁扮粍涓嬫爣
 
+    public static final String vsCardAddr = "00000000";//鏈郴缁熷簲鐢ㄧ殑铏氭嫙鍗★紝鍗$墿鐞嗗湴鍧�閲囩敤10涓�0浣滀负妯℃嫙
+
     ////////////////////////////////////////////////
     //
     //杩滅▼鍗囩骇鐩稿叧
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/global/GlParse.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/global/GlParse.java
index e81594f..c431d83 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/global/GlParse.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/global/GlParse.java
@@ -70,12 +70,16 @@
 
         b = bs[index + 1] ;
         vo.alarm0MoneyRemain = (byte)(b & 0x1) ;
-        vo.alarmInnerDoor = (byte)((b >> 1) & 1) ;
-        vo.alarmOuterDoor = (byte)((b >> 2) & 1) ;
+        vo.alarmDoor = (byte)((b >> 1) & 1) ;
+        vo.alarmBatteryVolt = (byte)((b >> 2) & 1) ;
         vo.alarmEleMiss = (byte)((b >> 3) & 1) ;
         vo.alarmEleExceed = (byte)((b >> 4) & 1) ;
         vo.alarmEleLowVolt = (byte)((b >> 5) & 1) ;
         vo.stateIcEnable = (byte)((b >> 6) & 1) ;
+        vo.stateOpClValve = (byte)((b >> 7) & 1) ;
+
+        b = bs[index + 2] ;
+        vo.alarmBlockValve = (byte)(b & 0x1) ;
     }
 
     public static String parseTp(byte[] bs, short index){
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/AlarmVo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/AlarmVo.java
index b9f58f6..c1729b0 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/AlarmVo.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/AlarmVo.java
@@ -6,23 +6,97 @@
  * @Description
  */
 public class AlarmVo {
+    public static final byte DevOpenState = 1 ;
+    public static final byte DevCloseState = 0 ;
 
     public Byte statePump ; //娉�/闃�鐘舵��	(1锛氬紑娉�/闃�锛�0锛氬叧娉�/闃�)
     public Byte alarmWaterRemain ; //鍓╀綑姘撮噺鎶ヨ	(1锛氬皬浜庢姤璀︿笂闄愭姤璀� 0锛氭甯�)
     public Byte alarm0WaterRemain ; //鍓╀綑姘撮噺涓�0鍏虫车/闃�	(1锛氬墿浣欐按閲忎负0鍏虫车  0锛氭甯�)
     public Byte alarmExceedYear ; //骞村害瓒呴噰鎶ヨ	(1锛氬勾鐢ㄦ按閲忓ぇ浜庨檺鍒舵按閲忔姤璀� 0锛氭甯�)
     public Byte alarmWaterMeterFault ; //澶栭儴娴侀噺璁℃晠闅�	(1锛氭祦閲忚鏁呴殰鎶ヨ 0锛氭甯�)
-    public Byte alarmSteal ; //鍋锋按鎶ヨ	(1锛氱粫寮�鎺у埗鍣ㄧ敤姘存姤璀� 0锛氭甯�)
+    public Byte alarmSteal ; //鍋锋按鎶ヨ	(1锛氱粫寮�鎺у埗鍣ㄧ敤姘存姤璀� 0锛氭甯�)(2025-02-19锛氬搴旈澇鎬诲崗璁腑鐨勬紡鎹熸姤璀︼紝鍗冲叧闃�鎬佹椂鏈夋祦閲忎骇鐢�)
     public Byte alarmWaterMeterBreak ; //娴侀噺璁℃崯鍧忔姤璀�	(1锛氭甯搁�氳浣嗙灛鏃朵负0鎶ヨ 0锛氭甯�)
     public Byte alarmEleMeterFault ; //鐢佃〃鏁呴殰鎶ヨ	(1锛氬拰鐢佃〃閫氳鏂垨鏁版嵁涓嶆甯� 0锛氭甯�)
     public Byte alarm0MoneyRemain ; //鍓╀綑閲戦涓�0	(1锛氬墿浣欓噾棰濅负0鎶ヨ  0锛氭甯�)
-    public Byte alarmInnerDoor ; //鎺у埗鍣ㄥ唴闂ㄦ姤璀�	(1锛氬唴闂ㄦ墦寮�鎶ヨ    0锛氭甯�)
-    public Byte alarmOuterDoor ; //鎺у埗鍣ㄥ闂ㄦ姤璀�	(1锛氬闂ㄦ墦寮�鎶ヨ    0锛氭甯�)
+    public Byte alarmDoor; //鎺у埗鍣ㄥ唴闂ㄦ姤璀�	(1锛氬唴闂ㄦ墦寮�鎶ヨ    0锛氭甯�)
+    public Byte alarmBatteryVolt; //鐢垫睜鐢靛帇浣庢姤璀�	(1锛氱數姹犱綆鍏抽榾鎶ヨ    0锛氭甯�)
     public Byte alarmEleMiss ; //浜ゆ祦缂洪」鎶ヨ	(1锛氫笁鐩哥己椤规姤璀�    0锛氭甯�)
-    public Byte alarmEleExceed ; //浜ゆ祦杩囨祦鎶ヨ	(1锛氫氦娴佽繃娴佹姤璀�    0锛氭甯�)
+    public Byte alarmEleExceed ; //浜ゆ祦杩囨祦鎶ヨ (1锛氫氦娴佽繃娴佹姤璀�    0锛氭甯�)
     public Byte alarmEleLowVolt ; //涓夌浉鐢垫瑺鍘嬫姤璀�	(1锛氭瑺鍘嬫姤璀�        0锛氭甯�)
-    public Byte stateIcEnable ; //IC鍗′娇鑳�	(1銆両C鏈夊埛鍗℃敮鎸�    0锛氫笉鏀寔)
+    public Byte stateIcEnable ; //IC鍗′娇鑳� (1锛欼C鏈夊埛鍗℃敮鎸�    0锛氫笉鏀寔)
+    public Byte alarmBlockValve; //闃�闂ㄦ晠闅滄姤璀� (1:闃�闂ㄥ牭杞�   0锛氶榾闂ㄦ甯革紙涓嶅牭杞級)
+    public Byte stateOpClValve ; //闃�闂ㄥ紑鍏崇姸鎬� (1锛氬紑鍏抽榾涓嶅埌浣�    0锛氬紑鍏抽榾鍒颁綅)
 
+    public boolean hasAlarm(){
+        boolean flag = false ;
+        if((alarmBatteryVolt != null && alarmBatteryVolt == 1) ||
+                (alarmWaterMeterFault != null && alarmWaterMeterFault == 1) ||
+                (alarmWaterMeterBreak != null && alarmWaterMeterBreak == 1) ||
+                (alarmSteal != null && alarmSteal == 1) ||
+                (alarmBlockValve != null && alarmBlockValve == 1) ){
+            flag = true ;
+        }
+        return flag ;
+    }
+
+    public boolean hasAlarmExcludeLoss(){
+        boolean flag = false ;
+        if((alarmBatteryVolt != null && alarmBatteryVolt == 1) ||
+                (alarmWaterMeterFault != null && alarmWaterMeterFault == 1) ||
+                (alarmWaterMeterBreak != null && alarmWaterMeterBreak == 1)||
+                (alarmBlockValve != null && alarmBlockValve == 1) ){
+            flag = true ;
+        }
+        return flag ;
+    }
+
+    public String alarmContent(){
+        String txt = "" ;
+        boolean hasTxt = false ;
+        if(alarmBatteryVolt != null && alarmBatteryVolt == 1){
+            txt += (hasTxt?"銆�":"") + "鐢垫睜鐢靛帇浣庢姤璀�" ;
+            hasTxt = true ;
+        }
+        if(alarmWaterMeterFault != null && alarmWaterMeterFault == 1){
+            txt += (hasTxt?"銆�":"") + "澶栭儴娴侀噺璁℃晠闅滄姤璀�" ;
+            hasTxt = true ;
+        }
+        if(alarmWaterMeterBreak != null && alarmWaterMeterBreak == 1){
+            txt += (hasTxt?"銆�":"") + "娴侀噺璁℃晠闅滄姤璀�" ;
+            hasTxt = true ;
+        }
+        if(alarmSteal != null && alarmSteal == 1){
+            txt += (hasTxt?"銆�":"") + "婕忔崯鎶ヨ" ;
+            hasTxt = true ;
+        }
+       if(alarmBlockValve != null && alarmBlockValve == 1){
+            txt += (hasTxt?"銆�":"") + "闃�闂ㄦ晠闅滄姤璀�" ;
+            hasTxt = true ;
+        }
+        return txt ;
+    }
+
+    public String alarmContentExcludeLoss(){
+        String txt = "" ;
+        boolean hasTxt = false ;
+        if(alarmBatteryVolt != null && alarmBatteryVolt == 1){
+            txt += (hasTxt?"銆�":"") + "鐢垫睜鐢靛帇浣庢姤璀�" ;
+            hasTxt = true ;
+        }
+        if(alarmWaterMeterFault != null && alarmWaterMeterFault == 1){
+            txt += (hasTxt?"銆�":"") + "澶栭儴娴侀噺璁℃晠闅滄姤璀�" ;
+            hasTxt = true ;
+        }
+        if(alarmWaterMeterBreak != null && alarmWaterMeterBreak == 1){
+            txt += (hasTxt?"銆�":"") + "娴侀噺璁℃晠闅滄姤璀�" ;
+            hasTxt = true ;
+        }
+        if(alarmBlockValve != null && alarmBlockValve == 1){
+            txt += (hasTxt?"銆�":"") + "闃�闂ㄦ晠闅滄姤璀�" ;
+            hasTxt = true ;
+        }
+        return txt ;
+    }
     public String toString(){
         StringBuffer sb = new StringBuffer() ;
         sb.append("      娉�/闃�鐘舵�� : ") ;
@@ -53,10 +127,10 @@
         sb.append(alarm0MoneyRemain == null?"鏈煡":(alarm0MoneyRemain.byteValue() == 0 ? "姝e父":(alarm0MoneyRemain.byteValue() == 1 ? "鍏虫车/闃�":"鏈煡"))) ;
         sb.append("\n") ;
         sb.append("      鎺у埗鍣ㄥ唴闂� : ") ;
-        sb.append(alarmInnerDoor == null?"鏈煡":(alarmInnerDoor.byteValue() == 0 ? "姝e父":(alarmInnerDoor.byteValue() == 1 ? "鎶ヨ":"鏈煡"))) ;
+        sb.append(alarmDoor == null?"鏈煡":(alarmDoor.byteValue() == 0 ? "姝e父":(alarmDoor.byteValue() == 1 ? "鎶ヨ":"鏈煡"))) ;
         sb.append("\n") ;
-        sb.append("      鎺у埗鍣ㄥ闂� : ") ;
-        sb.append(alarmOuterDoor == null?"鏈煡":(alarmOuterDoor.byteValue() == 0 ? "姝e父":(alarmOuterDoor.byteValue() == 1 ? "鎶ヨ":"鏈煡"))) ;
+        sb.append("      鐢垫睜鐢靛帇浣� : ") ;
+        sb.append(alarmBatteryVolt == null?"鏈煡":(alarmBatteryVolt.byteValue() == 0 ? "姝e父":(alarmBatteryVolt.byteValue() == 1 ? "鎶ヨ":"鏈煡"))) ;
         sb.append("\n") ;
         sb.append("      浜ゆ祦缂洪」 : ") ;
         sb.append(alarmEleMiss == null?"鏈煡":(alarmEleMiss.byteValue() == 0 ? "姝e父":(alarmEleMiss.byteValue() == 1 ? "鎶ヨ":"鏈煡"))) ;
@@ -70,6 +144,12 @@
         sb.append("      IC鍗″姛鑳� : ") ;
         sb.append(stateIcEnable == null?"鏈煡":(stateIcEnable.byteValue() == 0 ? "鏃犳晥":(stateIcEnable.byteValue() == 1 ? "鏈夋晥":"鏈煡"))) ;
         sb.append("\n") ;
+        sb.append("      闃�闂ㄥ紑鍏崇姸鎬� : ") ;
+        sb.append(stateOpClValve == null?"鏈煡":(stateOpClValve.byteValue() == 0 ? "姝e父":(stateOpClValve.byteValue() == 1 ? "鏈埌浣�":"鏈煡"))) ;
+        sb.append("\n") ;
+        sb.append("      闃�闂ㄥ牭杞姤璀� : ") ;
+        sb.append(alarmBlockValve == null?"鏈煡":(alarmBlockValve.byteValue() == 0 ? "姝e父":(alarmBlockValve.byteValue() == 1 ? "鎶ヨ":"鏈煡"))) ;
+        sb.append("\n") ;
 
         return sb.toString() ;
     }
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
index f514ab4..d9b1130 100644
--- 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
@@ -120,6 +120,7 @@
     public Byte alarmInnerDoor;
 
     /**
+     * 2025-02-19 鍚箟鍙樹负 鐢垫睜鐢靛帇鎶ヨ(1锛氭姤璀︼紝0锛氭甯�)
      * 鎺у埗鍣ㄥ闂ㄦ墦寮�鎶ヨ(1锛氭姤璀︼紝0锛氭甯�)
      */
     public Byte alarmOuterDoor;
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealAlarmStatus.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealAlarmStatus.java
index e83bb02..266078e 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealAlarmStatus.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealAlarmStatus.java
@@ -114,7 +114,7 @@
      * @param stateVo 鐘舵�佸璞�
      */
     private void toMsCenter(PrController controller, String rtuAddr, DataV1 dV1, DataAlarmVo alarmVo, DataStateVo stateVo){
-        if(alarmVo != null && controller != null){
+        if(alarmVo != null && controller != null && alarmVo.hasAlarm()){
             MsObj msObj = new MsObj() ;
             msObj.put("name", "鎶ヨ");
             msObj.put("rtuAddr", rtuAddr);
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkPreGenObjs.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkPreGenObjs.java
index c6389d6..fcbb679 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkPreGenObjs.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkPreGenObjs.java
@@ -57,7 +57,7 @@
 		if(sv != null){
 			PrController controller = sv.getControllersByRtuAddrAndIntakeNotNull(rtuAddr) ;
 			PrControllerTramp controllerTramp = null ;
-			SeClient clientVo = null ;//杩欎釜鍊煎璞′腑鍙湁id鍜宯ame浼氭湁鍊�
+			SeClient clientVo = null ;//杩欎釜鍊煎璞′腑鍙湁id銆乶ame銆乤ddress浼氭湁鍊�
 			if(controller == null){
 				//鏁版嵁搴撲腑鏈煡璇㈠埌鎺у埗鍣紙RTU瀹炰綋锛�(宸茬粡缁戝畾涓旀帶鍒跺櫒鍦板潃鐩哥)
 				//娴佹氮鑰呮帶鍒跺櫒
@@ -90,7 +90,7 @@
 				(d1.subData instanceof DataCd83OpenVo ||
 						d1.subData instanceof DataCd83CloseVo ||
 						d1.subData instanceof DataCd84Vo)){
-			//寮�闃�鍚庯紝鍏抽榾鎶ワ紝闃�寮�宸ヤ綔鎶�
+			//寮�闃�鎶ワ紝鍏抽榾鎶ワ紝闃�寮�宸ヤ綔鎶�
 			String icCardAddr = null ;
 			String icCardNo = null ;
 			if(d1.subData instanceof DataCd83OpenVo){
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V2/TkDealAlarmStatusV2.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V2/TkDealAlarmStatusV2.java
index 572ec61..7e8f23f 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V2/TkDealAlarmStatusV2.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V2/TkDealAlarmStatusV2.java
@@ -37,6 +37,7 @@
         Data d = (Data)data ;
         Object subD = d.getSubData() ;
         if(subD != null){
+            boolean toNext = false ;
             DataV2 dV2 = (DataV2)subD ;
             if(dV2 != null && dV2.subData != null){
                 //dV2.dataCd81Vo銆� dV2.dataCd84Vo 涓� dV2.dataCdC0Vo 涓嶄細鍚屾椂鏈夊��
@@ -57,6 +58,7 @@
                             if(dataCd02Vo.stateVo != null && dataCd02Vo.stateVo.valveState != null && dataCd02Vo.stateVo.valveState.byteValue() == DataStateVo.ValveCloseState){
                                 if(controller != null && controller.getIntakeId() != null){
                                     this.taskResult = new Object[]{controller.getIntakeId(), DataStateVo.ValveCloseState} ;
+                                    toNext = true ;
                                 }
                             }
                         }
@@ -73,6 +75,7 @@
                             if(dataCd81Vo.stateVo != null && dataCd81Vo.stateVo.valveState != null && dataCd81Vo.stateVo.valveState.byteValue() == DataStateVo.ValveCloseState){
                                 if(controller != null && controller.getIntakeId() != null){
                                     this.taskResult = new Object[]{controller.getIntakeId(), DataStateVo.ValveCloseState} ;
+                                    toNext = true ;
                                 }
                             }
                         }
@@ -106,6 +109,7 @@
                             if(dataCdC0Vo.stateVo != null && dataCdC0Vo.stateVo.valveState != null && dataCdC0Vo.stateVo.valveState.byteValue() == DataStateVo.ValveCloseState){
                                 if(controller != null && controller.getIntakeId() != null){
                                     this.taskResult = new Object[]{controller.getIntakeId(), DataStateVo.ValveCloseState} ;
+                                    toNext = true ;
                                 }
                             }
                         }
@@ -113,6 +117,9 @@
                 } catch (Exception e) {
                     log.error("淇濆瓨鎺у埗鍣ㄦ姤璀﹀拰鐘舵�佹暟鎹椂鍙戠敓寮傚父", e);
                 }
+            }
+            if(toNext){
+                this.toNextTasks(d);
             }
         }
     }
@@ -126,7 +133,7 @@
      * @param stateVo 鐘舵�佸璞�
      */
     private void toMsCenter(PrController controller, String rtuAddr, DataV2 dV12, DataAlarmVo alarmVo, DataStateVo stateVo){
-        if(alarmVo != null && controller != null){
+        if(alarmVo != null && controller != null && alarmVo.hasAlarm()){
             MsObj msObj = new MsObj() ;
             msObj.put("name", "鎶ヨ");
             msObj.put("rtuAddr", rtuAddr);
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealAlarmStatusV202404.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealAlarmStatusV202404.java
index 837e2f0..6379528 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealAlarmStatusV202404.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealAlarmStatusV202404.java
@@ -12,8 +12,6 @@
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
-import java.util.Date;
-
 /**
  * @Author liurunyu
  * @Date 2024/5/8 14:18
@@ -35,6 +33,7 @@
         DataV202404 dV202404 = (DataV202404)d.getSubData() ;
         Object cdObj = dV202404.subData ;
         //鍓嶉潰浠诲姟宸茬粡鍒ゆ柇cdObj涓嶄负null
+        boolean toNext = false ;
         try{
             Object[] objs = this.getTaskResults(TkPreGenObjsV202404.taskId) ;
             DbSv sv = (DbSv)objs[0] ;
@@ -44,29 +43,62 @@
                 DataCd81Vo cdData = (DataCd81Vo)(cdObj) ;
                 this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, dV202404.dt) ;
                 this.saveHistory(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, dV202404.dt) ;
+                if(cdData.statePump != null && cdData.statePump.byteValue() == AlarmVo.DevCloseState){
+                    if(controller != null && controller.getIntakeId() != null){
+                        this.taskResult = new Object[]{controller.getIntakeId(), AlarmVo.DevCloseState} ;
+                        toNext = true ;
+                    }
+                }
             }else if(cdObj instanceof DataCd80_5BVo){
                 //璁惧缁堢宸ヤ綔涓婃姤 + 鏌ヨ璁惧缁堢瀹炴椂鍊�
                 DataCd80_5BVo cdData = (DataCd80_5BVo)(cdObj) ;
                 this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, dV202404.dt) ;
                 this.saveHistory(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, dV202404.dt) ;
+                if(cdData.statePump != null && cdData.statePump.byteValue() == AlarmVo.DevCloseState){
+                    if(controller != null && controller.getIntakeId() != null){
+                        this.taskResult = new Object[]{controller.getIntakeId(), AlarmVo.DevCloseState} ;
+                        toNext = true ;
+                    }
+                }
             }else if(cdObj instanceof DataCd93_A3Vo){
                 //骞冲彴/APP杩滅▼鍏抽棴姘存车/闃�闂�   +  鍒峰崱鍏虫车/闃�涓婃姤
                 DataCd93_A3Vo cdData = (DataCd93_A3Vo)(cdObj) ;
                 this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), cdData.endDt, cdData, dV202404.dt) ;
                 this.saveHistory(sv, controller, d.getRtuAddr(), cdData.endDt, cdData, dV202404.dt) ;
+                if(cdData.statePump != null && cdData.statePump.byteValue() == AlarmVo.DevCloseState){
+                    if(controller != null && controller.getIntakeId() != null){
+                        this.taskResult = new Object[]{controller.getIntakeId(), AlarmVo.DevCloseState} ;
+                        toNext = true ;
+                    }
+                }
             }else if(cdObj instanceof DataCd84Vo){
                 //璁惧缁堢鍒峰崱寮�娉�/闃�涓婃姤
                 DataCd84Vo cdData = (DataCd84Vo)(cdObj) ;
                 this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), cdData.openDt, cdData, dV202404.dt) ;
                 this.saveHistory(sv, controller, d.getRtuAddr(), cdData.openDt, cdData, dV202404.dt) ;
+                if(cdData.statePump != null && cdData.statePump.byteValue() == AlarmVo.DevCloseState){
+                    if(controller != null && controller.getIntakeId() != null){
+                        this.taskResult = new Object[]{controller.getIntakeId(), AlarmVo.DevCloseState} ;
+                        toNext = true ;
+                    }
+                }
             }else if(cdObj instanceof DataCdC2Vo){
                 //璁惧缁堢寮�鍏虫按娉�/闃�闂ㄦ垚鍔�/澶辫触涓婃姤
                 DataCdC2Vo cdData = (DataCdC2Vo)(cdObj) ;
                 this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, dV202404.dt) ;
                 this.saveHistory(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, dV202404.dt) ;
+                if(cdData.statePump != null && cdData.statePump.byteValue() == AlarmVo.DevCloseState){
+                    if(controller != null && controller.getIntakeId() != null){
+                        this.taskResult = new Object[]{controller.getIntakeId(), AlarmVo.DevCloseState} ;
+                        toNext = true ;
+                    }
+                }
             }
         }catch (Exception e){
             log.error("淇濆瓨鎺у埗鍣ㄦ姤璀﹀拰鐘舵�佹暟鎹椂鍙戠敓寮傚父", e);
+        }
+        if(toNext){
+            this.toNextTasks(d);
         }
     }
     /**
@@ -101,21 +133,20 @@
                     alarmVo==null?null:alarmVo.alarmWaterMeterBreak,
                     alarmVo==null?null:alarmVo.alarmEleMeterFault,
                     alarmVo==null?null:alarmVo.alarm0MoneyRemain,
-                    alarmVo==null?null:alarmVo.alarmInnerDoor,
-                    alarmVo==null?null:alarmVo.alarmOuterDoor,
+                    alarmVo==null?null:alarmVo.alarmDoor,
+                    alarmVo==null?null:alarmVo.alarmDoor,//2025-02-19鏈虹澶栭棬鎶ヨ椤规敼涓虹數姹犵數鍘嬩簡
                     alarmVo==null?null:alarmVo.alarmEleMiss,
                     alarmVo==null?null:alarmVo.alarmEleExceed,
                     alarmVo==null?null:alarmVo.alarmEleLowVolt,
                     alarmVo==null?null:alarmVo.stateIcEnable,
-                    (byte)0,//鐢垫睜鐢靛帇(1锛氭姤璀︼紝0锛氭甯�)
-                    (byte)0,//闃�闂ㄦ姤璀�(1锛氭姤璀︼紝0锛氭甯�)
+                    alarmVo==null?null:alarmVo.alarmBatteryVolt,//鐢垫睜鐢靛帇(1锛氭姤璀︼紝0锛氭甯�)
+                    alarmVo==null?null:alarmVo.alarmBlockValve,//闃�闂ㄥ牭杞姤璀�(1锛氭姤璀︼紝0锛氭甯�)
                     (byte)0,//渚涚數鏂瑰紡锛�0: 220V锛�1锛氳搫鐢垫睜锛�
                     System.currentTimeMillis()
             ) ;
             sv.saveRmAlarmStateLast(po) ;
         }else{
             po = this.update(po, controller, rtuDt, alarmVo, receiveDt) ;
-            this.updateVirCardNoUseState(sv, controller, alarmVo) ;
             sv.updateRmAlarmStateLast(po);
         }
     }
@@ -150,14 +181,14 @@
                 alarmVo==null?null:alarmVo.alarmWaterMeterBreak,
                 alarmVo==null?null:alarmVo.alarmEleMeterFault,
                 alarmVo==null?null:alarmVo.alarm0MoneyRemain,
-                alarmVo==null?null:alarmVo.alarmInnerDoor,
-                alarmVo==null?null:alarmVo.alarmOuterDoor,
+                alarmVo==null?null:alarmVo.alarmDoor,
+                alarmVo==null?null:alarmVo.alarmDoor,//2025-02-19鏈虹澶栭棬鎶ヨ椤规敼涓虹數姹犵數鍘嬩簡
                 alarmVo==null?null:alarmVo.alarmEleMiss,
                 alarmVo==null?null:alarmVo.alarmEleExceed,
                 alarmVo==null?null:alarmVo.alarmEleLowVolt,
                 alarmVo==null?null:alarmVo.stateIcEnable,
-                (byte)0,//鐢垫睜鐢靛帇(1锛氭姤璀︼紝0锛氭甯�)
-                (byte)0,//闃�闂ㄦ姤璀�(1锛氭姤璀︼紝0锛氭甯�)
+                alarmVo==null?null:alarmVo.alarmBatteryVolt,//鐢垫睜鐢靛帇(1锛氭姤璀︼紝0锛氭甯�)
+                alarmVo==null?null:alarmVo.alarmBlockValve,//闃�闂ㄥ牭杞姤璀�(1锛氭姤璀︼紝0锛氭甯�)
                 (byte)0//渚涚數鏂瑰紡锛�0: 220V锛�1锛氳搫鐢垫睜锛�
         ) ;
         sv.saveRmAlarmStateHistory(po) ;
@@ -192,32 +223,16 @@
             po.alarmWaterMeterBreak = alarmVo.alarmWaterMeterBreak ;
             po.alarmEleMeterFault = alarmVo.alarmEleMeterFault ;
             po.alarm0MoneyRemain = alarmVo.alarm0MoneyRemain ;
-            po.alarmInnerDoor = alarmVo.alarmInnerDoor ;
-            po.alarmOuterDoor = alarmVo.alarmOuterDoor ;
+            po.alarmInnerDoor = alarmVo.alarmDoor;
+            po.alarmOuterDoor = alarmVo.alarmDoor;
             po.alarmEleMiss = alarmVo.alarmEleMiss ;
             po.alarmEleExceed = alarmVo.alarmEleExceed ;
             po.alarmEleLowVolt = alarmVo.alarmEleLowVolt ;
             po.stateIcEnable = alarmVo.stateIcEnable ;
+            po.alarmBatteryVolt = alarmVo.alarmBatteryVolt ;
+            po.alarmValve = alarmVo.alarmBlockValve;
         }
         return po ;
     }
 
-    /**
-     * 铏氭嫙鍗″湪鍙栨按涓殑鍗犵敤鐘舵�佹敼涓洪潪搴旂敤鐘舵��
-     */
-    private void updateVirCardNoUseState(DbSv sv,
-                                PrController controller,
-                                AlarmVo alarmVo){
-        if(alarmVo != null){
-            if(alarmVo.statePump != null && alarmVo.statePump.byteValue() == 0){
-                //闃�闂ㄥ叧闂姸鎬�
-                if(controller != null && controller.getIntakeId() != null){
-                    //铏氭嫙鍗″湪鍙栨按涓殑鍗犵敤鐘舵�佹敼涓洪潪搴旂敤鐘舵��
-                    Date now = new Date() ;
-                    sv.updateVirCardNoUseState(controller.getIntakeId(), now);
-                }
-            }
-        }
-
-    }
 }
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealVirCardStateV202404.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealVirCardStateV202404.java
new file mode 100644
index 0000000..0a18f1f
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealVirCardStateV202404.java
@@ -0,0 +1,43 @@
+package com.dy.rtuMw.server.rtuData.p206V202404;
+
+import com.dy.common.mw.protocol.p206V202404.upVos.AlarmVo;
+import com.dy.rtuMw.server.rtuData.TaskSurpport;
+import com.dy.rtuMw.server.rtuData.dbSv.DbSv;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import java.util.Date;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/8/9 9:49
+ * @Description
+ */
+public class TkDealVirCardStateV202404 extends TaskSurpport {
+
+    private static final Logger log = LogManager.getLogger(TkDealVirCardStateV202404.class.getName()) ;
+
+    //绫籌D锛屼竴瀹氫笌Tree.xml閰嶇疆鏂囦欢涓厤缃竴鑷�
+    public static final String taskId = "TkDealVirCardStateV202404" ;
+
+    /**
+     * 鎵ц鑺傜偣浠诲姟锛氳櫄鎷熷崱鍦ㄥ彇姘村彛涓婄殑鍗犵敤鐘舵�佹敼涓洪潪鍗犵敤鐘舵��
+     * @param data 闇�瑕佸鐞嗙殑鏁版嵁
+     */
+    @Override
+    public void execute(Object data) {
+        Object[] objs = this.getTaskResults(TkDealAlarmStatusV202404.taskId);
+        if(objs != null && objs.length >= 2){
+            Long intakeId = (Long)objs[0] ;
+            Byte valveState = (Byte)objs[1] ;
+            if(intakeId != null && valveState.byteValue() == AlarmVo.DevCloseState){
+                objs = this.getTaskResults(TkPreGenObjsV202404.taskId);
+                DbSv sv = (DbSv) objs[0];
+                //铏氭嫙鍗″湪鍙栨按鍙d笂鐨勫崰鐢ㄧ姸鎬佹敼涓洪潪鍗犵敤鐘舵��
+                Date now = new Date() ;
+                sv.updateVirCardNoUseState(intakeId, now);
+            }
+        }
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkPreGenObjsV202404.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkPreGenObjsV202404.java
index 53bb25c..21a6d95 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkPreGenObjsV202404.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkPreGenObjsV202404.java
@@ -3,10 +3,12 @@
 import com.dy.common.mw.protocol.Command;
 import com.dy.common.mw.protocol.CommandType;
 import com.dy.common.mw.protocol.Data;
-import com.dy.common.mw.protocol.p206V202404.CodeV202404;
+import com.dy.common.mw.protocol.p206V202404.*;
+import com.dy.common.mw.protocol.p206V202404.upVos.*;
 import com.dy.common.springUtil.SpringContextUtil;
 import com.dy.pipIrrGlobal.pojoPr.PrController;
 import com.dy.pipIrrGlobal.pojoPr.PrControllerTramp;
+import com.dy.pipIrrGlobal.pojoSe.SeClient;
 import com.dy.rtuMw.server.ServerProperties;
 import com.dy.rtuMw.server.rtuData.TaskSurpport;
 import com.dy.rtuMw.server.rtuData.dbSv.DbSv;
@@ -16,11 +18,16 @@
 
 import java.text.ParseException;
 import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * @Author liurunyu
  * @Date 2024/5/8 14:18
  */
 public class TkPreGenObjsV202404 extends TaskSurpport {
+
+    private static final Map<String, Boolean> onceUpDataRtus = new HashMap<>();
 
     private static final Logger log = LogManager.getLogger(TkPreGenObjsV202404.class.getName()) ;
 
@@ -35,10 +42,24 @@
     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(d.subData != null && d.subData instanceof DataV202404){
+            DataV202404 dataV1 = (DataV202404)d.subData ;
+            if(dataV1.subData != null && dataV1.subData instanceof DataCd02Vo){
+                //杩囨护鎺夊績璺虫暟鎹�
+                if(onceUpDataRtus.containsKey(rtuAddr)){
+                    return ;
+                }
+            }
+        }
+        if(!onceUpDataRtus.containsKey(rtuAddr)){
+            onceUpDataRtus.put(rtuAddr, true) ;
+        }
+
+        DbSv sv = SpringContextUtil.getBean(DbSv.class) ;
         if(sv != null){
             PrController controller = sv.getControllersByRtuAddrAndIntakeNotNull(rtuAddr) ;
             PrControllerTramp controllerTramp = null ;
+            SeClient clientVo = null ;//杩欎釜鍊煎璞′腑鍙湁id銆乶ame銆乤ddress浼氭湁鍊�
             if(controller == null){
                 //鏁版嵁搴撲腑鏈煡璇㈠埌鎺у埗鍣紙RTU瀹炰綋锛�(宸茬粡缁戝畾涓旀帶鍒跺櫒鍦板潃鐩哥)
                 //娴佹氮鑰呮帶鍒跺櫒
@@ -49,9 +70,13 @@
                     //绗竴娆″彂鐜帮紝涓嬪彂娓呯┖RTU鍘嗗彶鍛戒护锛屼互浣垮叾閲嶆柊寮�濮嬭褰曟柊鍦扮偣鐨勬暟鎹�
                     this.sendClearCommand(rtuAddr, d.protocol);
                 }
+            }else{
+                if(d.subData != null && d.subData instanceof DataV202404){
+                    clientVo = this.getClient(sv, (DataV202404)d.subData);
+                }
             }
             //涓嶈鏄惁涓烘祦娴帶鍒跺櫒锛圧TU瀹炰綋锛夛紝閮借杩涜涓嬫宸ヤ綔锛岃褰曞叾涓婃姤鐨勪竴浜涙暟鎹紝褰撶粦瀹氭帶鍒跺櫒鍚庯紝鏁版嵁鑷姩鏈変簡褰掑睘
-            this.taskResult = new Object[]{sv, controller, controllerTramp} ;
+            this.taskResult = new Object[]{sv, controller, controllerTramp, clientVo} ;
             this.toNextTasks(data);
         }else{
             log.error("涓ラ噸閿欒锛屾湭鑳藉緱鍒癉bSv瀵硅薄");
@@ -59,6 +84,41 @@
     }
 
     /**
+     * 寰楀埌鐩稿叧鍐滄埛淇℃伅
+     */
+    private SeClient getClient(DbSv sv, DataV202404 d1){
+        SeClient clientVo = null ;
+        if(d1.subData != null &&
+                (d1.subData instanceof DataCd84Vo ||
+                        d1.subData instanceof DataCd85Vo ||
+                        d1.subData instanceof DataCd80_5BVo)){
+            //寮�闃�鎶ワ紝鍏抽榾鎶ワ紝闃�寮�宸ヤ綔鎶�
+            String icCardAddr = null ;
+            String icCardNo = null ;
+            if(d1.subData instanceof DataCd84Vo){
+                DataCd84Vo vo = (DataCd84Vo)d1.subData ;
+                icCardAddr = vo.icCardAddr ;
+                icCardNo = vo.icCardNo ;
+            }else if(d1.subData instanceof DataCd85Vo){
+                DataCd85Vo vo = (DataCd85Vo)d1.subData ;
+                icCardAddr = vo.icCardAddr ;
+                icCardNo = vo.icCardNo ;
+            }else if(d1.subData instanceof DataCd80_5BVo){
+                DataCd80_5BVo vo = (DataCd80_5BVo)d1.subData ;
+                icCardAddr = vo.icCardAddr ;
+                icCardNo = vo.icCardNo ;
+            }
+            if(icCardAddr != null && icCardNo != null){
+                if(icCardAddr.equals(ProtocolConstantV206V202404.vsCardAddr)){
+                    clientVo = sv.getClientIdAndNameByVsCardNo(icCardNo) ;
+                }else{
+                    clientVo = sv.getClientIdAndNameByCardAddrAndCardNo(icCardAddr, icCardNo) ;
+                }
+            }
+        }
+        return clientVo ;
+    }
+    /**
      * 鍙戦�佹竻绌篟TU鐨勫懡浠�
      * @param rtuAddr
      * @param protocol
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/RtuDataDealTree.xml b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/RtuDataDealTree.xml
index 755a377..60cddef 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/RtuDataDealTree.xml
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/RtuDataDealTree.xml
@@ -18,7 +18,7 @@
 							<task id="TkDealAlarmStatus" name="鎺у埗鍣ㄦ姤璀︿笌鐘舵�佸強鍚戦拤閽夊彂閫佹姤璀︿俊鎭�" enable="true" class="com.dy.rtuMw.server.rtuData.p206V1.TkDealAlarmStatus">
 								<task id="TkDealVirCardState" name="铏氭嫙鍗″崰鐢ㄧ姸鎬佹仮澶�" enable="true" class="com.dy.rtuMw.server.rtuData.p206V1.TkDealVirCardState" />
 							</task>
-							<task id="TkDealOnHourReport" name="鎺у埗鍣ㄨ嚜鎶ユ暟鎹紙瀹氱偣鎶ワ級(鍔熻兘鐮丆0)" enable="true" class="com.dy.rtuMw.server.rtuData.p206V1.TkDealOnHourReport" />
+							<task id="TkDealOnHourReport" name="鎺у埗鍣ㄨ嚜鎶ユ暟鎹紙鏁寸偣鎶ワ級(鍔熻兘鐮丆0)" enable="true" class="com.dy.rtuMw.server.rtuData.p206V1.TkDealOnHourReport" />
 							<task id="TkDealWorkReport" name="鎺у埗鍣ㄩ榾寮�宸ヤ綔涓婃姤(鍔熻兘鐮�84)" enable="true" class="com.dy.rtuMw.server.rtuData.p206V1.TkDealWorkReport" />
 							<task id="TkDealOpenValveReport" name="鎺у埗鍣ㄥ紑闃�涓婃姤(鍔熻兘鐮�83)" enable="true" class="com.dy.rtuMw.server.rtuData.p206V1.TkDealOpenValveReport" />
 							<task id="TkDealCloseValveReport" name="鎺у埗鍣ㄥ叧闃�涓婃姤(鍔熻兘鐮�83)" enable="true" class="com.dy.rtuMw.server.rtuData.p206V1.TkDealCloseValveReport" />
@@ -46,7 +46,7 @@
 								<task id="TkDealAlarmStatusV2" name="鎺у埗鍣ㄦ姤璀︿笌鐘舵�佸強鍚戦拤閽夊彂閫佹姤璀︿俊鎭�" enable="true" class="com.dy.rtuMw.server.rtuData.p206V2.TkDealAlarmStatusV2">
 									<task id="TkDealVirCardStateV2" name="铏氭嫙鍗″崰鐢ㄧ姸鎬佹仮澶�" enable="true" class="com.dy.rtuMw.server.rtuData.p206V2.TkDealVirCardStateV2" />
 								</task>
-								<task id="TkDealOnHourReportV2" name="鎺у埗鍣ㄨ嚜鎶ユ暟鎹紙瀹氱偣鎶ワ級(鍔熻兘鐮丆0)" enable="true" class="com.dy.rtuMw.server.rtuData.p206V2.TkDealOnHourReportV2" />
+								<task id="TkDealOnHourReportV2" name="鎺у埗鍣ㄨ嚜鎶ユ暟鎹紙鏁寸偣鎶ワ級(鍔熻兘鐮丆0)" enable="true" class="com.dy.rtuMw.server.rtuData.p206V2.TkDealOnHourReportV2" />
 								<task id="TkDealWorkReportV2" name="鎺у埗鍣ㄩ榾寮�宸ヤ綔涓婃姤(鍔熻兘鐮�84)" enable="true" class="com.dy.rtuMw.server.rtuData.p206V2.TkDealWorkReportV2" />
 								<task id="TkDealOpenValveReportV2" name="鎺у埗鍣ㄥ紑闃�涓婃姤(鍔熻兘鐮�83)" enable="true" class="com.dy.rtuMw.server.rtuData.p206V2.TkDealOpenValveReportV2" />
 								<task id="TkDealCloseValveReportV2" name="鎺у埗鍣ㄥ叧闃�涓婃姤(鍔熻兘鐮�83)" enable="true" class="com.dy.rtuMw.server.rtuData.p206V2.TkDealCloseValveReportV2" />
@@ -71,9 +71,11 @@
 					<task id="TkDealControllerNoTrampV202404" name="闈炴祦娴�匯TU" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkDealControllerNoTrampV202404">
 						<!-- 璇嗗埆闈炲懡浠ゅ簲绛斾笂琛屾暟鎹� -->
 						<task id="TkFindReportV202404" name="璇嗗埆闈炲懡浠ゅ簲绛斾笂琛屾暟鎹�" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkFindReportV202404">
-							<task id="TkDealAlarmStatusV202404" name="鎺у埗鍣ㄦ姤璀︿笌鐘舵��" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkDealAlarmStatusV202404" />
+							<task id="TkDealAlarmStatusV202404" name="鎺у埗鍣ㄦ姤璀︿笌鐘舵�佸強鍚戦拤閽夊彂閫佹姤璀︿俊鎭�" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkDealAlarmStatusV202404">
+								<task id="TkDealVirCardStateV202404" name="铏氭嫙鍗″崰鐢ㄧ姸鎬佹仮澶�" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkDealVirCardStateV202404" />
+							</task>
 							<task id="TkDealWorkingReportV202404" name="鎺у埗鍣ㄥ伐浣滄姤(鍔熻兘鐮�80)" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkDealWorkingReportV202404" />
-							<task id="TkDealTimingReportV202404" name="鎺у埗鍣ㄥ畾鏃朵笂鎶�(鍔熻兘鐮�83)" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkDealTimingReportV202404" />
+							<task id="TkDealTimingReportV202404" name="鎺у埗鍣ㄥ畾鏃讹紙涓�澶╀竴娆★級涓婃姤(鍔熻兘鐮�83)" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkDealTimingReportV202404" />
 							<task id="TkDealOpenValveReportV202404" name="鎺у埗鍣ㄥ紑闃�涓婃姤(鍔熻兘鐮�84)" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkDealOpenValveReportV202404" />
 							<task id="TkDealCloseValveReportV202404" name="鎺у埗鍣ㄥ叧闃�涓婃姤(鍔熻兘鐮�85)" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkDealCloseValveReportV202404" />
 						</task>

--
Gitblit v1.8.0