From 710c6a4d568237016a70b74aa3769b89e336725c Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期二, 13 五月 2025 15:48:21 +0800
Subject: [PATCH] 1、实现功能码92、93命令web后端接口定义与逻辑代码实现; 2、修改原来功能逻辑实现的逻辑,增加回调; 3、表阀一体机协议命令结果数据库存储补充实现。

---
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd93_A3Vo.java                         |   78 +++++
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealCloseValveReportV202404.java   |    5 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/common/ComCtrl.java                         |    7 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd5C/CdCtrl.java                |    5 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd5B/CdCtrl.java                |    6 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd93/CdSv.java                  |   54 +++
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd22/CdCtrl.java                |    6 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealOpenValveReportV202404.java    |    3 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd55/CdCtrl.java                |    7 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd56/CdCtrl.java                |    6 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd99/CdCtrl.java                |    6 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/global/GlParse.java                        |    4 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd16/CdCtrl.java                |    7 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd68/CdCtrl.java                |    6 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd98/CdCtrl.java                |    6 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd92_A2Vo.java                         |   47 +++
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd15/CdCtrl.java                |    8 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd65/CdCtrl.java                |    6 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd93/CdDto.java                 |   18 +
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd92/CdParam.java               |   25 +
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealOpenValveReport.java                |    1 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd97/CdCtrl.java                |    6 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd93/CdParam.java               |   21 +
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd31/CdCtrl.java                |    5 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd92/CdSv.java                  |   57 +++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeVirtualCardMapper.java                                     |    4 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/common/ComSv.java                           |   48 +++
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd50/CdCtrl.java                |    8 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd92/CdCtrl.java                |  171 +++++++++++
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd93/CdCtrl.java                |  151 ++++++++++
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd30/CdCtrl.java                |    6 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkRtuDealCommandResponseV202404.java |   40 +
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd92/CdDto.java                 |   19 +
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/ComTransCtrl.java                           |    5 
 34 files changed, 777 insertions(+), 75 deletions(-)

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 a2df974..80e7d3f 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
@@ -346,7 +346,7 @@
         cdData.eleTotalAmount = ByteUtil.BCD2Long_LE(bs, index, index + 4)/100.0D ;
 
         index += 5 ;
-        cdData.moneyRemain = ByteUtil.BCD2Long_LE(bs, index, index + 4)/100.0D ;
+        cdData.moneyRemain = ByteUtil.BCD2Long_LE(bs, index, index + 4)/10000.0D ;
 
         index += 5 ;
         cdData.waterRemain = ByteUtil.BCD2Long_LE(bs, index, index + 4)/100.0D ;
@@ -358,7 +358,7 @@
         cdData.thisWater = ByteUtil.BCD2Long_LE(bs, index, index + 3)/100.0D ;
 
         index += 4 ;
-        cdData.thisMoney = ByteUtil.BCD2Long_LE(bs, index, index + 3)/100.0D ;
+        cdData.thisMoney = ByteUtil.BCD2Long_LE(bs, index, index + 3)/10000.0D ;
 
         index += 4 ;
         cdData.thisDuration = ByteUtil.BCD2Int_LE(bs, index, index + 1) ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd92_A2Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd92_A2Vo.java
index 3b8f6e2..4e4977c 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd92_A2Vo.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd92_A2Vo.java
@@ -1,12 +1,13 @@
 package com.dy.common.mw.protocol.p206V202404.upVos;
 
+import com.dy.common.mw.protocol.UpComResVo;
 import com.dy.common.mw.protocol.p206V202404.CodeV202404;
 import com.dy.common.mw.protocol.p206V202404.CommonV202404;
 import lombok.Data;
 
 //骞冲彴/APP杩滅▼鍏抽棴姘存车/闃�闂�
 @Data
-public class DataCd92_A2Vo {
+public class DataCd92_A2Vo implements UpComResVo {
 
 	public String controllerType;//鎺у埗鍣ㄧ被鍨�
 	public Integer projectNo ;//椤圭洰缂栧彿
@@ -52,4 +53,48 @@
 		return sb.toString() ;
 	}
 
+	public String toStr(boolean showBase){
+		StringBuffer sb = new StringBuffer() ;
+		if(showBase){
+			sb.append(comName + " : \n") ;
+			sb.append("鎺у埗鍣ㄧ被鍨� : ") ;
+			sb.append(CommonV202404.ctrlDevType(controllerType)) ;
+			sb.append("\n") ;
+			sb.append("椤圭洰缂栧彿 : ") ;
+			sb.append(projectNo == null?"鏈煡":projectNo) ;
+			sb.append("\n") ;
+		}
+		sb.append("IC鍗$紪鍙� : ") ;
+		sb.append(icCardNo == null?"鏈煡":icCardNo) ;
+		sb.append("\n") ;
+		sb.append("璁㈠崟鍙� : ") ;
+		sb.append(orderNo == null?"鏈煡":orderNo) ;
+		sb.append("\n") ;
+		sb.append("寮�娉�/闃�鏃堕棿 : ") ;
+		sb.append(opDt == null?"鏈煡":opDt) ;
+		sb.append("\n") ;
+		sb.append("寮�鍚车/闃�绫诲瀷 : ") ;
+		sb.append(opType == null?"鏈煡":(opType.byteValue() == 0x01 ? "骞冲彴":"鐢ㄦ埛")) ;
+		sb.append("\n") ;
+		sb.append("寮�鍚车/闃�缁撴灉 : ") ;
+		sb.append(opResult == null?"鏈煡":(opResult.byteValue() == 0x01 ? "鎴愬姛":"澶辫触")) ;
+		sb.append("\n") ;
+		return sb.toString() ;
+	}
+
+
+	public String comLog(){
+		StringBuilder sb = new StringBuilder() ;
+		sb.append("杩滅▼寮�闃�鍛戒护鍥炲:\n");
+		sb.append(opResult == null?"鏈煡":(opResult.byteValue() == 0x01 ? "鎴愬姛":"澶辫触"));
+		sb.append("\n");
+
+		return sb.toString() ;
+	}
+
+	@Override
+	public String comLog(String code) {
+		return null;
+	}
+
 }
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd93_A3Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd93_A3Vo.java
index 6008b68..0324750 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd93_A3Vo.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd93_A3Vo.java
@@ -1,5 +1,6 @@
 package com.dy.common.mw.protocol.p206V202404.upVos;
 
+import com.dy.common.mw.protocol.UpComResVo;
 import com.dy.common.mw.protocol.p206V202404.CodeV202404;
 import com.dy.common.mw.protocol.p206V202404.CommonV202404;
 import lombok.Data;
@@ -8,7 +9,7 @@
 //骞冲彴/APP杩滅▼鍏抽棴姘存车/闃�闂�   +  鍒峰崱鍏虫车/闃�涓婃姤
 @Data
 @EqualsAndHashCode(callSuper=false)
