From f74db84df0e3797e0a2db1faa50adcb778a5150a Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期五, 27 六月 2025 11:33:35 +0800
Subject: [PATCH] 1、完善水肥、墒情、气象相关Mapper代码; 2、解决表阀一体机远程关阀出现的订单号不一致专制不能关阀问题(王江海测试发现)。

---
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cdA2/CdSv.java   |   25 +++++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmManureHistoryMapper.java                    |    6 +
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmSoilHistoryMapper.java                      |    6 +
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cdA3/CdSv.java   |   17 +++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmWeatherLastMapper.java                      |    6 +
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.properties                                        |    6 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cdA2/CdCtrl.java |   50 +++++++++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmManureLastMapper.java                       |    6 +
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cdA3/CdCtrl.java |   18 +++
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd92/CdSv.java   |   25 +++++
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/common/ComSv.java            |    1 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd93/CdSv.java   |   19 +++
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd92/CdCtrl.java |   50 +++++++++
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd93/CdCtrl.java |   18 +++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmWeatherHistoryMapper.java                   |    6 +
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmSoilLastMapper.java                         |    6 +
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/command/CommandSv.java                              |    2 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmSoilDayMapper.java                          |    6 +
 18 files changed, 256 insertions(+), 17 deletions(-)

diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/command/CommandSv.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/command/CommandSv.java
index a862c21..9bc0238 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/command/CommandSv.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/command/CommandSv.java
@@ -16,6 +16,7 @@
 import com.dy.pipIrrGlobal.pojoPr.PrController;
 import com.dy.pipIrrGlobal.pojoRm.RmCommandHistory;
 import com.dy.pipIrrGlobal.rtuMw.Web2RtuMw;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Date;
 
@@ -81,6 +82,7 @@
      * @param operator
      * @return
      */
