From 71b9ac1d2459239d2c5340b384f1536b156fc003 Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期五, 20 六月 2025 08:39:50 +0800
Subject: [PATCH] 表阀一体机协议,根据王江海测试问题,进行修改完善

---
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_26_Down.java             |    4 -
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.properties                                        |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd65/CdCtrl.java |   16 ++++-
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/PipIrrRemoteApplication.java         |   19 ++++++
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmCommandHistoryMapper.xml                                  |   29 +++++++++
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd55/CdCtrl.java |   20 +++++-
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd5C/CdCtrl.java |   19 +++++-
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmCommandHistoryMapper.java                   |    8 ++
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/common/ComSv.java            |   16 +++++
 9 files changed, 118 insertions(+), 15 deletions(-)

diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_26_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_26_Down.java
index 29eff46..807ec32 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_26_Down.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_26_Down.java
@@ -61,7 +61,7 @@
                 throw new Exception("璁惧缁堢骞寸敤姘撮噺蹇呴』鏄�0~99999999鑼冨洿鍐呯殑鏁存暟") ;
             }
 
-            byte[] bs = new byte[14] ;
+            byte[] bs = new byte[13] ;
             int index = 0 ;
             bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16));
 
@@ -84,7 +84,6 @@
                 bs[index++] = 0 ;
             }
 
-            index ++ ;
             GlCreate.createPw(bs, index);
 
             index += 2 ;
@@ -105,6 +104,5 @@
 
         return bytes ;
     }
-
 
 }
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmCommandHistoryMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmCommandHistoryMapper.java
index d3a0a60..0e02366 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmCommandHistoryMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmCommandHistoryMapper.java
@@ -61,6 +61,14 @@
      */
     VoUnclosedParam getUncloseParam(@Param("onLineMap") String onLineMap, @Param("intakeId")Long intakeId);
 
