From 70f61b0638e32274d0e5f9b972ce2a18f139f1b4 Mon Sep 17 00:00:00 2001
From: zhubaomin <zhubaomin>
Date: 星期四, 12 六月 2025 09:51:30 +0800
Subject: [PATCH] Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV

---
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/web/com/CommandCtrl.java |   95 ++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 80 insertions(+), 15 deletions(-)

diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/web/com/CommandCtrl.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/web/com/CommandCtrl.java
index 3c4781f..a53defb 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/web/com/CommandCtrl.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/web/com/CommandCtrl.java
@@ -7,7 +7,9 @@
 import com.dy.rtuMw.server.forTcp.TcpSessionCache;
 import com.dy.rtuMw.server.local.CommandInnerDeaLer;
 import com.dy.rtuMw.server.local.ReturnCommand;
+import com.dy.rtuMw.server.mqtt.MqttManager;
 import com.dy.rtuMw.server.msCenter.MsCenterUnit;
+import com.dy.rtuMw.server.tasks.WebDownCom4MqttTask;
 import com.dy.rtuMw.server.tasks.WebDownComTask;
 import com.dy.common.mw.core.CoreUnit;
 import com.dy.common.mw.protocol.Command;
@@ -56,7 +58,21 @@
      */
     @GetMapping("/rtuLogFile")
     public void rtuLogFile(String rtuAddr, HttpServletRequest req, HttpServletResponse rep){
-        File logFile = ResourceUnit.getInstance().getLogFile(rtuAddr + ".log") ;
+        logFile(rtuAddr, req, rep) ;
+    }
+
+    /**
+     * 涓嬭浇鎺у埗鍣紙RTU锛変笂涓嬭鏁版嵁鐨刲og鏃ュ織鏂囦欢
+     * @param devId
+     * @param req
+     * @param rep
+     */
+    @GetMapping("/mqttDevLogFile")
+    public void mqttDevLogFile(String devId, HttpServletRequest req, HttpServletResponse rep){
+        logFile(devId, req, rep) ;
+    }
+    private void logFile(String fileName, HttpServletRequest req, HttpServletResponse rep){
+        File logFile = ResourceUnit.getInstance().getLogFile(fileName + ".log") ;
         if(logFile != null && logFile.exists()){
             //鍦⊿pring Boot涓紝application/octet-stream;charset=UTF-8閫氬父琛ㄧず鍝嶅簲鐨勫唴瀹规槸瀛楄妭娴侊紝
             //骞朵笖瀛楃闆嗘槸UTF-8銆傚浜庤繖绉嶇被鍨嬬殑鍝嶅簲锛孲pring Boot榛樿浣跨敤ByteArrayHttpMessageConverter鏉ュ鐞嗭紝
@@ -65,7 +81,7 @@
             //瀛楃闆嗛�氬父鐢ㄤ簬鏂囨湰鍐呭锛岃�宎pplication/octet-stream閫氬父鐢ㄤ簬浜岃繘鍒跺唴瀹癸紝鍥犳鍦ㄨ繖绉嶆儏鍐典笅鎸囧畾瀛楃闆嗗彲鑳芥槸涓嶅悎閫傜殑銆�
             //涓嶈繃锛屽鏋滀綘纭疄闇�瑕佸鐞嗗甫鏈夌壒瀹氬瓧绗﹂泦鐨刟pplication/octet-stream鍝嶅簲锛屼綘鍙兘闇�瑕佽嚜瀹氫箟HttpMessageConverter銆�
             rep.addHeader("content-type", "application/octet-stream;charset=UTF-8");
-            rep.addHeader("Content-Disposition", "attachment;fileName=" + (rtuAddr + ".log")) ;
+            rep.addHeader("Content-Disposition", "attachment;fileName=" + (fileName + ".log")) ;
             ServletOutputStream out = null;
             FileInputStream in = null ;
             try {
@@ -110,27 +126,38 @@
      */
     @GetMapping("/rtuLogText")
     public BaseResponse<List<String>> rtuLogText(String rtuAddr){
+        return logText(rtuAddr, true) ;
+    }
+    /**
+     * 涓嬭浇鎺у埗鍣紙RTU锛変笂涓嬭鏁版嵁鐨刲og鏃ュ織鏂囦欢
+     * @param devId
+     */
+    @GetMapping("/mqttDevLogText")
+    public BaseResponse<List<String>> mqttDevLogText(String devId){
+        return logText(devId, false) ;
+    }
+    /**
+     * 涓嬭浇鎺у埗鍣紙RTU锛変笂涓嬭鏁版嵁鐨刲og鏃ュ織鏂囦欢
+     * @param fileName
+     * @param reverseOrder
+     */
+    private BaseResponse<List<String>> logText(String fileName, boolean reverseOrder){
         List<String> list ;
-        File logFile = ResourceUnit.getInstance().getLogFile(rtuAddr + ".log") ;
+        File logFile = ResourceUnit.getInstance().getLogFile(fileName + ".log") ;
         if(logFile != null && logFile.exists()){
             BufferedReader reader = null ;
             try {
                 reader = new BufferedReader(new FileReader(logFile)) ;
-                //鏂扮殑瀹炵幇鏂规硶
                 Stream<String> linesStream = reader.lines() ;
-                //list = linesStream.toList() ; //鎸夊師鏉ラ『搴�
-                list = linesStream.sorted(Comparator.reverseOrder()).collect(Collectors.toList()) ;//鍊掑簭
-                /* 鍘熸潵鐨勫疄鐜版柟娉�
-                list = new ArrayList() ;
-                String line ;
-                while((line = reader.readLine()) != null){
-                    list.add(line) ;
+                if(reverseOrder){
+                    list = linesStream.sorted(Comparator.reverseOrder()).collect(Collectors.toList()) ;//鍊掑簭
+                }else{
+                    list = linesStream.toList() ; //鎸夊師鏉ラ『搴�
                 }
-                */
                 return BaseResponseUtils.buildSuccess(list);
             } catch (Exception e) {
                 list = new ArrayList() ;
-                list.add("璇诲彇鎺у埗鍣紙" + rtuAddr + "锛夌殑鏃ュ織鏂囦欢寮傚父锛�" + (e.getMessage() == null?"":("锛�" + e.getMessage()))) ;
+                list.add("璇诲彇鎺у埗鍣紙" + fileName + "锛夌殑鏃ュ織鏂囦欢寮傚父锛�" + (e.getMessage() == null?"":("锛�" + e.getMessage()))) ;
                 return BaseResponseUtils.buildSuccess(list);
             }finally{
                 if(reader != null){
@@ -142,7 +169,7 @@
             }
         }else{
             list = new ArrayList() ;
-            list.add("鏈緱鍒版帶鍒跺櫒锛�" + rtuAddr + "锛夌殑鏃ュ織鏂囦欢") ;
+            list.add("鏈緱鍒版帶鍒跺櫒锛�" + fileName + "锛夌殑鏃ュ織鏂囦欢") ;
             return BaseResponseUtils.buildSuccess(list);
         }
     }
@@ -247,6 +274,13 @@
             }catch(Exception e){
                 return BaseResponseUtils.buildError(ReturnCommand.errored("澶勭悊鍙戝悜RTU鐨勫閮ㄩ�忎紶鍛戒护鍑洪敊" + (e.getMessage() == null?"":("锛�" + e.getMessage())), com.getId(), com.getCode()) );
             }
+        }else if(commandType.equals(CommandType.mqttCommand)){
+            //鍙戝悜MQTT鐨勫閮ㄥ懡浠�
+            try{
+                return this.dealMqttCommand(com) ;
+            }catch(Exception e){
+                return BaseResponseUtils.buildError(ReturnCommand.errored("澶勭悊鍙戝悜RTU鐨勫閮ㄥ懡浠ゅ嚭閿�" + (e.getMessage() == null?"":("锛�" + e.getMessage())), com.getId(), com.getCode()) );
+            }
         }else if(commandType.equals(CommandType.resultCommand)){
             return BaseResponseUtils.buildError(ReturnCommand.errored("鍑洪敊锛岄�氫俊涓棿浠朵笉鎺ョ粨鏋滅被鍨嬬殑鍛戒护锛�", com.getId(), com.getCode()));
         }else{
@@ -330,10 +364,41 @@
             CoreUnit.getInstance().pushCoreTask(task);
         }catch(Exception e){
             log.error(e.getMessage(), e);
-            return BaseResponseUtils.buildError(ReturnCommand.successed("閫忎紶鍛戒护澶勭悊澶辫触" + e.getMessage(), command.getId(), command.getCode())) ;
+            return BaseResponseUtils.buildError(ReturnCommand.errored("閫忎紶鍛戒护澶勭悊澶辫触" + e.getMessage(), command.getId(), command.getCode())) ;
         }
 
         return BaseResponseUtils.buildSuccess(ReturnCommand.successed("閫忎紶鍛戒护宸叉帴鍙楋紝鍗冲皢鏋勯�犲苟涓嬪彂鍛戒护銆�", command.getId(), command.getCode()));
     }
 
+    /**
+     * 澶勭悊鍙戝悜RTU鐨勫閮ㄥ懡浠�
+     * @return 缁撴灉
+     */
+    private BaseResponse<Command> dealMqttCommand(Command command){
+        String rtuAddr = command.getRtuAddr() ;
+        if(rtuAddr == null || rtuAddr.trim().equals("")){
+            return BaseResponseUtils.buildError(ReturnCommand.errored("鍑洪敊锛岃澶嘔D涓虹┖锛�", command.getId(), command.getCode())) ;
+        }
+        if(!ServerProperties.mqttUnitEnable.booleanValue()){
+            return BaseResponseUtils.buildError(ReturnCommand.errored("鍑洪敊锛孧QTT杩炴帴妯″潡閰嶇疆鏈惎鍔紒", command.getId(), command.getCode())) ;
+        }
+        if(MqttManager.getInstance().poolIsClose()){
+            return BaseResponseUtils.buildError(ReturnCommand.errored("鍑洪敊锛孧QTT杩炴帴姹犳按鍒涘缓鎴愬姛锛�", command.getId(), command.getCode())) ;
+        }
+
+        //鐢熸垚寮傛浠诲姟
+        WebDownCom4MqttTask task = new WebDownCom4MqttTask() ;
+        task.data = command ;
+        try{
+            log.info("鏋勯�犱笅鍙慚QTT鍛戒护" + command.getCode() + "鐨勬牳蹇冧换鍔★紝骞舵斁鍏ヤ换鍔¢槦鍒椾腑");
+            CoreUnit.getInstance().pushCoreTask(task);
+        }catch(Exception e){
+            log.error(e.getMessage(), e);
+            return BaseResponseUtils.buildError(ReturnCommand.successed("MQTT鍛戒护澶勭悊澶辫触" + e.getMessage(), command.getId(), command.getCode())) ;
+        }
+        return BaseResponseUtils.buildSuccess(ReturnCommand.successed("MQTT鍛戒护宸叉帴鍙楋紝鍗冲皢鏋勯�犲苟涓嬪彂鍛戒护銆�", command.getId(), command.getCode()));
+    }
+
+
+
 }

--
Gitblit v1.8.0