+    @Transactional(rollbackFor = Exception.class)
     public RmCommandHistory saveComHistoryPo(RmCommandHistoryMapper rmCommandHistoryDao,
                                              Long comId,
                                              String protocol,
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmManureHistoryMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmManureHistoryMapper.java
index c4f3aa0..5197f89 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmManureHistoryMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmManureHistoryMapper.java
@@ -1,7 +1,10 @@
 package com.dy.pipIrrGlobal.daoRm;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dy.pipIrrGlobal.pojoRm.RmCommandOpen;
 import com.dy.pipIrrGlobal.pojoRm.RmManureHistory;
 import com.dy.pipIrrGlobal.voRm.VoManure;
+import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
 import java.util.Map;
@@ -11,7 +14,8 @@
  * @Date: 2025/6/25 10:03
  * @Description
  */
-public interface RmManureHistoryMapper {
+@Mapper
+public interface RmManureHistoryMapper extends BaseMapper<RmManureHistory> {
     int deleteByPrimaryKey(Long id);
 
     int insert(RmManureHistory record);
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmManureLastMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmManureLastMapper.java
index 1fa5b88..0773fec 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmManureLastMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmManureLastMapper.java
@@ -1,7 +1,10 @@
 package com.dy.pipIrrGlobal.daoRm;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dy.pipIrrGlobal.pojoRm.RmCommandOpen;
 import com.dy.pipIrrGlobal.pojoRm.RmManureLast;
 import com.dy.pipIrrGlobal.voRm.VoManure;
+import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -12,7 +15,8 @@
  * @Date: 2025/6/25 10:03
  * @Description
  */
-public interface RmManureLastMapper {
+@Mapper
+public interface RmManureLastMapper extends BaseMapper<RmManureLast> {
     int deleteByPrimaryKey(Long id);
 
     int insert(RmManureLast record);
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmSoilDayMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmSoilDayMapper.java
index 4310755..7c2397b 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmSoilDayMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmSoilDayMapper.java
@@ -1,9 +1,12 @@
 package com.dy.pipIrrGlobal.daoRm;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dy.pipIrrGlobal.pojoRm.RmManureLast;
 import com.dy.pipIrrGlobal.pojoRm.RmSoilDay;
 import com.dy.pipIrrGlobal.pojoRm.RmSoilLast;
 import com.dy.pipIrrGlobal.voRm.VoSoil;
 import com.dy.pipIrrGlobal.voRm.VoSoilDay;
+import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -14,7 +17,8 @@
  * @Date: 2025/6/25 10:04
  * @Description
  */
-public interface RmSoilDayMapper {
+@Mapper
+public interface RmSoilDayMapper extends BaseMapper<RmSoilDay> {
     int deleteByPrimaryKey(Long id);
 
     int insert(RmSoilDay record);
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmSoilHistoryMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmSoilHistoryMapper.java
index 9d07be9..9dcfa07 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmSoilHistoryMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmSoilHistoryMapper.java
@@ -1,7 +1,10 @@
 package com.dy.pipIrrGlobal.daoRm;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dy.pipIrrGlobal.pojoRm.RmSoilDay;
 import com.dy.pipIrrGlobal.pojoRm.RmSoilHistory;
 import com.dy.pipIrrGlobal.voRm.VoSoil;
+import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
 import java.util.Map;
@@ -11,7 +14,8 @@
  * @Date: 2025/6/25 10:04
  * @Description
  */
-public interface RmSoilHistoryMapper {
+@Mapper
+public interface RmSoilHistoryMapper extends BaseMapper<RmSoilHistory> {
     int deleteByPrimaryKey(Long id);
 
     int insert(RmSoilHistory record);
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmSoilLastMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmSoilLastMapper.java
index f2f5382..117a542 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmSoilLastMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmSoilLastMapper.java
@@ -1,7 +1,10 @@
 package com.dy.pipIrrGlobal.daoRm;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dy.pipIrrGlobal.pojoRm.RmSoilHistory;
 import com.dy.pipIrrGlobal.pojoRm.RmSoilLast;
 import com.dy.pipIrrGlobal.voRm.VoSoil;
+import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -12,7 +15,8 @@
  * @Date: 2025/6/25 10:04
  * @Description
  */
-public interface RmSoilLastMapper {
+@Mapper
+public interface RmSoilLastMapper extends BaseMapper<RmSoilLast> {
     int deleteByPrimaryKey(Long id);
 
     int insert(RmSoilLast record);
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmWeatherHistoryMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmWeatherHistoryMapper.java
index 10ae489..ffa0532 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmWeatherHistoryMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmWeatherHistoryMapper.java
@@ -1,7 +1,10 @@
 package com.dy.pipIrrGlobal.daoRm;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dy.pipIrrGlobal.pojoRm.RmSoilLast;
 import com.dy.pipIrrGlobal.pojoRm.RmWeatherHistory;
 import com.dy.pipIrrGlobal.voRm.VoWeather;
+import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
 import java.util.Map;
@@ -11,7 +14,8 @@
  * @Date: 2025/6/25 10:39
  * @Description
  */
-public interface RmWeatherHistoryMapper {
+@Mapper
+public interface RmWeatherHistoryMapper extends BaseMapper<RmWeatherHistory> {
     int deleteByPrimaryKey(Long id);
 
     int insert(RmWeatherHistory record);
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmWeatherLastMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmWeatherLastMapper.java
index d5e33d1..3c7c4fa 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmWeatherLastMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmWeatherLastMapper.java
@@ -1,7 +1,10 @@
 package com.dy.pipIrrGlobal.daoRm;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dy.pipIrrGlobal.pojoRm.RmWeatherHistory;
 import com.dy.pipIrrGlobal.pojoRm.RmWeatherLast;
 import com.dy.pipIrrGlobal.voRm.VoWeather;
+import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -12,7 +15,8 @@
  * @Date: 2025/6/25 10:39
  * @Description
  */
-public interface RmWeatherLastMapper {
+@Mapper
+public interface RmWeatherLastMapper extends BaseMapper<RmWeatherLast> {
     int deleteByPrimaryKey(Long id);
 
     int insert(RmWeatherLast record);
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.properties b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.properties
index 6b48b8c..42235ec 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.properties
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.properties
@@ -41,13 +41,13 @@
 #   娴嬭瘯锛� mqtt.enable=false  mqtt.protocolAndDeviceIds= mqtt.topicAndQos=
 #   姊呮睙锛� mqtt.enable=false  mqtt.protocolAndDeviceIds= mqtt.topicAndQos=
 # 121鏈嶅姟鍣細
-#   姘戝嫟锛� mqtt.enable=true  mqtt.protocolAndDeviceIds=? mqtt.topicAndQos=weather/1,1;soil/1,1;manure/1,1;state/1,1
+#   姘戝嫟锛� mqtt.enable=true  mqtt.protocolAndDeviceIds=? mqtt.topicAndQos=weather/1,1;soil/1,1;manure/1,1
 #   寤跺簡锛� mqtt.enable=false  mqtt.protocolAndDeviceIds= mqtt.topicAndQos=
 #   榛戦緳姹燂細 mqtt.enable=false  mqtt.protocolAndDeviceIds= mqtt.topicAndQos=
 #   鐢樺窞锛� mqtt.enable=false  mqtt.protocolAndDeviceIds= mqtt.topicAndQos=
 #   鍑夊窞锛� mqtt.enable=false  mqtt.protocolAndDeviceIds= mqtt.topicAndQos=
-#   閲戝窛锛� mqtt.enable=true  mqtt.protocolAndDeviceIds=? mqtt.topicAndQos=weather/1,1;soil/1,1;manure/1,1;state/1,1
-#   鍢夊唱鍏筹細 mqtt.enable=true  mqtt.protocolAndDeviceIds=? mqtt.topicAndQos=weather/1,1;soil/1,1;manure/1,1;state/1,1
+#   閲戝窛锛� mqtt.enable=true  mqtt.protocolAndDeviceIds=? mqtt.topicAndQos=weather/1,1;soil/1,1;manure/1,1
+#   鍢夊唱鍏筹細 mqtt.enable=true  mqtt.protocolAndDeviceIds=? mqtt.topicAndQos=weather/1,1;soil/1,1;manure/1,1
 mqtt.enable=false
 mqtt.ip=127.0.0.1
 mqtt.port=1883
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 b2e5864..27131f2 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
@@ -62,6 +62,7 @@
      * @param intakeId
      * @return
      */
+    @Transactional(rollbackFor = Exception.class)
     public PrCommonIntakes addOrUpdateOftenUseIntake(Long operatorId, Long intakeId) {
         PrCommonIntakes po = prCommonIntakesDao.selectByOperatorAndIntake(operatorId, intakeId);
         if(po == null) {
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
index 26de6cf..fa21331 100644
--- 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
@@ -8,6 +8,7 @@
 import com.dy.common.util.Callback;
 import com.dy.common.webUtil.BaseResponse;
 import com.dy.common.webUtil.BaseResponseUtils;
+import com.dy.pipIrrGlobal.pojoRm.RmCommandOpen;
 import com.dy.pipIrrGlobal.voSe.VoVirtualCard;
 import com.dy.pipIrrRemote.common.dto.DtoBase;
 import com.dy.pipIrrRemote.monitor.common.ComCtrl;
@@ -24,6 +25,8 @@
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Date;
 
 /**
  * @Author: liurunyu
@@ -87,13 +90,14 @@
                 if(waterPrice == null){
                     return BaseResponseUtils.buildErrorMsg("鏈嶅姟绔嚭閿欙紝鏈緱鍒版按浠�") ;
                 }
+                String orderNo = RandomStringUtils.randomNumeric(16) ;
                 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浣嶆暟瀛楋級
+                        .orderNo(orderNo)//璁㈠崟鍙凤紙16浣嶆暟瀛楋級
                         .build();
                 //鍙戦�佸懡浠ゅ墠-3锛氫繚瀛樺懡浠ゆ棩蹇�
                 res = super.pre3(sv, dto.getIntakeId(), dto.getOperator(), ComCode, comParam);
@@ -118,6 +122,15 @@
                                         sv.addOrUpdateOftenUseIntake(dto.getOperator(), dto.getIntakeId()) ;
                                         //寮�闃�鎴愬姛锛岃櫄鎷熷崱璁板綍涓婃爣璁板凡琚崰鐢�
                                         sv.setVcUsed(vcPo.getId(), dto.getIntakeId());
+                                        //璁板綍寮�闃�鍛戒护锛屼互澶囪繙绋嬪叧闃�
+                                        RmCommandOpen comOpen = sv.getCommandOpen(dto.getIntakeId());
+                                        if(comOpen == null){
+                                            RmCommandOpen po = newRmCommandOpen(comId, ctrlPo.getProtocol(), ComCode, comName, dto.getIntakeId(), ctrlPo.getRtuAddr(), vcPo.getVcNum(), orderNo, dto.getOperator()) ;
+                                            sv.saveCommandOpen(po);
+                                        }else{
+                                            setRmCommandOpen(comOpen, comId, ctrlPo.getProtocol(), ComCode, comName, dto.getIntakeId(), ctrlPo.getRtuAddr(), vcPo.getVcNum(), orderNo, dto.getOperator()) ;
+                                            sv.updateCommandOpen(comOpen);
+                                        }
                                     }
                                 }
                                 @Override
@@ -173,4 +186,39 @@
         }
         return msg;
     }
+
+    private RmCommandOpen newRmCommandOpen(Long comId,
+                                           String protocol,
+                                           String comCode,
+                                           String comName,
+                                           Long intakeId,
+                                           String rtuAddr,
+                                           Long vcNum,
+                                           String orderNo,
+                                           Long operator){
+        RmCommandOpen po = new RmCommandOpen() ;
+        this.setRmCommandOpen(po, comId, protocol, comCode, comName, intakeId, rtuAddr, vcNum, orderNo, operator);
+        return po ;
+    }
+    private void setRmCommandOpen(RmCommandOpen po,
+                                  Long comId,
+                                  String protocol,
+                                  String comCode,
+                                  String comName,
+                                  Long intakeId,
+                                  String rtuAddr,
+                                  Long vcNum,
+                                  String orderNo,
+                                  Long operator){
+        po.comId = comId ;
+        po.protocol = protocol ;
+        po.commandCode = comCode ;
+        po.commandName = comName ;
+        po.intakeId = intakeId ;
+        po.rtuAddr = rtuAddr ;
+        po.vcNum = vcNum ;
+        po.orderNo = orderNo ;
+        po.operator = operator ;
+        po.sendTime = new Date() ;
+    }
 }
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
index afd477b..9328b6b 100644
--- 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
@@ -2,15 +2,19 @@
 
 import com.dy.pipIrrGlobal.daoPr.PrIntakeVcMapper;
 import com.dy.pipIrrGlobal.daoPr.PrWaterPriceMapper;
+import com.dy.pipIrrGlobal.daoRm.RmCommandOpenMapper;
 import com.dy.pipIrrGlobal.daoSe.SeVirtualCardMapper;
+import com.dy.pipIrrGlobal.pojoRm.RmCommandOpen;
 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 org.springframework.transaction.annotation.Transactional;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * @Author: liurunyu
@@ -26,6 +30,8 @@
     protected PrWaterPriceMapper prWaterPriceDao ;
     @Autowired
     protected PrIntakeVcMapper prIntakeVcDao ;
+    @Autowired
+    protected RmCommandOpenMapper rmCommandOpenDao ;
 
     public VoVirtualCard selectClientVtCardById(Long id){
         return seVirtualCardDao.getVcById(id) ;
@@ -44,6 +50,7 @@
     /**
      * 璁剧疆铏氭嫙鍗¤鍗犵敤
      */
+    @Transactional(rollbackFor = Exception.class)
     public void setVcUsed(Long id, Long intakeId){
         SeVirtualCard po = new SeVirtualCard() ;
         po.setId(id);
@@ -52,4 +59,22 @@
         po.setOpenTime(new Date());
         seVirtualCardDao.updateByPrimaryKeySelective(po);
     }
+
+    public RmCommandOpen getCommandOpen(Long intakeId){
+        List<RmCommandOpen> list = rmCommandOpenDao.selectByIntakeId(intakeId) ;
+        if(list != null && list.size() > 0){
+            return list.get(0) ;
+        }
+        return null ;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public void saveCommandOpen(RmCommandOpen po){
+        rmCommandOpenDao.insert(po) ;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public void updateCommandOpen(RmCommandOpen po){
+        rmCommandOpenDao.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
index 4755282..9f00fbe 100644
--- 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
@@ -8,7 +8,7 @@
 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.pipIrrGlobal.pojoRm.RmCommandOpen;
 import com.dy.pipIrrRemote.common.dto.DtoBase;
 import com.dy.pipIrrRemote.monitor.common.ComCtrl;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -60,6 +60,8 @@
             res = super.pre2(sv, ComCode, dto, bindingResult);
             if (res == null) {
                 //鑾峰彇寮�闃�鍛戒护鍙傛暟
+                /*
+                2025-06-27鍘熸潵鐨勫疄鐜帮紝鍘熸潵娌℃湁璁捐RmCommandOpen瀵硅薄鍙婂叾瀵瑰簲鐨勬暟鎹簱琛�
                 VoUnclosedParam opPa = sv.selectUncloseParam(dto.getIntakeId(), ctrlPo.getRtuAddr());
                 if(opPa == null) {
                     return BaseResponseUtils.buildFail("璇ュ彇姘村彛涓婃棤鎮ㄦ渶杩戠殑寮�闃�鎿嶄綔");
@@ -73,6 +75,20 @@
                         .icCardNo(opPa.getVcNum())//鐢ㄦ埛鍗″簭鍒楀彿锛�17浣嶆暟瀛楋級锛�6瀛楄妭BCD锛�2瀛楄妭HEX锛�
                         .orderNo(opPa.getOrderNo())//璁㈠崟鍙凤紙16浣嶆暟瀛楋級
                         .build();
+                */
+                RmCommandOpen comOpen = sv.getCommandOpen(dto.getIntakeId()) ;
+                if(comOpen == null) {
+                    return BaseResponseUtils.buildFail("璇ュ彇姘村彛涓婃棤鎮ㄦ渶杩戠殑寮�闃�鎿嶄綔");
+                }
+                Long vcId = sv.getVcIdByNum("" + comOpen.vcNum) ;
+                if(vcId == null) {
+                    return BaseResponseUtils.buildFail("鏈嶅姟绔嚭閿欙紝鏈緱鍒拌櫄鎷熷崱ID");
+                }
+                //鍙戦�佸懡浠ゅ墠-3锛氫繚瀛樺懡浠ゆ棩蹇�
+                CdParam comParam = CdParam.builder().commandCode(ComCode).projectNo(projectNo).controllerType(controllerType)
+                        .icCardNo("" + comOpen.vcNum)//鐢ㄦ埛鍗″簭鍒楀彿锛�17浣嶆暟瀛楋級锛�6瀛楄妭BCD锛�2瀛楄妭HEX锛�
+                        .orderNo(comOpen.orderNo)//璁㈠崟鍙凤紙16浣嶆暟瀛楋級
+                        .build();
                 res = super.pre3(sv, dto.getIntakeId(), dto.getOperator(), ComCode, comParam);
                 if (res == null) {
                     //鍙戦�佸懡浠ゅ墠-4锛氬噯澶嘑eature
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
index fa1a23a..6b64a55 100644
--- 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
@@ -1,13 +1,18 @@
 package com.dy.pipIrrRemote.monitor.p202404V201.cd93;
 
 import com.dy.pipIrrGlobal.daoPr.PrWaterPriceMapper;
+import com.dy.pipIrrGlobal.daoRm.RmCommandOpenMapper;
 import com.dy.pipIrrGlobal.daoSe.SeVirtualCardMapper;
+import com.dy.pipIrrGlobal.pojoRm.RmCommandOpen;
 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 org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
 
 /**
  * @Author: liurunyu
@@ -20,13 +25,14 @@
 
     @Autowired
     protected SeVirtualCardMapper seVirtualCardDao ;
-
     @Autowired
     protected PrWaterPriceMapper prWaterPriceDao ;
-
+    @Autowired
+    protected RmCommandOpenMapper rmCommandOpenDao ;
     /**
      * 瑙i櫎铏氭嫙鍗¤鍗犵敤
      */
+    @Transactional(rollbackFor = Exception.class)
     public void setVcNoUsed(Long id){
         SeVirtualCard po = new SeVirtualCard() ;
         po.setId(id);
@@ -44,4 +50,13 @@
     public Long getVcIdByNum(String vcNum){
         return seVirtualCardDao.getVcIdByNum(vcNum) ;
     }
+
+
+    public RmCommandOpen getCommandOpen(Long intakeId){
+        List<RmCommandOpen> list = rmCommandOpenDao.selectByIntakeId(intakeId) ;
+        if(list != null && list.size() > 0){
+            return list.get(0) ;
+        }
+        return null ;
+    }
 }
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cdA2/CdCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cdA2/CdCtrl.java
index e7e393a..ee7a855 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cdA2/CdCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cdA2/CdCtrl.java
@@ -8,6 +8,7 @@
 import com.dy.common.util.Callback;
 import com.dy.common.webUtil.BaseResponse;
 import com.dy.common.webUtil.BaseResponseUtils;
+import com.dy.pipIrrGlobal.pojoRm.RmCommandOpen;
 import com.dy.pipIrrGlobal.voSe.VoVirtualCard;
 import com.dy.pipIrrRemote.common.dto.DtoBase;
 import com.dy.pipIrrRemote.monitor.common.ComCtrl;
@@ -24,6 +25,8 @@
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Date;
 
 /**
  * @Author: liurunyu
@@ -87,13 +90,14 @@
                 if(waterPrice == null){
                     return BaseResponseUtils.buildErrorMsg("鏈嶅姟绔嚭閿欙紝鏈緱鍒版按浠�") ;
                 }
+                String orderNo = RandomStringUtils.randomNumeric(16) ;
                 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浣嶆暟瀛楋級
+                        .orderNo(orderNo)//璁㈠崟鍙凤紙16浣嶆暟瀛楋級
                         .build();
                 //鍙戦�佸懡浠ゅ墠-3锛氫繚瀛樺懡浠ゆ棩蹇�
                 res = super.pre3(sv, dto.getIntakeId(), dto.getOperator(), ComCode, comParam);
@@ -118,6 +122,15 @@
                                         sv.addOrUpdateOftenUseIntake(dto.getOperator(), dto.getIntakeId()) ;
                                         //寮�闃�鎴愬姛锛岃櫄鎷熷崱璁板綍涓婃爣璁板凡琚崰鐢�
                                         sv.setVcUsed(vcPo.getId(), dto.getIntakeId());
+                                        //璁板綍寮�闃�鍛戒护锛屼互澶囪繙绋嬪叧闃�
+                                        RmCommandOpen comOpen = sv.getCommandOpen(dto.getIntakeId());
+                                        if(comOpen == null){
+                                            RmCommandOpen po = newRmCommandOpen(comId, ctrlPo.getProtocol(), ComCode, comName, dto.getIntakeId(), ctrlPo.getRtuAddr(), vcPo.getVcNum(), orderNo, dto.getOperator()) ;
+                                            sv.saveCommandOpen(po);
+                                        }else{
+                                            setRmCommandOpen(comOpen, comId, ctrlPo.getProtocol(), ComCode, comName, dto.getIntakeId(), ctrlPo.getRtuAddr(), vcPo.getVcNum(), orderNo, dto.getOperator()) ;
+                                            sv.updateCommandOpen(comOpen);
+                                        }
                                     }
                                 }
                                 @Override
@@ -173,4 +186,39 @@
         }
         return msg;
     }
+
+    private RmCommandOpen newRmCommandOpen(Long comId,
+                                           String protocol,
+                                           String comCode,
+                                           String comName,
+                                           Long intakeId,
+                                           String rtuAddr,
+                                           Long vcNum,
+                                           String orderNo,
+                                           Long operator){
+        RmCommandOpen po = new RmCommandOpen() ;
+        this.setRmCommandOpen(po, comId, protocol, comCode, comName, intakeId, rtuAddr, vcNum, orderNo, operator);
+        return po ;
+    }
+    private void setRmCommandOpen(RmCommandOpen po,
+                                  Long comId,
+                                  String protocol,
+                                  String comCode,
+                                  String comName,
+                                  Long intakeId,
+                                  String rtuAddr,
+                                  Long vcNum,
+                                  String orderNo,
+                                  Long operator){
+        po.comId = comId ;
+        po.protocol = protocol ;
+        po.commandCode = comCode ;
+        po.commandName = comName ;
+        po.intakeId = intakeId ;
+        po.rtuAddr = rtuAddr ;
+        po.vcNum = vcNum ;
+        po.orderNo = orderNo ;
+        po.operator = operator ;
+        po.sendTime = new Date() ;
+    }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cdA2/CdSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cdA2/CdSv.java
index 0a1fad3..4b2c04c 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cdA2/CdSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cdA2/CdSv.java
@@ -2,15 +2,19 @@
 
 import com.dy.pipIrrGlobal.daoPr.PrIntakeVcMapper;
 import com.dy.pipIrrGlobal.daoPr.PrWaterPriceMapper;
+import com.dy.pipIrrGlobal.daoRm.RmCommandOpenMapper;
 import com.dy.pipIrrGlobal.daoSe.SeVirtualCardMapper;
+import com.dy.pipIrrGlobal.pojoRm.RmCommandOpen;
 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 org.springframework.transaction.annotation.Transactional;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * @Author: liurunyu
@@ -26,6 +30,8 @@
     protected PrWaterPriceMapper prWaterPriceDao ;
     @Autowired
     protected PrIntakeVcMapper prIntakeVcDao ;
+    @Autowired
+    protected RmCommandOpenMapper rmCommandOpenDao ;
 
     public VoVirtualCard selectClientVtCardById(Long id){
         return seVirtualCardDao.getVcById(id) ;
@@ -52,4 +58,23 @@
         po.setOpenTime(new Date());
         seVirtualCardDao.updateByPrimaryKeySelective(po);
     }
+
+    public RmCommandOpen getCommandOpen(Long intakeId){
+        List<RmCommandOpen> list = rmCommandOpenDao.selectByIntakeId(intakeId) ;
+        if(list != null && list.size() > 0){
+            return list.get(0) ;
+        }
+        return null ;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public void saveCommandOpen(RmCommandOpen po){
+        rmCommandOpenDao.insert(po) ;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public void updateCommandOpen(RmCommandOpen po){
+        rmCommandOpenDao.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/cdA3/CdCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cdA3/CdCtrl.java
index 2c5626f..c7b5924 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cdA3/CdCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cdA3/CdCtrl.java
@@ -8,9 +8,11 @@
 import com.dy.common.util.Callback;
 import com.dy.common.webUtil.BaseResponse;
 import com.dy.common.webUtil.BaseResponseUtils;
+import com.dy.pipIrrGlobal.pojoRm.RmCommandOpen;
 import com.dy.pipIrrGlobal.voRm.VoUnclosedParam;
 import com.dy.pipIrrRemote.common.dto.DtoBase;
 import com.dy.pipIrrRemote.monitor.common.ComCtrl;
+import com.dy.pipIrrRemote.monitor.p202404V201.cd93.CdParam;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import jakarta.validation.Valid;
 import lombok.RequiredArgsConstructor;
@@ -60,6 +62,8 @@
             res = super.pre2(sv, ComCode, dto, bindingResult);
             if (res == null) {
                 //鑾峰彇寮�闃�鍛戒护鍙傛暟
+                /*
+                2025-06-27鍘熸潵鐨勫疄鐜帮紝鍘熸潵娌℃湁璁捐RmCommandOpen瀵硅薄鍙婂叾瀵瑰簲鐨勬暟鎹簱琛�
                 VoUnclosedParam opPa = sv.selectUncloseParam(dto.getIntakeId(), ctrlPo.getRtuAddr());
                 if(opPa == null) {
                     return BaseResponseUtils.buildFail("璇ュ彇姘村彛涓婃棤鎮ㄦ渶杩戠殑寮�闃�鎿嶄綔");
@@ -73,6 +77,20 @@
                         .icCardNo(opPa.getVcNum())//鐢ㄦ埛鍗″簭鍒楀彿锛�17浣嶆暟瀛楋級锛�6瀛楄妭BCD锛�2瀛楄妭HEX锛�
                         .orderNo(opPa.getOrderNo())//璁㈠崟鍙凤紙16浣嶆暟瀛楋級
                         .build();
+                */
+                RmCommandOpen comOpen = sv.getCommandOpen(dto.getIntakeId()) ;
+                if(comOpen == null) {
+                    return BaseResponseUtils.buildFail("璇ュ彇姘村彛涓婃棤鎮ㄦ渶杩戠殑寮�闃�鎿嶄綔");
+                }
+                Long vcId = sv.getVcIdByNum("" + comOpen.vcNum) ;
+                if(vcId == null) {
+                    return BaseResponseUtils.buildFail("鏈嶅姟绔嚭閿欙紝鏈緱鍒拌櫄鎷熷崱ID");
+                }
+                //鍙戦�佸懡浠ゅ墠-3锛氫繚瀛樺懡浠ゆ棩蹇�
+                com.dy.pipIrrRemote.monitor.p202404V201.cd93.CdParam comParam = CdParam.builder().commandCode(ComCode).projectNo(projectNo).controllerType(controllerType)
+                        .icCardNo("" + comOpen.vcNum)//鐢ㄦ埛鍗″簭鍒楀彿锛�17浣嶆暟瀛楋級锛�6瀛楄妭BCD锛�2瀛楄妭HEX锛�
+                        .orderNo(comOpen.orderNo)//璁㈠崟鍙凤紙16浣嶆暟瀛楋級
+                        .build();
                 res = super.pre3(sv, dto.getIntakeId(), dto.getOperator(), ComCode, comParam);
                 if (res == null) {
                     //鍙戦�佸懡浠ゅ墠-4锛氬噯澶嘑eature
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cdA3/CdSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cdA3/CdSv.java
index 7c37b0d..a4304df 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cdA3/CdSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cdA3/CdSv.java
@@ -1,13 +1,17 @@
 package com.dy.pipIrrRemote.monitor.p202404V201.cdA3;
 
 import com.dy.pipIrrGlobal.daoPr.PrWaterPriceMapper;
+import com.dy.pipIrrGlobal.daoRm.RmCommandOpenMapper;
 import com.dy.pipIrrGlobal.daoSe.SeVirtualCardMapper;
+import com.dy.pipIrrGlobal.pojoRm.RmCommandOpen;
 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.List;
 
 /**
  * @Author: liurunyu
@@ -20,10 +24,10 @@
 
     @Autowired
     protected SeVirtualCardMapper seVirtualCardDao ;
-
     @Autowired
     protected PrWaterPriceMapper prWaterPriceDao ;
-
+    @Autowired
+    protected RmCommandOpenMapper rmCommandOpenDao ;
     /**
      * 瑙i櫎铏氭嫙鍗¤鍗犵敤
      */
@@ -44,4 +48,13 @@
     public Long getVcIdByNum(String vcNum){
         return seVirtualCardDao.getVcIdByNum(vcNum) ;
     }
+
+
+    public RmCommandOpen getCommandOpen(Long intakeId){
+        List<RmCommandOpen> list = rmCommandOpenDao.selectByIntakeId(intakeId) ;
+        if(list != null && list.size() > 0){
+            return list.get(0) ;
+        }
+        return null ;
+    }
 }
\ No newline at end of file

--
Gitblit v1.8.0