+
+    /**
+     * 鏍规嵁鍙栨按鍙D鑾峰彇璇ュ彇姘村彛鏈叧闃�鍙傛暟锛屽钩鍙伴�夋嫨鍙栨按鍙e叧闃�浣跨敤
+     * @param intakeId
+     * @return
+     */
+    VoUnclosedParam getUncloseParamByCd(@Param("onLineMap") String onLineMap, @Param("intakeId")Long intakeId, @Param("code")String code);
+
     /**
      * 鏍规嵁鎸囧畾鏉′欢鑾峰彇鍛戒护鏃ュ織鍘嗗彶璁板綍鎬绘暟
      * @param params
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmCommandHistoryMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmCommandHistoryMapper.xml
index 25c58bc..7cd3168 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmCommandHistoryMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmCommandHistoryMapper.xml
@@ -323,6 +323,35 @@
         LIMIT 0,1
     </select>
 
+    <!--鏍规嵁鍙栨按鍙D鑾峰彇璇ュ彇姘村彛鏈叧闃�鍙傛暟-->
+    <select id="getUncloseParamByCd" resultType="com.dy.pipIrrGlobal.voRm.VoUnclosedParam">
+        SELECT com.rtu_addr               AS rtuAddr,
+               com.param ->> '$.orderNo'  AS orderNo,
+               com.param ->> '$.icCardNo' AS vcNum
+        FROM rm_command_history com
+            INNER JOIN pr_controller con ON com.rtu_addr = con.rtuAddr
+            INNER JOIN pr_intake inta ON con.intakeId = inta.id
+            INNER JOIN JSON_TABLE(
+        <!--      '[{"rtuAddr":"620201000029","isOnLine":true},{"rtuAddr":"4000004","isOnLine":true},{"rtuAddr":"dy20240325","isOnLine":false}]',-->
+        #{onLineMap},
+        '$[*]' COLUMNS (
+            rtuAddr VARCHAR(20) PATH '$.rtuAddr',
+            isOnLine BOOLEAN PATH '$.isOnLine'
+            )
+            ) rtus ON com.rtu_addr = rtus.rtuAddr
+        WHERE com.command_code = #{code}
+          AND con.intakeId = #{intakeId}
+          AND NOT EXISTS(
+                SELECT *
+                FROM rm_command_history
+                WHERE (result IS NULL OR result = 1)
+                  AND (command_code = '93' OR command_code = 'A3' OR command_code = '98')
+                  AND param ->> '$.orderNo' = com.param ->> '$.orderNo'
+            )
+        ORDER BY com.send_time DESC
+        LIMIT 0,1
+    </select>
+
     <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇鍛戒护鏃ュ織鍘嗗彶璁板綍鎬绘暟-->
     <select id="getCommandHistoriesCount" resultType="java.lang.Long">
         SELECT COUNT(*) AS recordCount
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 3d08c73..fdad0be 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
@@ -24,7 +24,7 @@
 #   鐢樺窞锛� 60103
 #   鍑夊窞锛� 60104
 #   閲戝窛锛� 60105
-tcp.port=60000ba_divide
+tcp.port=60000
 
 #RTU涓婅鏁版嵁鏈�灏忛棿闅旓紝澶т簬杩欎釜闂撮殧璁や负璁惧绂荤嚎浜嗭紝娴嬫帶涓�浣撻榾鏄�3锛岃〃闃�涓�浣撴満鏄�6锛岄粯璁ら噰鐢ㄦ椂闂存渶闀跨殑6
 base.upData.min.interval=6
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/PipIrrRemoteApplication.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/PipIrrRemoteApplication.java
index 9ff5fe0..d65516d 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/PipIrrRemoteApplication.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/PipIrrRemoteApplication.java
@@ -1,7 +1,9 @@
 package com.dy.pipIrrRemote;
 
 import com.dy.common.multiDataSource.EnableMultiDataSource;
+import lombok.extern.slf4j.Slf4j;
 import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.CommandLineRunner;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.context.annotation.ComponentScan;
@@ -10,7 +12,7 @@
 
 import org.springframework.boot.web.servlet.ServletComponentScan;
 import org.springframework.scheduling.annotation.EnableScheduling;
-
+@Slf4j
 @SpringBootApplication
 @EnableScheduling //鍚姩瀹氭椂浠诲姟锛屾湰妯″潡websocket鍙戦�佸績璺�
 @ServletComponentScan //鎵弿servlet锛屾湰妯″潡涓惎鍔╳ebsocket
@@ -40,3 +42,18 @@
     }
 
 }
+//public class PipIrrRemoteApplication implements CommandLineRunner {
+//
+//    public static void main(String[] args) {
+//        SpringApplication.run(PipIrrRemoteApplication.class, args);
+//    }
+//    //楠岃瘉log鏄惁杈撳嚭
+//    @Override
+//    public void run(String... args) throws Exception {
+//        log.trace("Trace level log");
+//        log.debug("Debug level log");
+//        log.info("Info level log");
+//        log.warn("Warn level log");
+//        log.error("Error level log");
+//    }
+//}
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 c9fc53e..b2e5864 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
@@ -93,4 +93,20 @@
         jsonArr.add(jsonObj);
         return rmCommandHistoryDao.getUncloseParam(jsonArr.toJSONString(), intakeId);
     }
+
+    /**
+     * 鏍规嵁鍙栨按鍙D鑾峰彇璇ュ彇姘村彛鏈叧闃�鍙傛暟锛屽钩鍙伴�夋嫨鍙栨按鍙e叧闃�浣跨敤
+     * @param intakeId
+     * @param rtuAddr
+     * @param code
+     * @return
+     */
+    public VoUnclosedParam selectUncloseParamByCd(Long intakeId, String rtuAddr, String code) {
+        JSONArray jsonArr = new JSONArray();
+        JSONObject jsonObj = new JSONObject();
+        jsonObj.put("rtuAddr", rtuAddr);
+        jsonObj.put("isOnLine", true);
+        jsonArr.add(jsonObj);
+        return rmCommandHistoryDao.getUncloseParamByCd(jsonArr.toJSONString(), intakeId, code);
+    }
 }
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 25b7859..cf37ff5 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
@@ -6,6 +6,7 @@
 import com.dy.common.aop.SsoAop;
 import com.dy.common.mw.protocol.Command;
 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;