-public class DataCd93_A3Vo extends AlarmVo {
+public class DataCd93_A3Vo extends AlarmVo implements UpComResVo {
 
 	public String controllerType;//鎺у埗鍣ㄧ被鍨�
 	public Integer projectNo ;//椤圭洰缂栧彿
@@ -87,10 +88,83 @@
 		sb.append("      鏈浣跨敤閲戦 : ") ;
 		sb.append(thisMoney == null?"鏈煡":thisMoney) ;
 		sb.append("\n") ;
-		sb.append("      鏈浣跨敤鏃堕棿闀� : ") ;
+		sb.append("      鏈浣跨敤鏃堕暱 : ") ;
 		sb.append(thisDuration == null?"鏈煡": thisDuration) ;
 		sb.append("\n") ;
 		return sb.toString() + super.toString() ;
 	}
 
+	public String toStr(boolean showBase){
+		StringBuffer sb = new StringBuffer() ;
+		if(showBase){
+			sb.append(comName + " : \n") ;
+			sb.append("鎺у埗鍣ㄧ被鍨� : ") ;
+			sb.append(CommonV202404.ctrlDevType(controllerType)) ;
+			sb.append("\n") ;
+			sb.append("椤圭洰缂栧彿 : ") ;
+			sb.append(projectNo == null?"鏈煡":projectNo) ;
+			sb.append("\n") ;
+		}
+		sb.append("鍏虫车/闃�绫诲瀷 : ") ;
+		sb.append(clType == null?"鏈煡":(clType.byteValue() == 0x00 ? "鍒峰崱":(clType.byteValue() == 0x01 ? "骞冲彴":(clType.byteValue() == 0x02 ? "APP":(clType.byteValue() == 0x03 ? "闈炴硶鍗�":(clType.byteValue() == 0x04 ? "姘磋〃寮傚父":(clType.byteValue() == 0x05 ? "鐢佃〃寮傚父":(clType.byteValue() == 0x06 ? "鍓╀綑姘撮噺涓嶈冻":(clType.byteValue() == 0x07 ? "鍓╀綑閲戦涓嶈冻":(clType.byteValue() == 0x08 ? "鏃犳祦閲�":(clType.byteValue() == 0x09 ? "鎺夌數鍐嶄笂鐢�":"鏈煡"))))))))))) ;
+		sb.append("\n") ;
+		sb.append("鍏冲惎娉�/闃�缁撴灉 : ") ;
+		sb.append(clResult == null?"鏈煡":(clResult.byteValue() == 0x01 ? "鎴愬姛":"澶辫触")) ;
+		sb.append("\n") ;
+		sb.append("IC鍗″湴鍧� : ") ;
+		sb.append(icCardAddr == null?"鏈煡":icCardAddr) ;
+		sb.append("\n") ;
+		sb.append("IC鍗$紪鍙� : ") ;
+		sb.append(icCardNo == null?"鏈煡":icCardNo) ;
+		sb.append("\n") ;
+		sb.append("璁㈠崟鍙� : ") ;
+		sb.append(orderNo == null?"鏈煡":orderNo) ;
+		sb.append("\n") ;
+		sb.append("寮�濮嬫椂闂� : ") ;
+		sb.append(startDt == null?"鏈煡":startDt) ;
+		sb.append("\n") ;
+		sb.append("缁撴潫鏃堕棿 : ") ;
+		sb.append(endDt == null?"鏈煡":endDt) ;
+		sb.append("\n") ;
+		sb.append("姘磋〃绱娴侀噺 : ") ;
+		sb.append(waterTotalAmount == null?"鏈煡":waterTotalAmount) ;
+		sb.append("\n") ;
+		sb.append("鐢佃〃绱鐢甸噺 : ") ;
+		sb.append(eleTotalAmount == null?"鏈煡":eleTotalAmount) ;
+		sb.append("\n") ;
+		sb.append("鐢ㄦ埛鍓╀綑閲戦 : ") ;
+		sb.append(moneyRemain == null?"鏈煡":moneyRemain) ;
+		sb.append("\n") ;
+		sb.append("鐢ㄦ埛鍓╀綑姘撮噺 : ") ;
+		sb.append(waterRemain == null?"鏈煡":waterRemain) ;
+		sb.append("\n") ;
+		sb.append("鏈浣跨敤鐢甸噺 : ") ;
+		sb.append(thisEle == null?"鏈煡":thisEle) ;
+		sb.append("\n") ;
+		sb.append("鏈浣跨敤姘撮噺 : ") ;
+		sb.append(thisWater == null?"鏈煡":thisWater) ;
+		sb.append("\n") ;
+		sb.append("鏈浣跨敤閲戦 : ") ;
+		sb.append(thisMoney == null?"鏈煡":thisMoney) ;
+		sb.append("\n") ;
+		sb.append("鏈浣跨敤鏃堕暱 : ") ;
+		sb.append(thisDuration == null?"鏈煡": thisDuration) ;
+		sb.append("\n") ;
+		return sb.toString() + super.toString() ;
+	}
+
+
+	public String comLog(){
+		StringBuilder sb = new StringBuilder() ;
+		sb.append("杩滅▼鍏抽榾鍛戒护鍥炲:\n");
+		sb.append(clResult == null?"鏈煡":(clResult.byteValue() == 0x01 ? "鎴愬姛":"澶辫触"));
+		sb.append("\n");
+
+		return sb.toString() ;
+	}
+
+	@Override
+	public String comLog(String code) {
+		return null;
+	}
 }
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeVirtualCardMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeVirtualCardMapper.java
index 0d90840..c4f0df8 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeVirtualCardMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeVirtualCardMapper.java
@@ -49,8 +49,8 @@
 
     /**
      * 鏍规嵁铏氭嫙鍗D鑾峰彇铏氭嫙鍗″璞�
-     * @param vcId
-     * @return
+     * @param vcId 铏氭嫙鍗D
+     * @return 铏氭嫙鍗″璞�
      */
     VoVirtualCard getVcById(@Param("vcId") Long vcId);
 
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealOpenValveReport.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealOpenValveReport.java
index 464894c..098039a 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealOpenValveReport.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealOpenValveReport.java
@@ -241,7 +241,6 @@
         poLast.intakeId = controller==null?null:controller.getIntakeId();
         poLast.rtuAddr = rtuAddr;
         poLast.updateFrom(dV1, dataCd83OpenVo, clearLastCloseValve);
-
         if(poHistory != null){
             poHistory.clientId = clientVo==null?null:clientVo.getId() ;
             poHistory.clientName = clientVo==null?null:clientVo.getName() ;
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealCloseValveReportV202404.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealCloseValveReportV202404.java
index e983270..273c54a 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealCloseValveReportV202404.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealCloseValveReportV202404.java
@@ -21,6 +21,9 @@
  * @LastEditTime 2024-06-20 13:48
  * @Description
  */
+/**
+ * 澶勭悊鎺у埗鍣ㄥ叧闃�涓婃姤
+ */
 public class TkDealCloseValveReportV202404 extends TaskSurpport {
     private static final Logger log = LogManager.getLogger(TkDealCloseValveReportV202404.class.getName());
 
@@ -29,7 +32,6 @@
 
     /**
      * 鎵ц鑺傜偣浠诲姟锛氬叧闃�涓婃姤
-     *
      * @param data 闇�瑕佸鐞嗙殑鏁版嵁
      */
     @Override
@@ -310,5 +312,4 @@
             poHistory.updateFrom(dV202404, dataCd85Vo, false);
         }
     }
-
 }
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealOpenValveReportV202404.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealOpenValveReportV202404.java
index e13c058..e32eac9 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealOpenValveReportV202404.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealOpenValveReportV202404.java
@@ -19,7 +19,8 @@
  * @author ZhuBaoMin
  * @date 2024-06-17 9:36
  * @LastEditTime 2024-06-17 9:36
- * @Description 鎺у埗鍣ㄥ紑闃�涓婃姤(鍔熻兘鐮�84)
+ * @Description
+ * 澶勭悊鎺у埗鍣ㄥ紑闃�涓婃姤
  */
 public class TkDealOpenValveReportV202404 extends TaskSurpport {
     private static final Logger log = LogManager.getLogger(TkDealTimingReportV202404.class.getName());
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkRtuDealCommandResponseV202404.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkRtuDealCommandResponseV202404.java
index d73dff8..f517210 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkRtuDealCommandResponseV202404.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkRtuDealCommandResponseV202404.java
@@ -1,8 +1,12 @@
 package com.dy.rtuMw.server.rtuData.p206V202404;
 
 import com.dy.common.mw.protocol.Data;
+import com.dy.common.mw.protocol.UpComResVo;
 import com.dy.common.mw.protocol.p206V202404.DataV202404;
+import com.dy.common.util.DateTime;
+import com.dy.pipIrrGlobal.pojoRm.RmCommandHistory;
 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;
 
@@ -29,18 +33,32 @@
         if(protocolData != null){
             DataV202404 dV202404 = (DataV202404)protocolData ;
             if(dV202404 != null) {
-//            if (dV1 != null && dV1.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, dV1.dataCdC0Vo) ;
-//                    this.saveHistory(sv, controller, d.getRtuAddr(),dV1, dV1.dataCdC0Vo) ;
-//                }catch (Exception e){
-//                    log.error("淇濆瓨鎺у埗鍣ㄨ嚜鎶ユ暟鎹椂鍙戠敓寮傚父", e);
-//                }
-//            }
+                Object[] objs = this.getTaskResults(TkPreGenObjsV202404.taskId);
+                DbSv sv = (DbSv) objs[0];
+                //PrController controller = (PrController) objs[1];
+                try{
+                    RmCommandHistory po = sv.getCommandLog(d.commandId) ;
+                    if(po != null){
+                        po = this.updateCommandLogPo(po, d.code, dV202404, dV202404.subData) ;
+                        sv.updateCommandLog(po);
+                    }else{
+                        log.error("鏈緱鍒板懡浠ゆ棩蹇楋紙" + d.getCommandId() + ")");
+                    }
+                }catch (Exception e){
+                    log.error("淇濆瓨鎺у埗鍣ㄨ嚜鎶ユ暟鎹椂鍙戠敓寮傚父", e);
+                }
             }
         }
     }
+
+    public RmCommandHistory updateCommandLogPo(RmCommandHistory po, String code, DataV202404 dV202404, Object obj) throws Exception{
+        po.setResultTime(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV202404.dt==null?DateTime.yyyy_MM_dd_HH_mm_ss():dV202404.dt));
+        if(obj instanceof UpComResVo){
+            UpComResVo vo = (UpComResVo)obj ;
+            po.setResult((byte)1);
+            po.setResultText(vo.comLog()!=null?vo.comLog():vo.comLog(code));
+            log.info("----------------------------------\n" + (vo.comLog()!=null?vo.comLog():vo.comLog(code)));
+        }
+        return po ;
+    }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/ComTransCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/ComTransCtrl.java
index a85d0fd..1ee1493 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/ComTransCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/ComTransCtrl.java
@@ -3,6 +3,7 @@
 import com.alibaba.fastjson2.JSONObject;
 import com.dy.common.aop.SsoAop;
 import com.dy.common.mw.protocol.Command;