@@ -100,16 +101,26 @@
     protected String dealComResult(String code, JSONObject resultData, Callback callback){
         String msg;
         if(resultData != null){
-            JSONArray codeData = resultData.getJSONArray("data") ;
+            JSONObject codeData = resultData.getJSONObject("data") ;
+            JSONArray codeDataArray = null ;
             if(codeData == null){
+                codeDataArray = resultData.getJSONArray("data") ;
+            }
+            if(codeData == null && codeDataArray == null){
                 msg = RtuSuccessMsg ;
             }else {
-                String json = codeData.toJSONString();
+                String json = null ;
+                if(codeData != null){
+                    json = codeData.toJSONString() ;
+                }else if(codeDataArray != null){
+                    json = codeDataArray.toJSONString() ;
+                }
                 List<DataCd55Vo> list = JSON.parseArray(json, DataCd55Vo.class) ;
                 if(list != null && list.size() > 0){
-                    msg = "" ;
+                    msg = "\n" ;
                     for(DataCd55Vo cvo : list){
-                        msg += cvo.toStr(false) + "\n";
+                        msg += cvo.toStr(false) ;
+                        msg += "\n" ;
                     }
                 }else{
                     msg = RtuSuccessMsg ;
@@ -120,4 +131,5 @@
         }
         return msg;
     }
+
 }
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 32aeccd..7fcf6c6 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
@@ -1,9 +1,11 @@
 package com.dy.pipIrrRemote.monitor.p202404V201.cd5C;
 
 import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONArray;
 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.DataCd55Vo;
 import com.dy.common.mw.protocol.p206V202404.upVos.DataCd5CVo;
 import com.dy.common.util.Callback;
 import com.dy.common.webUtil.BaseResponse;
@@ -100,15 +102,25 @@
         String msg;
         if(resultData != null){
             JSONObject codeData = resultData.getJSONObject("data") ;
+            JSONArray codeDataArray = null ;
             if(codeData == null){
+                codeDataArray = resultData.getJSONArray("data") ;
+            }
+            if(codeData == null && codeDataArray == null){
                 msg = RtuSuccessMsg ;
             }else {
-                String json = codeData.toJSONString();
+                String json = null ;
+                if(codeData != null){
+                    json = codeData.toJSONString() ;
+                }else if(codeDataArray != null){
+                    json = codeDataArray.toJSONString() ;
+                }
                 List<DataCd5CVo> list = JSON.parseArray(json, DataCd5CVo.class) ;
                 if(list != null && list.size() > 0){
-                    msg = "" ;
+                    msg = "\n" ;
                     for(DataCd5CVo cvo : list){
-                        msg += cvo.toStr(false) + "\n";
+                        msg += cvo.toStr(false) ;
+                        msg += "\n" ;
                     }
                 }else{
                     msg = RtuSuccessMsg ;
@@ -119,4 +131,5 @@
         }
         return msg;
     }
+
 }
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 2cc4b34..1b1a66f 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
@@ -1,6 +1,7 @@
 package com.dy.pipIrrRemote.monitor.p202404V201.cd65;
 
 import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
 import com.dy.common.aop.SsoAop;
 import com.dy.common.mw.protocol.Command;
@@ -22,7 +23,6 @@
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
-
 import java.util.List;
 
 /**
@@ -100,15 +100,25 @@
         String msg;
         if(resultData != null){
             JSONObject codeData = resultData.getJSONObject("data") ;
+            JSONArray codeDataArray = null ;
             if(codeData == null){
+                codeDataArray = resultData.getJSONArray("data") ;
+            }
+            if(codeData == null && codeDataArray == null){
                 msg = RtuSuccessMsg ;
             }else {
-                String json = codeData.toJSONString();
+                String json = null ;
+                if(codeData != null){
+                    json = codeData.toJSONString() ;
+                }else if(codeDataArray != null){
+                    json = codeDataArray.toJSONString() ;
+                }
                 List<DataCd65Vo> list = JSON.parseArray(json, DataCd65Vo.class) ;
                 if(list != null && list.size() > 0){
-                    msg = "" ;
+                    msg = "\n" ;
                     for(DataCd65Vo cvo : list){
                         msg += cvo.toStr(false) ;
+                        msg += "\n" ;
                     }
                 }else{
                     msg = RtuSuccessMsg ;

--
Gitblit v1.8.0