+import com.dy.common.util.Callback;
 import com.dy.common.util.NumUtil;
 import com.dy.common.webUtil.BaseResponse;
 import com.dy.common.webUtil.BaseResponseUtils;
@@ -73,7 +74,7 @@
                         res = super.doSend(sv, com) ;
                         if(res == null) {
                             //鍙戦�佸懡浠ゅ悗
-                            res = super.after(dto.comCode);
+                            res = super.after(dto.comCode, null);
                         }
                     }catch (Exception e){
                         res = BaseResponseUtils.buildFail("鏈嶅姟绔瀯閫犲苟鍚戦�氫俊涓棿浠跺彂閫佽姹傛椂寮傚父" + (e.getMessage() == null?"":e.getMessage())) ;
@@ -111,7 +112,7 @@
     }
 
     @Override
-    protected String createRtnMsg(String code, JSONObject resultData){
+    protected String dealComResult(String code, JSONObject resultData, Callback callback){
         String msg;
         if(resultData != null){
             JSONObject codeData = resultData.getJSONObject("data") ;
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/common/ComCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/common/ComCtrl.java
index b80ae41..45b05fe 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/common/ComCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/common/ComCtrl.java
@@ -2,6 +2,7 @@
 
 import com.alibaba.fastjson2.JSONObject;
 import com.dy.common.mw.protocol.Command;
+import com.dy.common.util.Callback;
 import com.dy.common.util.IDLongGenerator;
 import com.dy.common.webUtil.BaseResponse;
 import com.dy.common.webUtil.BaseResponseUtils;
@@ -155,11 +156,11 @@
      * 鍙戦�佸懡浠ゅ悗
      * @return
      */
-    public BaseResponse<Object> after(String comCode) {
+    public BaseResponse<Object> after(String comCode, Callback callback) {
         try{
             //绛夊緟閫氫俊涓棿浠堕�氱煡鎺у埗鍣ㄦ墽琛屽懡浠や笂琛屾暟鎹紙鍛戒护缁撴灉锛�
             JSONObject resultData = feature.get(waitMwRtnResultTimeout, TimeUnit.SECONDS);
-            return BaseResponseUtils.buildSuccess(this.createRtnMsg(comCode, resultData));
+            return BaseResponseUtils.buildSuccess(this.dealComResult(comCode, resultData, callback));
         }catch (Exception e){
             return BaseResponseUtils.buildFail("绛夊緟閫氫俊涓棿浠堕�氱煡鍛戒护缁撴灉瓒呮椂");
         }
@@ -189,5 +190,5 @@
     /**
      * 鐢熸垚鍛戒护杩斿洖淇℃伅
      */
-    protected abstract String createRtnMsg(String code, JSONObject resultData);
+    protected abstract String dealComResult(String code, JSONObject resultData, Callback callback);
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/common/ComSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/common/ComSv.java
index 8fc35f5..c9fc53e 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/common/ComSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/common/ComSv.java
@@ -1,12 +1,19 @@
 package com.dy.pipIrrRemote.monitor.common;
 
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
 import com.dy.pipIrrGlobal.command.CommandSv;
+import com.dy.pipIrrGlobal.daoPr.PrCommonIntakesMapper;
 import com.dy.pipIrrGlobal.daoPr.PrControllerMapper;
 import com.dy.pipIrrGlobal.daoRm.RmCommandHistoryMapper;
+import com.dy.pipIrrGlobal.pojoPr.PrCommonIntakes;
 import com.dy.pipIrrGlobal.pojoPr.PrController;
 import com.dy.pipIrrGlobal.pojoRm.RmCommandHistory;
+import com.dy.pipIrrGlobal.voRm.VoUnclosedParam;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
 
 /**
  * @Author: liurunyu
@@ -19,6 +26,8 @@
     protected PrControllerMapper prControllerDao ;
     @Autowired
     protected RmCommandHistoryMapper rmCommandHistoryDao ;
+    @Autowired
+    private PrCommonIntakesMapper prCommonIntakesDao;
 
     public PrController getRtu(Long intakeId){
         return this.getRtu(prControllerDao, intakeId);
@@ -45,4 +54,43 @@
                                              Long operator) {
         return this.saveComHistoryPo(rmCommandHistoryDao, comId, protocol, commandCode, commandName, intakeId, rtuAddr, param, operator) ;
     }
+
+
+    /**
+     * 娣诲姞甯哥敤鍙栨按鍙f垨鏇存柊浣跨敤淇℃伅
+     * @param operatorId
+     * @param intakeId
+     * @return
+     */
+    public PrCommonIntakes addOrUpdateOftenUseIntake(Long operatorId, Long intakeId) {
+        PrCommonIntakes po = prCommonIntakesDao.selectByOperatorAndIntake(operatorId, intakeId);
+        if(po == null) {
+            po = new PrCommonIntakes();
+            po.setOperatorId(operatorId);
+            po.setIntakeId(intakeId);
+            po.setLastUsedTime(new Date());
+            po.setUsageCount(1);
+            prCommonIntakesDao.insert(po);
+        }else{
+            po.setLastUsedTime(new Date());
+            po.setUsageCount(po.getUsageCount() + 1);
+            prCommonIntakesDao.updateByPrimaryKeySelective(po);
+        }
+        return po ;
+    }
+
+
+    /**
+     * 鏍规嵁鍙栨按鍙D鑾峰彇璇ュ彇姘村彛鏈叧闃�鍙傛暟锛屽钩鍙伴�夋嫨鍙栨按鍙e叧闃�浣跨敤
+     * @param intakeId
+     * @return
+     */
+    public VoUnclosedParam selectUncloseParam(Long intakeId, String rtuAddr) {
+        JSONArray jsonArr = new JSONArray();
+        JSONObject jsonObj = new JSONObject();
+        jsonObj.put("rtuAddr", rtuAddr);
+        jsonObj.put("isOnLine", true);
+        jsonArr.add(jsonObj);
+        return rmCommandHistoryDao.getUncloseParam(jsonArr.toJSONString(), intakeId);
+    }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd15/CdCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd15/CdCtrl.java
index 5a9e5c6..5fe92ef 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd15/CdCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd15/CdCtrl.java
@@ -4,8 +4,8 @@
 import com.alibaba.fastjson2.JSONObject;
 import com.dy.common.aop.SsoAop;
 import com.dy.common.mw.protocol.Command;
-import com.dy.common.mw.protocol.p206V202404.CodeV202404;
 import com.dy.common.mw.protocol.p206V202404.upVos.DataCdXyVo;
+import com.dy.common.util.Callback;
 import com.dy.common.util.NumUtil;
 import com.dy.common.webUtil.BaseResponse;
 import com.dy.common.webUtil.BaseResponseUtils;
@@ -64,7 +64,7 @@
                 //鍙戦�佸懡浠ゅ墠-3锛氫繚瀛樺懡浠ゆ棩蹇�
                 SeClientCard icPo = sv.selectClientIcCardById(Long.parseLong(dto.icCardId.trim())) ;
                 if(icPo == null){
-                    return BaseResponseUtils.buildError("鏈嶅姟绔嚭閿欙紝鏈緱鍒板啘鎴稩C鍗�") ;
+                    return BaseResponseUtils.buildErrorMsg("鏈嶅姟绔嚭閿欙紝鏈緱鍒板啘鎴稩C鍗�") ;
                 }
                 CdParam comParam = CdParam.builder().commandCode(ComCode).projectNo(projectNo).controllerType(controllerType)
                         .icCardAddr(icPo.getCardaddr())//IC鍗″湴鍧�(8浣嶆暟瀛楁垨瀛楁瘝)
@@ -86,7 +86,7 @@
                         res = super.doSend(sv, com);
                         if (res == null) {
                             //鍙戦�佸懡浠ゅ悗
-                            res = super.after(ComCode);
+                            res = super.after(ComCode, null);
                         }
                     } catch (Exception e) {
                         res = BaseResponseUtils.buildFail("鏈嶅姟绔瀯閫犲苟鍚戦�氫俊涓棿浠跺彂閫佽姹傛椂寮傚父" + (e.getMessage() == null ? "" : e.getMessage()));
@@ -121,7 +121,7 @@
     }
 
     @Override
-    protected String createRtnMsg(String code, JSONObject resultData){
+    protected String dealComResult(String code, JSONObject resultData, Callback callback){
         String msg;
         if(resultData != null){
             JSONObject codeData = resultData.getJSONObject("data") ;
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd16/CdCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd16/CdCtrl.java
index e2a9622..8fb9122 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd16/CdCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd16/CdCtrl.java
@@ -4,8 +4,8 @@
 import com.alibaba.fastjson2.JSONObject;
 import com.dy.common.aop.SsoAop;
 import com.dy.common.mw.protocol.Command;
-import com.dy.common.mw.protocol.p206V202404.CodeV202404;
 import com.dy.common.mw.protocol.p206V202404.upVos.DataCdXyVo;
+import com.dy.common.util.Callback;
 import com.dy.common.webUtil.BaseResponse;
 import com.dy.common.webUtil.BaseResponseUtils;
 import com.dy.pipIrrRemote.common.dto.DtoBase;
@@ -14,7 +14,6 @@
 import jakarta.validation.Valid;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.RandomStringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Scope;
 import org.springframework.http.MediaType;
@@ -77,7 +76,7 @@
                         res = super.doSend(sv, com);
                         if (res == null) {
                             //鍙戦�佸懡浠ゅ悗
-                            res = super.after(ComCode);
+                            res = super.after(ComCode, null);
                         }
                     } catch (Exception e) {
                         res = BaseResponseUtils.buildFail("鏈嶅姟绔瀯閫犲苟鍚戦�氫俊涓棿浠跺彂閫佽姹傛椂寮傚父" + (e.getMessage() == null ? "" : e.getMessage()));
@@ -112,7 +111,7 @@
     }
 
     @Override
-    protected String createRtnMsg(String code, JSONObject resultData){
+    protected String dealComResult(String code, JSONObject resultData, Callback callback){
         String msg;
         if(resultData != null){
             JSONObject codeData = resultData.getJSONObject("data") ;
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd22/CdCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd22/CdCtrl.java
index 2dfae70..e1a544e 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd22/CdCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd22/CdCtrl.java
@@ -4,8 +4,8 @@
 import com.alibaba.fastjson2.JSONObject;
 import com.dy.common.aop.SsoAop;
 import com.dy.common.mw.protocol.Command;
-import com.dy.common.mw.protocol.p206V202404.CodeV202404;
 import com.dy.common.mw.protocol.p206V202404.upVos.DataCdXyVo;
+import com.dy.common.util.Callback;
 import com.dy.common.webUtil.BaseResponse;
 import com.dy.common.webUtil.BaseResponseUtils;
 import com.dy.pipIrrRemote.common.dto.DtoBase;
@@ -76,7 +76,7 @@
                         res = super.doSend(sv, com);
                         if (res == null) {
                             //鍙戦�佸懡浠ゅ悗
-                            res = super.after(ComCode);
+                            res = super.after(ComCode, null);
                         }
                     } catch (Exception e) {
                         res = BaseResponseUtils.buildFail("鏈嶅姟绔瀯閫犲苟鍚戦�氫俊涓棿浠跺彂閫佽姹傛椂寮傚父" + (e.getMessage() == null ? "" : e.getMessage()));
@@ -111,7 +111,7 @@
     }
 
     @Override
-    protected String createRtnMsg(String code, JSONObject resultData){
+    protected String dealComResult(String code, JSONObject resultData, Callback callback){
         String msg;
         if(resultData != null){
             JSONObject codeData = resultData.getJSONObject("data") ;
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd30/CdCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd30/CdCtrl.java
index f125356..3a32b0f 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd30/CdCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd30/CdCtrl.java
@@ -4,8 +4,8 @@
 import com.alibaba.fastjson2.JSONObject;
 import com.dy.common.aop.SsoAop;
 import com.dy.common.mw.protocol.Command;
-import com.dy.common.mw.protocol.p206V202404.CodeV202404;
 import com.dy.common.mw.protocol.p206V202404.upVos.DataCdXyVo;
+import com.dy.common.util.Callback;
 import com.dy.common.webUtil.BaseResponse;
 import com.dy.common.webUtil.BaseResponseUtils;
 import com.dy.pipIrrRemote.common.dto.DtoBase;
@@ -73,7 +73,7 @@
                         res = super.doSend(sv, com);
                         if (res == null) {
                             //鍙戦�佸懡浠ゅ悗
-                            res = super.after(ComCode);
+                            res = super.after(ComCode, null);
                         }
                     } catch (Exception e) {
                         res = BaseResponseUtils.buildFail("鏈嶅姟绔瀯閫犲苟鍚戦�氫俊涓棿浠跺彂閫佽姹傛椂寮傚父" + (e.getMessage() == null ? "" : e.getMessage()));
@@ -93,7 +93,7 @@
     }
 
     @Override
-    protected String createRtnMsg(String code, JSONObject resultData){
+    protected String dealComResult(String code, JSONObject resultData, Callback callback){
         String msg;
         if(resultData != null){
             JSONObject codeData = resultData.getJSONObject("data") ;
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd31/CdCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd31/CdCtrl.java
index 2b595a7..2ed66b1 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd31/CdCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd31/CdCtrl.java
@@ -5,6 +5,7 @@
 import com.dy.common.aop.SsoAop;
 import com.dy.common.mw.protocol.Command;
 import com.dy.common.mw.protocol.p206V202404.upVos.DataCdXyVo;
+import com.dy.common.util.Callback;
 import com.dy.common.webUtil.BaseResponse;
 import com.dy.common.webUtil.BaseResponseUtils;
 import com.dy.pipIrrRemote.common.dto.DtoBase;
@@ -73,7 +74,7 @@
                         res = super.doSend(sv, com);
                         if (res == null) {
                             //鍙戦�佸懡浠ゅ悗
-                            res = super.after(ComCode);
+                            res = super.after(ComCode, null);
                         }
                     } catch (Exception e) {
                         res = BaseResponseUtils.buildFail("鏈嶅姟绔瀯閫犲苟鍚戦�氫俊涓棿浠跺彂閫佽姹傛椂寮傚父" + (e.getMessage() == null ? "" : e.getMessage()));
@@ -93,7 +94,7 @@
     }
 
     @Override
-    protected String createRtnMsg(String code, JSONObject resultData){
+    protected String dealComResult(String code, JSONObject resultData, Callback callback){
         String msg;
         if(resultData != null){
             JSONObject codeData = resultData.getJSONObject("data") ;
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd50/CdCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd50/CdCtrl.java
index ccf1caa..67b2c0a 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd50/CdCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd50/CdCtrl.java
@@ -4,9 +4,8 @@
 import com.alibaba.fastjson2.JSONObject;
 import com.dy.common.aop.SsoAop;
 import com.dy.common.mw.protocol.Command;
-import com.dy.common.mw.protocol.p206V202404.CodeV202404;
 import com.dy.common.mw.protocol.p206V202404.upVos.DataCd50Vo;
-import com.dy.common.mw.protocol.p206V202404.upVos.DataCdXyVo;
+import com.dy.common.util.Callback;
 import com.dy.common.webUtil.BaseResponse;
 import com.dy.common.webUtil.BaseResponseUtils;
 import com.dy.pipIrrRemote.common.dto.DtoBase;
@@ -16,7 +15,6 @@
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Scope;
 import org.springframework.http.MediaType;
 import org.springframework.validation.BindingResult;
@@ -75,7 +73,7 @@
                         res = super.doSend(sv, com);
                         if (res == null) {
                             //鍙戦�佸懡浠ゅ悗
-                            res = super.after(ComCode);
+                            res = super.after(ComCode, null);
                         }
                     } catch (Exception e) {
                         res = BaseResponseUtils.buildFail("鏈嶅姟绔瀯閫犲苟鍚戦�氫俊涓棿浠跺彂閫佽姹傛椂寮傚父" + (e.getMessage() == null ? "" : e.getMessage()));
@@ -95,7 +93,7 @@
     }
 
     @Override
-    protected String createRtnMsg(String code, JSONObject resultData){
+    protected String dealComResult(String code, JSONObject resultData, Callback callback){
         String msg;
         if(resultData != null){
             JSONObject codeData = resultData.getJSONObject("data") ;
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd55/CdCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd55/CdCtrl.java
index 52390fc..08d4a2a 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd55/CdCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd55/CdCtrl.java
@@ -5,9 +5,8 @@
 import com.alibaba.fastjson2.JSONObject;
 import com.dy.common.aop.SsoAop;
 import com.dy.common.mw.protocol.Command;
-import com.dy.common.mw.protocol.p206V202404.CodeV202404;
 import com.dy.common.mw.protocol.p206V202404.upVos.DataCd55Vo;
-import com.dy.common.mw.protocol.p206V202404.upVos.DataCd65Vo;
+import com.dy.common.util.Callback;
 import com.dy.common.webUtil.BaseResponse;
 import com.dy.common.webUtil.BaseResponseUtils;
 import com.dy.pipIrrRemote.common.dto.DtoBase;
@@ -78,7 +77,7 @@
                         res = super.doSend(sv, com);
                         if (res == null) {
                             //鍙戦�佸懡浠ゅ悗
-                            res = super.after(ComCode);
+                            res = super.after(ComCode, null);
                         }
                     } catch (Exception e) {
                         res = BaseResponseUtils.buildFail("鏈嶅姟绔瀯閫犲苟鍚戦�氫俊涓棿浠跺彂閫佽姹傛椂寮傚父" + (e.getMessage() == null ? "" : e.getMessage()));
@@ -98,7 +97,7 @@
     }
 
     @Override
-    protected String createRtnMsg(String code, JSONObject resultData){
+    protected String dealComResult(String code, JSONObject resultData, Callback callback){
         String msg;
         if(resultData != null){
             JSONArray codeData = resultData.getJSONArray("data") ;
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd56/CdCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd56/CdCtrl.java
index 7b989c1..963c623 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd56/CdCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd56/CdCtrl.java
@@ -4,8 +4,8 @@
 import com.alibaba.fastjson2.JSONObject;
 import com.dy.common.aop.SsoAop;
 import com.dy.common.mw.protocol.Command;
-import com.dy.common.mw.protocol.p206V202404.CodeV202404;
 import com.dy.common.mw.protocol.p206V202404.upVos.DataCd56Vo;
+import com.dy.common.util.Callback;
 import com.dy.common.webUtil.BaseResponse;
 import com.dy.common.webUtil.BaseResponseUtils;
 import com.dy.pipIrrRemote.common.dto.DtoBase;
@@ -73,7 +73,7 @@
                         res = super.doSend(sv, com);
                         if (res == null) {
                             //鍙戦�佸懡浠ゅ悗
-                            res = super.after(ComCode);
+                            res = super.after(ComCode, null);
                         }
                     } catch (Exception e) {
                         res = BaseResponseUtils.buildFail("鏈嶅姟绔瀯閫犲苟鍚戦�氫俊涓棿浠跺彂閫佽姹傛椂寮傚父" + (e.getMessage() == null ? "" : e.getMessage()));
@@ -93,7 +93,7 @@
     }
 
     @Override
-    protected String createRtnMsg(String code, JSONObject resultData){
+    protected String dealComResult(String code, JSONObject resultData, Callback callback){
         String msg;
         if(resultData != null){
             JSONObject codeData = resultData.getJSONObject("data") ;
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd5B/CdCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd5B/CdCtrl.java
index a86dea4..a18ba74 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd5B/CdCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd5B/CdCtrl.java
@@ -4,8 +4,8 @@
 import com.alibaba.fastjson2.JSONObject;
 import com.dy.common.aop.SsoAop;
 import com.dy.common.mw.protocol.Command;
-import com.dy.common.mw.protocol.p206V202404.CodeV202404;
 import com.dy.common.mw.protocol.p206V202404.upVos.DataCd80_5BVo;
+import com.dy.common.util.Callback;
 import com.dy.common.webUtil.BaseResponse;
 import com.dy.common.webUtil.BaseResponseUtils;
 import com.dy.pipIrrRemote.common.dto.DtoBase;
@@ -73,7 +73,7 @@
                         res = super.doSend(sv, com);
                         if (res == null) {
                             //鍙戦�佸懡浠ゅ悗
-                            res = super.after(ComCode);
+                            res = super.after(ComCode, null);
                         }
                     } catch (Exception e) {
                         res = BaseResponseUtils.buildFail("鏈嶅姟绔瀯閫犲苟鍚戦�氫俊涓棿浠跺彂閫佽姹傛椂寮傚父" + (e.getMessage() == null ? "" : e.getMessage()));
@@ -93,7 +93,7 @@
     }
 
     @Override
-    protected String createRtnMsg(String code, JSONObject resultData){
+    protected String dealComResult(String code, JSONObject resultData, Callback callback){
         String msg;
         if(resultData != null){
             JSONObject codeData = resultData.getJSONObject("data") ;
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd5C/CdCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd5C/CdCtrl.java
index b96a3cc..a122add 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd5C/CdCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd5C/CdCtrl.java
@@ -5,6 +5,7 @@
 import com.dy.common.aop.SsoAop;
 import com.dy.common.mw.protocol.Command;
 import com.dy.common.mw.protocol.p206V202404.upVos.DataCd5CVo;
+import com.dy.common.util.Callback;
 import com.dy.common.webUtil.BaseResponse;
 import com.dy.common.webUtil.BaseResponseUtils;
 import com.dy.pipIrrRemote.common.dto.DtoBase;
@@ -75,7 +76,7 @@
                         res = super.doSend(sv, com);
                         if (res == null) {
                             //鍙戦�佸懡浠ゅ悗
-                            res = super.after(ComCode);
+                            res = super.after(ComCode, null);
                         }
                     } catch (Exception e) {
                         res = BaseResponseUtils.buildFail("鏈嶅姟绔瀯閫犲苟鍚戦�氫俊涓棿浠跺彂閫佽姹傛椂寮傚父" + (e.getMessage() == null ? "" : e.getMessage()));
@@ -95,7 +96,7 @@
     }
 
     @Override
-    protected String createRtnMsg(String code, JSONObject resultData){
+    protected String dealComResult(String code, JSONObject resultData, Callback callback){
         String msg;
         if(resultData != null){
             JSONObject codeData = resultData.getJSONObject("data") ;
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd65/CdCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd65/CdCtrl.java
index 3b5460e..3e23e74 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd65/CdCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd65/CdCtrl.java
@@ -4,8 +4,8 @@
 import com.alibaba.fastjson2.JSONObject;
 import com.dy.common.aop.SsoAop;
 import com.dy.common.mw.protocol.Command;
-import com.dy.common.mw.protocol.p206V202404.CodeV202404;
 import com.dy.common.mw.protocol.p206V202404.upVos.DataCd65Vo;
+import com.dy.common.util.Callback;
 import com.dy.common.webUtil.BaseResponse;
 import com.dy.common.webUtil.BaseResponseUtils;
 import com.dy.pipIrrRemote.common.dto.DtoBase;
@@ -76,7 +76,7 @@
                         res = super.doSend(sv, com);
                         if (res == null) {
                             //鍙戦�佸懡浠ゅ悗
-                            res = super.after(ComCode);
+                            res = super.after(ComCode, null);
                         }
                     } catch (Exception e) {
                         res = BaseResponseUtils.buildFail("鏈嶅姟绔瀯閫犲苟鍚戦�氫俊涓棿浠跺彂閫佽姹傛椂寮傚父" + (e.getMessage() == null ? "" : e.getMessage()));
@@ -96,7 +96,7 @@
     }
 
     @Override
-    protected String createRtnMsg(String code, JSONObject resultData){
+    protected String dealComResult(String code, JSONObject resultData, Callback callback){
         String msg;
         if(resultData != null){
             JSONObject codeData = resultData.getJSONObject("data") ;
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd68/CdCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd68/CdCtrl.java
index 273ed49..531d0f7 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd68/CdCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd68/CdCtrl.java
@@ -4,8 +4,8 @@
 import com.alibaba.fastjson2.JSONObject;
 import com.dy.common.aop.SsoAop;
 import com.dy.common.mw.protocol.Command;
-import com.dy.common.mw.protocol.p206V202404.CodeV202404;
 import com.dy.common.mw.protocol.p206V202404.upVos.DataCd68Vo;
+import com.dy.common.util.Callback;
 import com.dy.common.webUtil.BaseResponse;
 import com.dy.common.webUtil.BaseResponseUtils;
 import com.dy.pipIrrRemote.common.dto.DtoBase;
@@ -73,7 +73,7 @@
                         res = super.doSend(sv, com);
                         if (res == null) {
                             //鍙戦�佸懡浠ゅ悗
-                            res = super.after(ComCode);
+                            res = super.after(ComCode, null);
                         }
                     } catch (Exception e) {
                         res = BaseResponseUtils.buildFail("鏈嶅姟绔瀯閫犲苟鍚戦�氫俊涓棿浠跺彂閫佽姹傛椂寮傚父" + (e.getMessage() == null ? "" : e.getMessage()));
@@ -93,7 +93,7 @@
     }
 
     @Override
-    protected String createRtnMsg(String code, JSONObject resultData){
+    protected String dealComResult(String code, JSONObject resultData, Callback callback){
         String msg;
         if(resultData != null){
             JSONObject codeData = resultData.getJSONObject("data") ;
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd92/CdCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd92/CdCtrl.java
new file mode 100644
index 0000000..5c62c48
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd92/CdCtrl.java
@@ -0,0 +1,171 @@
+package com.dy.pipIrrRemote.monitor.p202404V201.cd92;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.dy.common.aop.SsoAop;
+import com.dy.common.mw.protocol.Command;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd92_A2Vo;
+import com.dy.common.util.Callback;
+import com.dy.common.webUtil.BaseResponse;
+import com.dy.common.webUtil.BaseResponseUtils;
+import com.dy.pipIrrGlobal.voSe.VoVirtualCard;
+import com.dy.pipIrrRemote.common.dto.DtoBase;
+import com.dy.pipIrrRemote.monitor.common.ComCtrl;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.validation.Valid;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.RandomStringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Scope;
+import org.springframework.http.MediaType;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/5/13 08:33
+ * @Description
+ */
+@Slf4j
+@Tag(name = "杩滅▼鍛戒护", description = "骞冲彴杩滅▼寮�闃�")
+@RestController("cd92Ctrl")
+@RequestMapping(path = "p202404V201/cd92")
+@RequiredArgsConstructor
+@Scope("prototype") //鍥犱负鏈夊璞$被灞炴�э紝鎵�浠ラ噰鐢ㄥ師鍨嬫ā寮忥紝姣忔璇锋眰鏂板缓涓�涓疄渚嬪璞�
+public class CdCtrl extends ComCtrl {
+
+    private static final String RtuSuccessMsg = "鎺у埗鍣ㄦ帴鏀跺苟鎵ц鍛戒护鎴愬姛锛屾棤杩斿洖鏁版嵁";
+
+    private static final String ComCode = "92" ;
+
+    @Autowired
+    private CdSv sv ;
+    /**
+     * 鍚戣澶囷紙鎺у埗鍣級鍙戦�佸懡浠�
+     * @param dto 鍓嶇鍙戞潵鐨勫�煎璞�
+     * @param bindingResult 瀵筪to楠岃瘉鐨勭粨鏋�
+     * @return 杩斿洖鍓嶇
+     */
+    @PostMapping(path = "send", consumes = MediaType.APPLICATION_JSON_VALUE)
+    @SsoAop()
+    public BaseResponse<Object> send(@RequestBody @Valid CdDto dto, BindingResult bindingResult) {
+        BaseResponse<Object> res ;
+        //鍙戦�佸懡浠ゅ墠-1锛氶獙璇�
+        res = super.pre1(sv, ComCode, dto, bindingResult);
+        if(res == null) {
+            //鍙戦�佸懡浠ゅ墠-2锛氳幏寰楁暟鎹�
+            res = super.pre2(sv, ComCode, dto, bindingResult);
+            if (res == null) {
+                if(dto.vtCardId == null || "".equals(dto.vtCardId.trim())){
+                    Long vtId = sv.selectVcIdByIntakeId(dto.getIntakeId()) ;
+                    if(vtId == null) {
+                        return BaseResponseUtils.buildErrorMsg("璇烽�夋嫨涓�寮犺櫄鎷熷崱");
+                    }else{
+                        dto.vtCardId = vtId.toString() ;
+                    }
+                }
+                VoVirtualCard vcPo = sv.selectClientVtCardById(Long.parseLong(dto.vtCardId.trim())) ;
+                if(vcPo == null){
+                    return BaseResponseUtils.buildErrorMsg("鏈嶅姟绔嚭閿欙紝鏈緱鍒板啘鎴疯櫄鎷熷崱") ;
+                }
+                if(vcPo.getInUse().booleanValue()){
+                    return BaseResponseUtils.buildErrorMsg("鍐滄埛璇ヨ櫄鎷熷崱宸茬粡琚崰鐢紝涓嶈兘鍐嶅簲鐢ㄥ叾寮�闃�") ;
+                }
+                if(vcPo.getMoney() <= 0.0){
+                    return BaseResponseUtils.buildErrorMsg("鍐滄埛璇ヨ櫄鎷熷崱涓墿浣欓噾棰濅负0锛屼笉鑳藉啀搴旂敤鍏跺紑闃�") ;
+                }
+                Double waterPrice = sv.selectWaterPrice() ;
+                if(waterPrice == null){
+                    return BaseResponseUtils.buildErrorMsg("鏈嶅姟绔嚭閿欙紝鏈緱鍒版按浠�") ;
+                }
+                CdParam comParam = CdParam.builder().commandCode(ComCode).projectNo(projectNo).controllerType(controllerType)
+                        .icCardNo("" + vcPo.getVcNum())//鐢ㄦ埛鍗″簭鍒楀彿锛�17浣嶆暟瀛楋級锛�6瀛楄妭BCD锛�2瀛楄妭HEX锛�
+                        .waterRemain(0.0)//鐢ㄦ埛鍓╀綑姘撮噺, 涓や釜灏忔暟鐐�, 鍗曚綅m3, 0~99999999.99
+                        .moneyRemain(vcPo.getMoney())//鐢ㄦ埛鍓╀綑姘撮噺, 涓や釜灏忔暟鐐�, 鍗曚綅m3, 0~99999999.99
+                        .waterPrice(waterPrice)//姘撮噺鍗曚环 鍗曚綅:鍏�, 2涓皬鏁扮偣
+                        .elePrice(0.0)//鐢甸噺鍗曚环 鍗曚綅:鍏�, 2涓皬鏁扮偣
+                        .orderNo(RandomStringUtils.randomNumeric(16))//璁㈠崟鍙凤紙16浣嶆暟瀛楋級
+                        .build();
+                //鍙戦�佸懡浠ゅ墠-3锛氫繚瀛樺懡浠ゆ棩蹇�
+                res = super.pre3(sv, dto.getIntakeId(), dto.getOperator(), ComCode, comParam);
+                if (res == null) {
+                    //鍙戦�佸懡浠ゅ墠-4锛氬噯澶嘑eature
+                    super.pre4();
+                    try {
+                        //鍒涘缓澶栭儴鍛戒护锛堝彂缁欐帶鍒跺櫒锛�
+                        Command com = sv.createOuterCommand(ctrlPo.getRtuAddr(), "" + comId, ComCode);
+                        com.rtuResultSendWebUrl = rtuResultSendWebUrl;
+                        com.param = comParam;
+                        //鍙戦�佸懡浠�
+                        res = super.doSend(sv, com);
+                        if (res == null) {
+                            //鍙戦�佸懡浠ゅ悗
+                            res = super.after(ComCode, new Callback() {
+                                @Override
+                                public void call(Object obj) {
+                                    Boolean success = (Boolean) obj;
+                                    if(success){
+                                        // 娣诲姞甯哥敤鍙栨按鍙f垨鏇存柊浣跨敤淇℃伅
+                                        sv.addOrUpdateOftenUseIntake(dto.getOperator(), dto.getIntakeId()) ;
+                                        //寮�闃�鎴愬姛锛岃櫄鎷熷崱璁板綍涓婃爣璁板凡琚崰鐢�
+                                        sv.setVcUsed(vcPo.getId(), dto.getIntakeId());
+                                    }
+                                }
+                                @Override
+                                public void call(Object... objs) {
+                                }
+                                @Override
+                                public void exception(Exception e) {
+                                }
+                            });
+                        }
+                    } catch (Exception e) {
+                        res = BaseResponseUtils.buildFail("鏈嶅姟绔瀯閫犲苟鍚戦�氫俊涓棿浠跺彂閫佽姹傛椂寮傚父" + (e.getMessage() == null ? "" : e.getMessage()));
+                    } finally {
+                        //鏈�缁�
+                        super.end();
+                    }
+                }
+            }
+        }
+        return res ;
+    }
+
+    @Override
+    protected String checkDto(DtoBase dto) {
+        return null;
+    }
+
+    @Override
+    protected String dealComResult(String code, JSONObject resultData, Callback callback){
+        String msg;
+        if(resultData != null){
+            JSONObject codeData = resultData.getJSONObject("data") ;
+            if(codeData == null){
+                msg = RtuSuccessMsg ;
+            }else {
+                String json = codeData.toJSONString();
+                DataCd92_A2Vo cvo = JSON.parseObject(json, DataCd92_A2Vo.class) ;
+                if(cvo != null){
+                    if(callback != null){
+                        if(cvo.opResult != null && cvo.opResult.byteValue() == (byte)0){
+                            callback.call(true);//寮�闃�鎴愬姛
+                        }else{
+                            callback.call(false);//寮�闃�澶辫触
+                        }
+                    }
+                    msg = cvo.toStr(false) ;
+                }else{
+                    msg = RtuSuccessMsg ;
+                }
+            }
+        }else{
+            msg = RtuSuccessMsg ;
+        }
+        return msg;
+    }
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd92/CdDto.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd92/CdDto.java
new file mode 100644
index 0000000..3b7d68e
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd92/CdDto.java
@@ -0,0 +1,19 @@
+package com.dy.pipIrrRemote.monitor.p202404V201.cd92;
+
+import com.dy.pipIrrRemote.common.dto.DtoBase;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/5/13 08:33
+ * @Description
+ */
+
+@Data
+@EqualsAndHashCode(callSuper=true)
+public class CdDto extends DtoBase {
+    public static final long serialVersionUID = 202505130833001L;
+    public String vtCardId ;//鐢ㄦ埛鍗�(铏氭嫙鍗�)搴忓垪鍙凤紙17浣嶆暟瀛楋級锛�6瀛楄妭BCD锛�2瀛楄妭HEX锛�
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd92/CdParam.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd92/CdParam.java
new file mode 100644
index 0000000..267cf55
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd92/CdParam.java
@@ -0,0 +1,25 @@
+package com.dy.pipIrrRemote.monitor.p202404V201.cd92;
+
+import com.dy.pipIrrRemote.monitor.common.CdParameter;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/5/13 08:33
+ * @Description
+ */
+@Data
+@ToString(callSuper = true)
+@EqualsAndHashCode(callSuper = true)
+@SuperBuilder
+public class CdParam extends CdParameter {
+    public String icCardNo ;//鐢ㄦ埛鍗″簭鍒楀彿锛�17浣嶆暟瀛楋級锛�6瀛楄妭BCD锛�2瀛楄妭HEX锛�
+    public Double waterRemain ;//鐢ㄦ埛鍓╀綑姘撮噺, 涓や釜灏忔暟鐐�, 鍗曚綅m3, 0~99999999.99
+    public Double moneyRemain ;//鐢ㄦ埛鍓╀綑閲戦, 涓や釜灏忔暟鐐�, 鍗曚綅鍏�, 0~999999.99
+    public Double waterPrice ;//姘撮噺鍗曚环 鍗曚綅:鍏�, 2涓皬鏁扮偣
+    public Double elePrice ;//鐢甸噺鍗曚环 鍗曚綅:鍏�, 2涓皬鏁扮偣
+    public String orderNo ;//璁㈠崟鍙凤紙16浣嶆暟瀛楋級
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd92/CdSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd92/CdSv.java
new file mode 100644
index 0000000..b74f6f3
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd92/CdSv.java
@@ -0,0 +1,57 @@
+package com.dy.pipIrrRemote.monitor.p202404V201.cd92;
+
+import com.dy.pipIrrGlobal.daoPr.PrIntakeVcMapper;
+import com.dy.pipIrrGlobal.daoPr.PrWaterPriceMapper;
+import com.dy.pipIrrGlobal.daoSe.SeClientCardMapper;
+import com.dy.pipIrrGlobal.daoSe.SeVirtualCardMapper;
+import com.dy.pipIrrGlobal.pojoSe.SeClientCard;
+import com.dy.pipIrrGlobal.pojoSe.SeVirtualCard;
+import com.dy.pipIrrGlobal.voSe.VoVirtualCard;
+import com.dy.pipIrrRemote.monitor.common.ComSv;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/5/13 08:33
+ * @Description
+ */
+@Slf4j
+@Service("cd92Sv")
+public class CdSv extends ComSv {
+    @Autowired
+    protected SeVirtualCardMapper seVirtualCardDao ;
+    @Autowired
+    protected PrWaterPriceMapper prWaterPriceDao ;
+    @Autowired
+    protected PrIntakeVcMapper prIntakeVcDao ;
+
+    public VoVirtualCard selectClientVtCardById(Long id){
+        return seVirtualCardDao.getVcById(id) ;
+    }
+    public Double selectWaterPrice(){
+        return prWaterPriceDao.getPrice() ;
+    }
+    /**
+     * 鏍规嵁鍙栨按鍙D鑾峰彇涓庝箣缁戝畾铏氭嫙鍗D
+     * @param intakeId
+     * @return
+     */
+    public Long selectVcIdByIntakeId(Long intakeId) {
+        return prIntakeVcDao.getVcIdByIntakeId(intakeId);
+    }
+    /**
+     * 璁剧疆铏氭嫙鍗¤鍗犵敤
+     */
+    public void setVcUsed(Long id, Long intakeId){
+        SeVirtualCard po = new SeVirtualCard() ;
+        po.setId(id);
+        po.setIntakeId(intakeId);
+        po.setInUse((byte)1);
+        po.setOpenTime(new Date());
+        seVirtualCardDao.updateByPrimaryKeySelective(po);
+    }
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd93/CdCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd93/CdCtrl.java
new file mode 100644
index 0000000..3c26d0a
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd93/CdCtrl.java
@@ -0,0 +1,151 @@
+package com.dy.pipIrrRemote.monitor.p202404V201.cd93;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.dy.common.aop.SsoAop;
+import com.dy.common.mw.protocol.Command;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd93_A3Vo;
+import com.dy.common.util.Callback;
+import com.dy.common.webUtil.BaseResponse;
+import com.dy.common.webUtil.BaseResponseUtils;
+import com.dy.pipIrrGlobal.voRm.VoUnclosedParam;
+import com.dy.pipIrrRemote.common.dto.DtoBase;
+import com.dy.pipIrrRemote.monitor.common.ComCtrl;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.validation.Valid;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Scope;
+import org.springframework.http.MediaType;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/5/13 09:38
+ * @Description
+ */
+@Slf4j
+@Tag(name = "杩滅▼鍛戒护", description = "骞冲彴杩滅▼鍏抽榾")
+@RestController("cd93Ctrl")
+@RequestMapping(path = "p202404V201/cd93")
+@RequiredArgsConstructor
+@Scope("prototype") //鍥犱负鏈夊璞$被灞炴�э紝鎵�浠ラ噰鐢ㄥ師鍨嬫ā寮忥紝姣忔璇锋眰鏂板缓涓�涓疄渚嬪璞�
+public class CdCtrl extends ComCtrl {
+
+    private static final String RtuSuccessMsg = "鎺у埗鍣ㄦ帴鏀跺苟鎵ц鍛戒护鎴愬姛锛屾棤杩斿洖鏁版嵁";
+
+    private static final String ComCode = "93" ;
+
+    @Autowired
+    private CdSv sv ;
+    /**
+     * 鍚戣澶囷紙鎺у埗鍣級鍙戦�佸懡浠�
+     * @param dto 鍓嶇鍙戞潵鐨勫�煎璞�
+     * @param bindingResult 瀵筪to楠岃瘉鐨勭粨鏋�
+     * @return 杩斿洖鍓嶇
+     */
+    @PostMapping(path = "send", consumes = MediaType.APPLICATION_JSON_VALUE)
+    @SsoAop()
+    public BaseResponse<Object> send(@RequestBody @Valid CdDto dto, BindingResult bindingResult) {
+        BaseResponse<Object> res ;
+        //鍙戦�佸懡浠ゅ墠-1锛氶獙璇�
+        res = super.pre1(sv, ComCode, dto, bindingResult);
+        if(res == null) {
+            //鍙戦�佸懡浠ゅ墠-2锛氳幏寰楁暟鎹�
+            res = super.pre2(sv, ComCode, dto, bindingResult);
+            if (res == null) {
+                //鑾峰彇寮�闃�鍛戒护鍙傛暟
+                VoUnclosedParam opPa = sv.selectUncloseParam(dto.getIntakeId(), ctrlPo.getRtuAddr());
+                if(opPa == null) {
+                    return BaseResponseUtils.buildFail("璇ュ彇姘村彛涓婃棤鎮ㄦ渶杩戠殑寮�闃�鎿嶄綔");
+                }
+                Long vcId = sv.getVcIdByNum(opPa.getVcNum()) ;
+                if(vcId == null) {
+                    return BaseResponseUtils.buildFail("鏈嶅姟绔嚭閿欙紝鏈緱鍒拌櫄鎷熷崱ID");
+                }
+                //鍙戦�佸懡浠ゅ墠-3锛氫繚瀛樺懡浠ゆ棩蹇�
+                CdParam comParam = CdParam.builder().commandCode(ComCode).projectNo(projectNo).controllerType(controllerType)
+                        .icCardNo(opPa.getVcNum())//鐢ㄦ埛鍗″簭鍒楀彿锛�17浣嶆暟瀛楋級锛�6瀛楄妭BCD锛�2瀛楄妭HEX锛�
+                        .orderNo(opPa.getOrderNo())//璁㈠崟鍙凤紙16浣嶆暟瀛楋級
+                        .build();
+                res = super.pre3(sv, dto.getIntakeId(), dto.getOperator(), ComCode, comParam);
+                if (res == null) {
+                    //鍙戦�佸懡浠ゅ墠-4锛氬噯澶嘑eature
+                    super.pre4();
+                    try {
+                        //鍒涘缓澶栭儴鍛戒护锛堝彂缁欐帶鍒跺櫒锛�
+                        Command com = sv.createOuterCommand(ctrlPo.getRtuAddr(), "" + comId, ComCode);
+                        com.rtuResultSendWebUrl = rtuResultSendWebUrl;
+                        com.param = comParam;
+                        //鍙戦�佸懡浠�
+                        res = super.doSend(sv, com);
+                        if (res == null) {
+                            //鍙戦�佸懡浠ゅ悗
+                            res = super.after(ComCode, new Callback() {
+                                @Override
+                                public void call(Object obj) {
+                                    Boolean success = (Boolean) obj;
+                                    if(success){
+                                        //鍏抽榾鎴愬姛锛岃В闄よ櫄鎷熷崱琚崰鐢�
+                                        sv.setVcNoUsed(vcId);
+                                    }
+                                }
+                                @Override
+                                public void call(Object... objs) {
+                                }
+                                @Override
+                                public void exception(Exception e) {
+                                }
+                            });
+                        }
+                    } catch (Exception e) {
+                        res = BaseResponseUtils.buildFail("鏈嶅姟绔瀯閫犲苟鍚戦�氫俊涓棿浠跺彂閫佽姹傛椂寮傚父" + (e.getMessage() == null ? "" : e.getMessage()));
+                    } finally {
+                        //鏈�缁�
+                        super.end();
+                    }
+                }
+            }
+        }
+        return res ;
+    }
+
+    @Override
+    protected String checkDto(DtoBase dto) {
+        return null;
+    }
+
+    @Override
+    protected String dealComResult(String code, JSONObject resultData, Callback callback){
+        String msg;
+        if(resultData != null){
+            JSONObject codeData = resultData.getJSONObject("data") ;
+            if(codeData == null){
+                msg = RtuSuccessMsg ;
+            }else {
+                String json = codeData.toJSONString();
+                DataCd93_A3Vo cvo = JSON.parseObject(json, DataCd93_A3Vo.class) ;
+                if(cvo != null){
+                    if(callback != null){
+                        if(cvo.clResult != null && cvo.clResult == 0){
+                            callback.call(true);//鍏抽榾鎴愬姛
+                        }else{
+                            callback.call(false);//鍏抽榾澶辫触
+                        }
+                    }
+                    msg = cvo.toStr(false) ;
+                }else{
+                    msg = RtuSuccessMsg ;
+                }
+            }
+        }else{
+            msg = RtuSuccessMsg ;
+        }
+        return msg;
+    }
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd93/CdDto.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd93/CdDto.java
new file mode 100644
index 0000000..31a0ca3
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd93/CdDto.java
@@ -0,0 +1,18 @@
+package com.dy.pipIrrRemote.monitor.p202404V201.cd93;
+
+import com.dy.pipIrrRemote.common.dto.DtoBase;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/5/13 09:38
+ * @Description
+ */
+
+@Data
+@EqualsAndHashCode(callSuper=true)
+public class CdDto extends DtoBase {
+    public static final long serialVersionUID = 202505130938001L;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd93/CdParam.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd93/CdParam.java
new file mode 100644
index 0000000..c3421ae
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd93/CdParam.java
@@ -0,0 +1,21 @@
+package com.dy.pipIrrRemote.monitor.p202404V201.cd93;
+
+import com.dy.pipIrrRemote.monitor.common.CdParameter;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/5/13 09:38
+ * @Description
+ */
+@Data
+@ToString(callSuper = true)
+@EqualsAndHashCode(callSuper = true)
+@SuperBuilder
+public class CdParam extends CdParameter {
+    public String icCardNo ;//鐢ㄦ埛鍗″簭鍒楀彿锛�17浣嶆暟瀛楋級锛�6瀛楄妭BCD锛�2瀛楄妭HEX锛�
+    public String orderNo ;//璁㈠崟鍙凤紙16浣嶆暟瀛楋級
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd93/CdSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd93/CdSv.java
new file mode 100644
index 0000000..c59ab53
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd93/CdSv.java
@@ -0,0 +1,54 @@
+package com.dy.pipIrrRemote.monitor.p202404V201.cd93;
+
+import com.dy.pipIrrGlobal.daoPr.PrWaterPriceMapper;
+import com.dy.pipIrrGlobal.daoSe.SeVirtualCardMapper;
+import com.dy.pipIrrGlobal.pojoSe.SeVirtualCard;
+import com.dy.pipIrrGlobal.voSe.VoVirtualCard;
+import com.dy.pipIrrRemote.monitor.common.ComSv;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/5/13 09:38
+ * @Description
+ */
+@Slf4j
+@Service("cd93Sv")
+public class CdSv extends ComSv {
+
+    @Autowired
+    protected SeVirtualCardMapper seVirtualCardDao ;
+
+    @Autowired
+    protected PrWaterPriceMapper prWaterPriceDao ;
+
+    public VoVirtualCard selectClientVtCardById(Long id){
+        return seVirtualCardDao.getVcById(id) ;
+    }
+    public Double selectWaterPrice(){
+        return prWaterPriceDao.getPrice() ;
+    }
+
+    /**
+     * 瑙i櫎铏氭嫙鍗¤鍗犵敤
+     */
+    public void setVcNoUsed(Long id){
+        SeVirtualCard po = new SeVirtualCard() ;
+        po.setId(id);
+        po.setIntakeId(null);
+        po.setInUse((byte)0);
+        po.setOpenTime(null);
+        seVirtualCardDao.updateByPrimaryKeySelective(po);
+    }
+
+    /**
+     * 閫氳繃铏氭嫙鍗$紪鍙峰緱鍒拌褰曞疄浣揑D
+     * @param vcNum
+     * @return
+     */
+    public Long getVcIdByNum(String vcNum){
+        return seVirtualCardDao.getVcIdByNum(vcNum) ;
+    }
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd97/CdCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd97/CdCtrl.java
index 88adcaa..0875a90 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd97/CdCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd97/CdCtrl.java
@@ -4,8 +4,8 @@
 import com.alibaba.fastjson2.JSONObject;
 import com.dy.common.aop.SsoAop;
 import com.dy.common.mw.protocol.Command;
-import com.dy.common.mw.protocol.p206V202404.CodeV202404;
 import com.dy.common.mw.protocol.p206V202404.upVos.DataCdXyVo;
+import com.dy.common.util.Callback;
 import com.dy.common.webUtil.BaseResponse;
 import com.dy.common.webUtil.BaseResponseUtils;
 import com.dy.pipIrrRemote.common.dto.DtoBase;
@@ -73,7 +73,7 @@
                         res = super.doSend(sv, com);
                         if (res == null) {
                             //鍙戦�佸懡浠ゅ悗
-                            res = super.after(ComCode);
+                            res = super.after(ComCode, null);
                         }
                     } catch (Exception e) {
                         res = BaseResponseUtils.buildFail("鏈嶅姟绔瀯閫犲苟鍚戦�氫俊涓棿浠跺彂閫佽姹傛椂寮傚父" + (e.getMessage() == null ? "" : e.getMessage()));
@@ -93,7 +93,7 @@
     }
 
     @Override
-    protected String createRtnMsg(String code, JSONObject resultData){
+    protected String dealComResult(String code, JSONObject resultData, Callback callback){
         String msg;
         if(resultData != null){
             JSONObject codeData = resultData.getJSONObject("data") ;
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd98/CdCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd98/CdCtrl.java
index 2ce6db3..26950f7 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd98/CdCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd98/CdCtrl.java
@@ -4,8 +4,8 @@
 import com.alibaba.fastjson2.JSONObject;
 import com.dy.common.aop.SsoAop;
 import com.dy.common.mw.protocol.Command;
-import com.dy.common.mw.protocol.p206V202404.CodeV202404;
 import com.dy.common.mw.protocol.p206V202404.upVos.DataCdXyVo;
+import com.dy.common.util.Callback;
 import com.dy.common.webUtil.BaseResponse;
 import com.dy.common.webUtil.BaseResponseUtils;
 import com.dy.pipIrrRemote.common.dto.DtoBase;
@@ -73,7 +73,7 @@
                         res = super.doSend(sv, com);
                         if (res == null) {
                             //鍙戦�佸懡浠ゅ悗
-                            res = super.after(ComCode);
+                            res = super.after(ComCode, null);
                         }
                     } catch (Exception e) {
                         res = BaseResponseUtils.buildFail("鏈嶅姟绔瀯閫犲苟鍚戦�氫俊涓棿浠跺彂閫佽姹傛椂寮傚父" + (e.getMessage() == null ? "" : e.getMessage()));
@@ -93,7 +93,7 @@
     }
 
     @Override
-    protected String createRtnMsg(String code, JSONObject resultData){
+    protected String dealComResult(String code, JSONObject resultData, Callback callback){
         String msg;
         if(resultData != null){
             JSONObject codeData = resultData.getJSONObject("data") ;
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd99/CdCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd99/CdCtrl.java
index 10d92c8..d363b82 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd99/CdCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd99/CdCtrl.java
@@ -4,8 +4,8 @@
 import com.alibaba.fastjson2.JSONObject;
 import com.dy.common.aop.SsoAop;
 import com.dy.common.mw.protocol.Command;
-import com.dy.common.mw.protocol.p206V202404.CodeV202404;
 import com.dy.common.mw.protocol.p206V202404.upVos.DataCdXyVo;
+import com.dy.common.util.Callback;
 import com.dy.common.webUtil.BaseResponse;
 import com.dy.common.webUtil.BaseResponseUtils;
 import com.dy.pipIrrRemote.common.dto.DtoBase;
@@ -73,7 +73,7 @@
                         res = super.doSend(sv, com);
                         if (res == null) {
                             //鍙戦�佸懡浠ゅ悗
-                            res = super.after(ComCode);
+                            res = super.after(ComCode, null);
                         }
                     } catch (Exception e) {
                         res = BaseResponseUtils.buildFail("鏈嶅姟绔瀯閫犲苟鍚戦�氫俊涓棿浠跺彂閫佽姹傛椂寮傚父" + (e.getMessage() == null ? "" : e.getMessage()));
@@ -93,7 +93,7 @@
     }
 
     @Override
-    protected String createRtnMsg(String code, JSONObject resultData){
+    protected String dealComResult(String code, JSONObject resultData, Callback callback){
         String msg;
         if(resultData != null){
             JSONObject codeData = resultData.getJSONObject("data") ;

--
Gitblit v1.8.0