From c42614978ff12013a1eabebd0289b27169a5784f Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期二, 06 五月 2025 17:25:56 +0800
Subject: [PATCH] 1、实现万功能token(0000-0000-1234-9876-5); 2、web端单独实现命令结果等待器,并相应修改相关部分; 3、web端实现透传命令; 4、修改一些不当注释; 5、优化一些代码。

---
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/command/ComSupport.java                       |   10 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/ReturnCommand.java            |   24 +-
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/DataV1.java                      |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/ComTransDto.java       |   24 ++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/rtuMw/Web2RtuMw.java                          |   62 +++---
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Data.java                               |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/ComTransParam.java     |   16 +
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/CommandResultCtrl.java  |   11 
 pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java                          |   12 +
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/web/com/CommandCtrl.java                   |    2 
 pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml                                       |    1 
 pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/CommandResultCtrl.java |    9 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/command/CommandSv.java                        |  146 ++++++++++++++++
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/ComTransCtrl.java      |  135 ++++++++++++++
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/ComTransSv.java        |   45 +++-
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/command/ComResultWait.java                    |   28 +++
 16 files changed, 453 insertions(+), 76 deletions(-)

diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Data.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Data.java
index fae4d48..1752c65 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Data.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Data.java
@@ -18,7 +18,7 @@
 	public String protocol ;//鏁版嵁鎵�瀵瑰簲鐨勫崗璁悕绉�
 	public Short  protocolVer;//鏁版嵁鎵�瀵瑰簲鐨勫崗璁増鏈彿锛�1~255锛�
 	public String code ;//鏁版嵁鎵�瀵瑰簲鐨勫姛鑳界爜:
-	public Object subData ;//瀵瑰簲鍚勪釜鍔熻兘鐮佺殑鍏蜂綋鏁版嵁
+	public Object subData ;//瀵瑰簲鍚勪釜鍗忚鏁版嵁
 	public String hex ;//涓婃姤鏁版嵁鐨勫崄鍏繘鍒�
 
 	public String toString() {
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/DataV1.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/DataV1.java
index d8b5251..23e3ef1 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/DataV1.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/DataV1.java
@@ -9,7 +9,7 @@
 	
 	public String rtuAddr ;//RtuAddr
 
-	public Object subData ;
+	public Object subData ;//鍔熻兘鐮佹暟鎹�
 
 	public String dt ;//閫氫俊涓棿浠朵骇鐢熺殑鏀舵姤鏃堕棿(yyyy-MM-dd hh:mm:ss)
 
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/command/ComResultWait.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/command/ComResultWait.java
new file mode 100644
index 0000000..8cd8151
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/command/ComResultWait.java
@@ -0,0 +1,28 @@
+package com.dy.pipIrrGlobal.command;
+
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/5/6 16:33
+ * @Description
+ */
+public class ComResultWait {
+
+    //ConcurrentHashMap鏄嚎绋嬪畨鍏ㄧ殑
+    private static final Map<Long, CompletableFuture> features = new ConcurrentHashMap<>();
+
+    public static void put(Long key, CompletableFuture value) {
+        features.put(key, value);
+    }
+    public static CompletableFuture get(Long key) {
+        return features.get(key);
+    }
+
+    public static void remove(Long key){
+        features.remove(key) ;
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/command/ComSupport.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/command/ComSupport.java
index 646d9be..a066651 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/command/ComSupport.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/command/ComSupport.java
@@ -66,10 +66,6 @@
 
     protected String commandTypeOuter = CommandType.outerCommand;
 
-    // 瀛樺偍瀹炰緥鍖栫殑 CompletableFuture<Data> 瀵硅薄
-    protected static Map<Long, Object> features = new HashMap<>();
-    //protected static Boolean setuped = false;
-
     @Autowired
     private RestTemplate restTemplate;
 
@@ -212,19 +208,19 @@
      */
     protected BaseResponse<Data> dealWithCallBack(Long comId, Command com) {
         CompletableFuture<JSONObject> feature = new CompletableFuture<>();
-        features.put(comId, feature);
+        ComResultWait.put(comId, feature);
         try {
             // 鍙戦�佸懡浠�
             JSONObject response_SendCom = (JSONObject) JSON.toJSON(sendCom2Mw(com));
             if (response_SendCom == null || !response_SendCom.getString("code").equals("0001")) {
                 // 璇锋眰澶辫触锛孯TU鏈笂绾匡紝娓呴櫎feature
-                features.remove(comId);
+                ComResultWait.remove(comId);
                 JSONObject job_param = response_SendCom.getJSONObject("content").getJSONObject("param");
                 return BaseResponseUtils.buildErrorMsg(job_param.getString("message"));
             }
 
             JSONObject resultData = feature.get(180, TimeUnit.SECONDS);
-            features.remove(comId);
+            ComResultWait.remove(comId);
 
             Long commandId = resultData.getLong("commandId");
             if (commandId.equals(comId)) {
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
new file mode 100644
index 0000000..9bf6199
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/command/CommandSv.java
@@ -0,0 +1,146 @@
+package com.dy.pipIrrGlobal.command;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.dy.common.mw.protocol.Command;
+import com.dy.common.mw.protocol.CommandBackParam;
+import com.dy.common.mw.protocol.p206V1.CodeV1;
+import com.dy.common.mw.protocol.p206V1.ProtocolConstantV206V1;
+import com.dy.common.mw.protocol.p206V2.CodeV2;
+import com.dy.common.mw.protocol.p206V2.ProtocolConstantV206V2;
+import com.dy.common.mw.protocol.p206V202404.CodeV202404;
+import com.dy.common.mw.protocol.p206V202404.ProtocolConstantV206V202404;
+import com.dy.common.webUtil.BaseResponse;
+import com.dy.pipIrrGlobal.daoPr.PrControllerMapper;
+import com.dy.pipIrrGlobal.daoRm.RmCommandHistoryMapper;
+import com.dy.pipIrrGlobal.pojoPr.PrController;
+import com.dy.pipIrrGlobal.pojoRm.RmCommandHistory;
+import com.dy.pipIrrGlobal.rtuMw.Web2RtuMw;
+
+import java.util.Date;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/5/6 11:41
+ * @Description
+ */
+public class CommandSv extends Web2RtuMw {
+
+
+    /**
+     * 浠庢暟鎹簱涓煡璇㈡帶鍒跺櫒瀵硅薄
+     * @param prControllerDao
+     * @param intakeId
+     * @return
+     */
+    public PrController getRtu(PrControllerMapper prControllerDao, Long intakeId){
+        return prControllerDao.getRtu(intakeId, null);
+    }
+
+    /**
+     * 妫�鏌ュ崗璁槸鍚︽敮鎸�
+     * @param ctrlPo
+     * @return
+     */
+    public String checkProtocol(PrController ctrlPo){
+        if(!ctrlPo.getProtocol().equals(ProtocolConstantV206V1.protocolName)
+                && !ctrlPo.getProtocol().equals(ProtocolConstantV206V2.protocolName)
+                && !ctrlPo.getProtocol().equals(ProtocolConstantV206V202404.protocolName)) {
+            return "瀵瑰簲鎺у埗鍣ㄥ崗璁�" + ctrlPo.getProtocol() + "鏈疄鐜板懡浠ゅ彂閫侀�昏緫" ;
+        }
+        return null ;
+    }
+
+    /**
+     * 鏍规嵁鍗忚鑾峰彇鍛戒护鍚嶇О
+     * @param nowComCode
+     * @param ctrlPo
+     * @return
+     */
+    public String getCommandName(String nowComCode, PrController ctrlPo){
+        if(ctrlPo.getProtocol().equals(ProtocolConstantV206V1.protocolName)) {
+            return CodeV1.getCodeName(nowComCode) ;
+        }else if(ctrlPo.getProtocol().equals(ProtocolConstantV206V2.protocolName)) {
+            return CodeV2.getCodeName(nowComCode) ;
+        }else if(ctrlPo.getProtocol().equals(ProtocolConstantV206V202404.protocolName)) {
+            return CodeV202404.getCodeName(nowComCode) ;
+        }
+        return null ;
+    }
+
+    /**
+     * 淇濆瓨鍛戒护鍘嗗彶璁板綍
+     * @param rmCommandHistoryDao
+     * @param comId
+     * @param protocol
+     * @param commandCode
+     * @param commandName
+     * @param intakeId
+     * @param rtuAddr
+     * @param param
+     * @param operator
+     * @return
+     */
+    public RmCommandHistory saveComHistoryPo(RmCommandHistoryMapper rmCommandHistoryDao,
+                                             Long comId,
+                                             String protocol,
+                                             String commandCode,
+                                             String commandName,
+                                             Long intakeId,
+                                             String rtuAddr,
+                                             Object param,
+                                             Long operator) {
+        RmCommandHistory po = new RmCommandHistory();
+        po.setComId(comId);
+        po.setCommandCode(commandCode);
+        po.setCommandName(commandName);
+        po.setIntakeId(intakeId);
+        po.setRtuAddr(rtuAddr);
+        po.setProtocol(protocol);
+        po.setParam((JSONObject) JSON.toJSON(param));
+        po.setSendTime(new Date());
+        po.setOperator(operator);
+        rmCommandHistoryDao.insertSelective(po) ;
+        return po;
+    }
+
+    /**
+     * 澶勭悊閫氫俊涓棿浠惰繑鍥炵殑鍛戒护澶勭悊缁撴灉
+     * @param res
+     * @return
+     */
+    public String dealMwDealResponse(BaseResponse res){
+        if(res != null){
+            Command reCom = JSON.parseObject(res.getContent() == null ? null : JSON.toJSONString(res.getContent()), Command.class) ;
+            CommandBackParam bakParam = JSON.parseObject((reCom== null || reCom.param == null) ? null : JSON.toJSONString(reCom.param), CommandBackParam.class) ;
+            if(res.isSuccess()){
+                if(bakParam != null){
+                    if(bakParam.getSuccess().booleanValue()){
+                        //閫氫俊涓棿浠舵垚鍔熷鐞嗕簡鍛戒护
+                        //绛夊緟鎺у埗鍣ㄦ帴鏀跺苟鎵ц鍛戒护鍚庣殑搴旂瓟锛岀劧鍚庨�氫俊涓棿浠堕�氱煡鏈ā鍧�
+                        return null ;
+                    }else{
+                        return "閫氫俊涓棿浠跺鐞嗗懡浠ゅけ璐ワ紝澶辫触淇℃伅锛�" + bakParam.getMessage();
+                    }
+                }else{
+                    return "閫氫俊涓棿浠惰繑鍥炲懡浠ょ粨鏋滀腑涓嶅寘鍚獵ommandBackParam绫诲瀷鍙傛暟";
+                }
+            }else{
+                if(bakParam != null){
+                    if(bakParam.getSuccess().booleanValue()){
+                        //閫氫俊涓棿浠舵垚鍔熷鐞嗕簡鍛戒护
+                        //绛夊緟鎺у埗鍣ㄦ帴鏀跺苟鎵ц鍛戒护鍚庣殑搴旂瓟锛岀劧鍚庨�氫俊涓棿浠堕�氱煡鏈ā鍧�
+                        return "閫氫俊涓棿浠跺鐞嗗懡浠ゅけ璐ワ紝澶辫触淇℃伅锛�" + (res.getMsg() == null? "" : ("锛�" + res.getMsg())) ;
+                    }else{
+                        return "閫氫俊涓棿浠跺鐞嗗懡浠ゅけ璐ワ紝澶辫触淇℃伅锛�" + bakParam.getMessage();
+                    }
+                }else{
+                    return "閫氫俊涓棿浠跺鐞嗗懡浠ゅけ璐ワ紝澶辫触淇℃伅锛�" + (res.getMsg() == null? "" : ("锛�" + res.getMsg())) ;
+                }
+            }
+        }else{
+            return "閫氫俊涓棿浠惰繑鍥炲懡浠ょ粨鏋滀负null";
+        }
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/rtuMw/Web2RtuMw.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/rtuMw/Web2RtuMw.java
index 41de437..42d074e 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/rtuMw/Web2RtuMw.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/rtuMw/Web2RtuMw.java
@@ -31,20 +31,20 @@
     private static final String pro_mw = "mw";
     private static final String pro_url = "url";
 
-    protected static final String ContextComSend = "/rtuMw/com/send";
+    public static final String ContextComSend = "/rtuMw/com/send";
 
-    protected static final String ContextRtuLogFile = "/rtuMw/com/rtuLogFile";
-    protected static final String ContextRtuLogText = "/rtuMw/com/rtuLogText";
+    public static final String ContextRtuLogFile = "/rtuMw/com/rtuLogFile";
+    public static final String ContextRtuLogText = "/rtuMw/com/rtuLogText";
 
-    protected static final String ContextRegisterMsReceiverWebUrl = "/rtuMw/com/registerMsReceiverWebUrl";
-    protected static final String ContextUgTaskSend = "/rtuMw/com/upgradeRtu";
-    protected static final String ContextUgForceOver = "/rtuMw/com/ugForceOver";
+    public static final String ContextRegisterMsReceiverWebUrl = "/rtuMw/com/registerMsReceiverWebUrl";
+    public static final String ContextUgTaskSend = "/rtuMw/com/upgradeRtu";
+    public static final String ContextUgForceOver = "/rtuMw/com/ugForceOver";
     /**
      * 寰楀埌鍚戦�氫俊涓棿浠跺彂閫佹暟鎹殑URL
      * @param env
      * @return
      */
-    protected String get2MwUrl(Environment env) {
+    public String get2MwUrl(Environment env) {
         return env.getProperty(pro_mw + "." + DataSourceContext.get() + "." + pro_url);
     }
     /**
@@ -53,76 +53,76 @@
      * @param orgTag
      * @return
      */
-    protected String get2MwUrl(Environment env, String orgTag) {
+    public String get2MwUrl(Environment env, String orgTag) {
         return env.getProperty(pro_mw + "." + orgTag + "." + pro_url);
     }
     /**
-     * 寰楀埌鍚戦�氫俊涓棿浠跺彂閫佸己鍒跺仠姝㈠崌绾х殑鍛戒护URL
+     * 寰楀埌鍚戦�氫俊涓棿浠跺彂閫佹暟鎹殑URL
      * @param env
      * @param context
      * @return
      */
-    protected String get2MwRequestUrl(Environment env, String context) {
+    public String get2MwRequestUrl(Environment env, String context) {
         return get2MwUrl(env) + context;
     }
     /**
-     * 寰楀埌鍚戦�氫俊涓棿浠跺彂閫佸己鍒跺仠姝㈠崌绾х殑鍛戒护URL
+     * 寰楀埌鍚戦�氫俊涓棿浠跺彂閫佹暟鎹殑URL
      * @param env
      * @param orgTag
      * @param context
      * @return
      */
-    protected String get2MwRequestUrl(Environment env, String orgTag, String context) {
+    public String get2MwRequestUrl(Environment env, String orgTag, String context) {
         return get2MwUrl(env, orgTag) + context;
     }
 
     /**
-     * 鍚戦�氫俊涓棿浠跺彂閫乺tu杩滅▼鍗囩骇浠诲姟
+     * 鍚戦�氫俊涓棿浠跺彂閫丳ost璇锋眰
      * @param restTemplate SpringBoot鐨凴estTemplate
      * @param toMwUrl 鍒伴�氫俊涓棿浠剁殑web璇锋眰Url
-     * @param body 璇锋眰鏁版嵁
+     * @param body 鏁版嵁
      * @return
      */
-    protected BaseResponse sendPostRequest2Mw(RestTemplate restTemplate, String toMwUrl, Object body) {
+    public BaseResponse sendPostRequest2Mw(RestTemplate restTemplate, String toMwUrl, Object body) {
         String url = UriComponentsBuilder.fromUriString(toMwUrl)
                 .build()
                 .toUriString();
         HttpHeaders headers = new HttpHeaders();
         HttpEntity<?> httpEntity = new HttpEntity<>(body, headers);
-        ResponseEntity<BaseResponse> response = null;
+        ResponseEntity<BaseResponse> resEntity = null;
         try {
             // 閫氳繃Post鏂瑰紡璋冪敤鎺ュ彛
-            response = restTemplate.exchange(url, HttpMethod.POST, httpEntity, BaseResponse.class);
+            resEntity = restTemplate.exchange(url, HttpMethod.POST, httpEntity, BaseResponse.class);
         } catch (Exception e) {
             e.printStackTrace();
             return BaseResponseUtils.buildError("鍚庣绯荤粺鍑洪敊锛屼腑闂翠欢璋冪敤寮傚父");
         }
-        if(response == null){
+        if(resEntity == null){
             return BaseResponseUtils.buildError("鍚庣绯荤粺鍑洪敊锛屼腑闂翠欢璋冪敤寮傚父");
         }else{
-            return response.getBody();
+            return resEntity.getBody();
         }
     }
 
     /**
-     * 鍚戦�氫俊涓棿浠跺彂閫乺tu杩滅▼鍗囩骇浠诲姟
+     * 鍚戦�氫俊涓棿浠跺彂閫丟et璇锋眰
      * @param restTemplate SpringBoot鐨凴estTemplate
      * @param toMwUrl 鍒伴�氫俊涓棿浠剁殑web璇锋眰Url
      * @return
      */
-    protected BaseResponse sendGetRequest2Mw(RestTemplate restTemplate, String toMwUrl) {
+    public BaseResponse sendGetRequest2Mw(RestTemplate restTemplate, String toMwUrl) {
         return sendGetRequest2Mw(restTemplate, toMwUrl, null);
     }
 
     /**
-     * 鍚戦�氫俊涓棿浠跺彂閫乺tu杩滅▼鍗囩骇浠诲姟
+     * 鍚戦�氫俊涓棿浠跺彂閫丟et璇锋眰
      * @param restTemplate SpringBoot鐨凴estTemplate
      * @param toMwUrl 鍒伴�氫俊涓棿浠剁殑web璇锋眰Url
      * @param paramName 鍙傛暟鍚嶇О
      * @param paramValue 鍙傛暟
      * @return
      */
-    protected BaseResponse sendGetRequest2Mw(RestTemplate restTemplate, String toMwUrl, String paramName, String paramValue) {
+    public BaseResponse sendGetRequest2Mw(RestTemplate restTemplate, String toMwUrl, String paramName, String paramValue) {
         String url = UriComponentsBuilder.fromUriString(toMwUrl)
                 .build()
                 .toUriString();
@@ -135,13 +135,13 @@
     }
 
     /**
-     * 鍚戦�氫俊涓棿浠跺彂閫乺tu杩滅▼鍗囩骇浠诲姟
+     * 鍚戦�氫俊涓棿浠跺彂閫丟et璇锋眰
      * @param restTemplate SpringBoot鐨凴estTemplate
      * @param toMwUrl 鍒伴�氫俊涓棿浠剁殑web璇锋眰Url
      * @param params 鍙傛暟闆嗗悎锛屽弬鏁板悕绉版槸key锛屽弬鏁版槸value
      * @return
      */
-    protected BaseResponse sendGetRequest2Mw(RestTemplate restTemplate, String toMwUrl, Map<String, String> params) {
+    public BaseResponse sendGetRequest2Mw(RestTemplate restTemplate, String toMwUrl, Map<String, String> params) {
         String url = UriComponentsBuilder.fromUriString(toMwUrl)
                 .build()
                 .toUriString();
@@ -159,12 +159,12 @@
     }
 
     /**
-     * 鍚戦�氫俊涓棿浠跺彂閫乺tu杩滅▼鍗囩骇浠诲姟
+     * 鍚戦�氫俊涓棿浠跺彂閫丟et璇锋眰
      * @param restTemplate SpringBoot鐨凴estTemplate
      * @param builder
      * @return
      */
-    protected BaseResponse sendGetRequest2Mw(RestTemplate restTemplate, UriComponentsBuilder builder) {
+    public BaseResponse sendGetRequest2Mw(RestTemplate restTemplate, UriComponentsBuilder builder) {
         ResponseEntity<BaseResponse> response;
         try {
             // 閫氳繃Get鏂瑰紡璋冪敤鎺ュ彛
@@ -188,7 +188,7 @@
      * @param code 鍛戒护code
      * @return
      */
-    protected Command createOuterCommand(String comId, String code) {
+    public Command createOuterCommand(String comId, String code) {
         Command com = new Command();
         com.id = comId;
         com.code = code ;
@@ -201,7 +201,7 @@
      * @param code 鍛戒护code
      * @return
      */
-    protected Command createOuterTransparentCommand(String comId, String code) {
+    public Command createOuterTransparentCommand(String comId, String code) {
         Command com = new Command();
         com.id = comId;
         com.code = code ;
@@ -210,11 +210,11 @@
     }
 
     /**
-     * 鍒涘缓鍐呴儴
+     * 鍒涘缓鍐呴儴鍛戒护
      * @param code 鍛戒护code
      * @return
      */
-    protected Command createInnerCommand(String code) {
+    public Command createInnerCommand(String code) {
         Command com = new Command();
         com.id = Command.defaultId;
         com.code = code ;
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml b/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
index 0c1679a..89434e4 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
@@ -365,6 +365,7 @@
     ugCallbackUrl_rm: "http://127.0.0.1:8081/remote/rtuUpgradeStateReceiver/receive"
     #寰俊灏忕▼搴忓簲鐢ㄤ腑Rtu杩滅▼鍛戒护缁撴灉鍥炶皟鍦板潃
     rtuCallbackUrl_wx: "http://127.0.0.1:8087/wx/comRes/receive"
+    waitMwRtnResultTimeout: 60 #绛夊緟涓棿浠惰繑鍥炵粨鏋滆秴鏃舵椂闂达紝鍗曚綅绉掗挓
 
 #涓嶈繘琛寀serToken杩囨护鐨刄RL锛孈ConfigurationProperties瑕佹眰tokennofilter涓墍鏈夊瓧姣嶉兘灏忓啓
 tokennofilter:
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/ReturnCommand.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/ReturnCommand.java
index f07c999..3a80412 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/ReturnCommand.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/ReturnCommand.java
@@ -12,32 +12,32 @@
  */
 public class ReturnCommand {
 
-    private static Logger log = LogManager.getLogger(ReturnCommand.class) ;
+    private static Logger log = LogManager.getLogger(ReturnCommand.class);
 
     /**
      * 澶勭悊鍛戒护鎴愬姛
      * @param message
      */
-    public static Command successed(String message, String commandId, String code, Object attachment){
-        log.info(message) ;
-        Command command = new Command().createReturnSuccessCommand(message, commandId, code) ;
-        command.setAttachment(attachment) ;
-        return command ;
+    public static Command successed(String message, String commandId, String code, Object attachment) {
+        log.info(message);
+        Command command = new Command().createReturnSuccessCommand(message, commandId, code);
+        command.setAttachment(attachment);
+        return command;
     }
     /**
      * 澶勭悊鍛戒护鎴愬姛
      * @param message
      */
-    public static Command successed(String message, String commandId, String code){
-        log.info(message) ;
-        return new Command().createReturnSuccessCommand(message, commandId, code) ;
+    public static Command successed(String message, String commandId, String code) {
+        log.info(message);
+        return new Command().createReturnSuccessCommand(message, commandId, code);
     }
     /**
      * 澶勭悊鍛戒护鍙戠敓閿欒
      * @param message
      */
-    public static Command errored(String message, String commandId, String code){
-        log.error(message) ;
-        return new Command().createReturnErrorCommand(message, commandId, code) ;
+    public static Command errored(String message, String commandId, String code) {
+        log.error(message);
+        return new Command().createReturnErrorCommand(message, commandId, code);
     }
 }
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..5b26ebc 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
@@ -330,7 +330,7 @@
             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()));
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/CommandResultCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/CommandResultCtrl.java
index 21d02e1..a6dbe37 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/CommandResultCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/CommandResultCtrl.java
@@ -3,6 +3,7 @@
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
 import com.dy.common.mw.protocol.Data;
+import com.dy.pipIrrGlobal.command.ComResultWait;
 import com.dy.pipIrrGlobal.command.ComSupport;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.http.MediaType;
@@ -27,7 +28,7 @@
     @PostMapping(path = "receive", consumes = MediaType.APPLICATION_JSON_VALUE)
     public void receive(@RequestBody Data data) {
         JSONObject job_data = (JSONObject) JSON.toJSON(data);
-        String job_dataS = job_data.toJSONString();
+        //String job_dataS = job_data.toJSONString();
         JSONObject job_subData = job_data.getJSONObject("subData").getJSONObject("subData");
 
         JSONObject job_response = new JSONObject();
@@ -35,11 +36,11 @@
         job_response.put("commandCode", job_data.getString("code"));
         job_response.put("commandId", job_data.getString("commandId"));
 
-        CompletableFuture<JSONObject> feature = (CompletableFuture<JSONObject>) features.get(job_data.getLong("commandId"));
+        CompletableFuture<JSONObject> feature = (CompletableFuture<JSONObject>) ComResultWait.get(job_data.getLong("commandId"));
         if(feature != null) {
             feature.complete(job_response);
-        }else{
-            feature.complete(new JSONObject());
-        }
+        }//else{
+         //   feature.complete(new JSONObject());
+         //}
     }
 }
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 a1e4b11..2c87d06 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
@@ -1,10 +1,32 @@
 package com.dy.pipIrrRemote.monitor;
 
+import com.alibaba.fastjson2.JSONObject;
+import com.dy.common.aop.SsoAop;
+import com.dy.common.mw.protocol.Command;
+import com.dy.common.util.IDLongGenerator;
+import com.dy.common.util.NumUtil;
+import com.dy.common.webUtil.BaseResponse;
+import com.dy.common.webUtil.BaseResponseUtils;
+import com.dy.pipIrrGlobal.command.ComResultWait;
+import com.dy.pipIrrGlobal.pojoPr.PrController;
 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.beans.factory.annotation.Value;
+import org.springframework.core.env.Environment;
+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;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.Objects;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.TimeUnit;
 
 /**
  * @Author: liurunyu
@@ -15,11 +37,120 @@
 @Slf4j
 @Tag(name = "杩滅▼閫忎紶鍛戒护", description = "杩滅▼閫忎紶鍛戒护")
 @RestController
-@RequestMapping(path = "command")
+@RequestMapping(path = "comTrans")
 @RequiredArgsConstructor
 public class ComTransCtrl {
 
-    private final ComTransSv comSv;
+    @Autowired
+    private Environment env ;
 
+    @Autowired
+    private RestTemplate restTemplate ;
+
+    @Value("${mw.waitMwRtnResultTimeout}")
+    private int waitMwRtnResultTimeout ;
+
+    @Value("${mw.rtuCallbackUrl_rm}")
+    private String rtuResultSendWebUrl;
+
+    @Autowired
+    private ComTransSv comSv;
+
+    /**
+     * 鍚戣澶囷紙鎺у埗鍣級鍙戦�侀�忎紶鍛戒护
+     * @param dto 鍓嶇鍙戞潵鐨勫�煎璞�
+     * @param bindingResult 瀵筪to楠岃瘉鐨勭粨鏋�
+     * @return 杩斿洖鍓嶇
+     */
+    @PostMapping(path = "send", consumes = MediaType.APPLICATION_JSON_VALUE)
+    @SsoAop()
+    public BaseResponse<Object> send(@RequestBody @Valid ComTransDto dto, BindingResult bindingResult) {
+        if (bindingResult != null && bindingResult.hasErrors()) {
+            return BaseResponseUtils.buildError(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+        }
+        String msg = this.checkDto(dto) ;
+        if(msg != null){
+            return BaseResponseUtils.buildError(msg) ;
+        }
+        //寰楀埌鎺у埗鍣ㄥ璞�
+        PrController ctrlPo = comSv.getRtu(dto.getIntakeId());
+        if (ctrlPo == null) {
+            return BaseResponseUtils.buildError("浠庢暟鎹簱涓湭寰楀埌鎺у埗鍣ㄦ暟鎹�") ;
+        }
+        //妫�鏌ュ崗璁�
+        msg = comSv.checkProtocol(ctrlPo) ;
+        if(msg != null) {
+            return BaseResponseUtils.buildError(msg) ;
+        }
+        //寰楀埌鍔熻兘鐮佸搴旂殑鍛戒护鍚嶇О
+        String comName = comSv.getCommandName(dto.comCode, ctrlPo) ;
+        if(comName == null) {
+            return BaseResponseUtils.buildError("鏈緱鍒板姛鑳界爜瀵瑰簲鍛戒护鍚嶇О") ;
+        }
+        Long comId = new IDLongGenerator().generate();
+        String comData = dto.comData.toUpperCase() ;
+        //鐢熸垚骞朵繚瀛樺懡浠ゆ棩蹇�
+        comSv.saveComHistoryPo(comId, ctrlPo.getProtocol(), dto.comCode, "閫忎紶锛�" + comName + "锛�",
+                dto.getIntakeId(), ctrlPo.getRtuAddr(), new ComTransParam(dto.comCode, comData), dto.getOperator());
+        try{
+            CompletableFuture<JSONObject> feature = new CompletableFuture<>();
+            ComResultWait.put(comId, feature);
+            //鍒涘缓澶栭儴閫忎紶鍛戒护锛堝彂缁欐帶鍒跺櫒锛�
+            Command com = comSv.createOuterTransparentCommand("" + comId, dto.comCode);
+            com.rtuAddr = ctrlPo.getRtuAddr() ;
+            com.attachment = comData ;
+            com.rtuResultSendWebUrl = rtuResultSendWebUrl;
+            //寰楀埌閫氫俊涓棿浠跺彂閫佸懡浠ょ殑web URL
+            String rqUrl = comSv.get2MwRequestUrl(this.env, comSv.ContextComSend) ;
+            //鍚戦�氫俊涓棿浠跺彂閫亀eb璇锋眰
+            BaseResponse res = comSv.sendPostRequest2Mw(restTemplate, rqUrl, com) ;
+            //澶勭悊閫氫俊涓棿浠跺web璇锋眰鐨勫搷搴�
+            msg = comSv.dealMwDealResponse(res) ;
+            if(msg != null) {
+                return BaseResponseUtils.buildError(msg) ;
+            }else{
+                try{
+                    //绛夊緟閫氫俊涓棿浠堕�氱煡鎺у埗鍣ㄦ墽琛屽懡浠や笂琛屾暟鎹紙鍛戒护缁撴灉锛�
+                    JSONObject resultData = feature.get(waitMwRtnResultTimeout, TimeUnit.SECONDS);
+                    Long commandId = resultData.getLong("commandId");
+                    if (commandId.equals(comId)) {
+                        return BaseResponseUtils.buildSuccess(resultData);
+                    } else {
+                        return BaseResponseUtils.buildSuccess("鎺у埗鍣ㄦ墽琛屽懡浠ゆ垚鍔�");
+                    }
+                }catch (Exception e){
+                    return BaseResponseUtils.buildFail("绛夊緟閫氫俊涓棿浠堕�氱煡鍛戒护缁撴灉瓒呮椂鎴栧紓甯�");
+                }
+            }
+        }catch (Exception e){
+            return BaseResponseUtils.buildFail("鏈嶅姟绔瀯閫犲苟鍚戦�氫俊涓棿浠跺彂閫佽姹傛椂寮傚父" + (e.getMessage() == null?"":e.getMessage())) ;
+        }finally {
+            try {
+                //鏈�鍚庢竻闄ompletableFuture缂撳瓨
+                ComResultWait.remove(comId);
+            }catch (Exception ee){}
+        }
+    }
+
+    /**
+     * 楠岃瘉
+     * @param dto
+     * @return
+     */
+    private String checkDto(ComTransDto dto){
+        if(!NumUtil.isHex(dto.comCode)){
+            return "鍛戒护鍔熻兘鐮佷笉鏄崄鍏繘鍒舵暟";
+        }
+        if(!NumUtil.isHex(dto.comData)){
+            return "鍛戒护鏁版嵁涓嶆槸鍗佸叚杩涘埗鏁�";
+        }
+        if(dto.comData.length() % 2 != 0){
+            return "鍛戒护鏁版嵁涓嶅畬澶囷紙闀垮害涓嶆槸鍋舵暟锛�";
+        }
+        if(!dto.comData.contains(dto.comCode)){
+            return "鍛戒护鏁版嵁涓笉鍖呭惈鍔熻兘鐮�";
+        }
+        return null ;
+    }
 
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/ComTransDto.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/ComTransDto.java
new file mode 100644
index 0000000..ef5d3b2
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/ComTransDto.java
@@ -0,0 +1,24 @@
+package com.dy.pipIrrRemote.monitor;
+
+import com.dy.pipIrrRemote.common.dto.DtoBase;
+import jakarta.validation.constraints.NotEmpty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/5/6 10:21
+ * @Description
+ */
+
+@Data
+@EqualsAndHashCode(callSuper=true)
+public class ComTransDto extends DtoBase {
+    public static final long serialVersionUID = 202505061021001L;
+
+    @NotEmpty(message = "鍛戒护鍔熻兘鐮佷笉鑳戒负绌�")
+    public String comCode ;//鍛戒护鍔熻兘鐮侊紝瑕佹眰鏄崄鍏繘鍒�
+
+    @NotEmpty(message = "鍛戒护鏁版嵁涓嶈兘涓虹┖")
+    public String comData ;//鍛戒护鏁版嵁锛岃姹傛槸鍗佸叚杩涘埗
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/ComTransParam.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/ComTransParam.java
new file mode 100644
index 0000000..6e3b665
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/ComTransParam.java
@@ -0,0 +1,16 @@
+package com.dy.pipIrrRemote.monitor;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/5/6 11:36
+ * @Description
+ */
+@Data
+@AllArgsConstructor
+public class ComTransParam {
+    public String commandCode;
+    public String data ;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/ComTransSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/ComTransSv.java
index 2c49714..50898f8 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/ComTransSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/ComTransSv.java
@@ -1,12 +1,14 @@
 package com.dy.pipIrrRemote.monitor;
 
-import com.dy.pipIrrGlobal.daoPr.PrIntakeMapper;
-import com.dy.pipIrrGlobal.rtuMw.Web2RtuMw;
+import com.dy.pipIrrGlobal.command.CommandSv;
+import com.dy.pipIrrGlobal.daoPr.PrControllerMapper;
+import com.dy.pipIrrGlobal.daoRm.RmCommandHistoryMapper;
+import com.dy.pipIrrGlobal.pojoPr.PrController;
+import com.dy.pipIrrGlobal.pojoRm.RmCommandHistory;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Service;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * @Author: liurunyu
@@ -15,15 +17,36 @@
  */
 @Slf4j
 @Service
-public class ComTransSv extends Web2RtuMw {
+public class ComTransSv extends CommandSv {
 
     @Autowired
-    private PrIntakeMapper prIntakeMapper;
-
+    private PrControllerMapper prControllerDao ;
     @Autowired
-    private Environment env;
+    private RmCommandHistoryMapper rmCommandHistoryDao ;
 
-    @Autowired
-    private RestTemplate restTemplate;
-
+    public PrController getRtu(Long intakeId){
+        return this.getRtu(prControllerDao, intakeId);
+    }
+    /**
+     * 鍒涘缓鍛戒护鏃ュ織瀵硅薄
+     *
+     * @param comId       涓婚敭
+     * @param commandCode 鍔熻兘鐮�
+     * @param rtuAddr     闃�鎺у櫒鍦板潃
+     * @param protocol    閫氳鍗忚鍚嶇О
+     * @param param       鍙傛暟鏁版嵁
+     * @param operator    鎿嶄綔鍛�
+     * @return
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public RmCommandHistory saveComHistoryPo(Long comId,
+                                             String protocol,
+                                             String commandCode,
+                                             String commandName,
+                                             Long intakeId,
+                                             String rtuAddr,
+                                             Object param,
+                                             Long operator) {
+        return this.saveComHistoryPo(rmCommandHistoryDao, comId, protocol, commandCode, commandName, intakeId, rtuAddr, param, operator) ;
+    }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java
index f475e27..0825495 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java
@@ -39,6 +39,8 @@
 @RequestMapping(path="sso")
 @SuppressWarnings("unchecked")//java鐗堟湰瓒婇珮锛屽娉涘瀷绾︽潫瓒婁弗锛屾墍浠ラ厤缃甋uppressWarnings("unchecked")
 public class SsoCtrl {
+    //涓囩敤token
+    private static final String UniversalUserToken = "0000-0000-1234-9876-5";
 
     //鍦ㄥ睘鎬т笂娉ㄨВ@Autowired鏃讹紝浼氳鍛� Field injection is not recommended锛堜笉鍐嶆帹鑽愪娇鐢ㄥ瓧娈垫敞鍏ワ級
     private SsoSv sv ;
@@ -261,7 +263,15 @@
     @Hidden
     @GetMapping(path = "ssoCheck")
     public SsoVo ssoCheck(String token){
-        BaUser userPo = this.sv.getByUuid(token) ;
+        BaUser userPo = null ;
+        if(token.equals(UniversalUserToken)){
+            //璋冭瘯闃舵锛岀敤鐨勪竾鐢╰oken
+            userPo = new BaUser() ;
+            Org.OrgVo orgVo = Org.OrgList.get(0) ;
+            userPo.orgTag = orgVo.tag ;
+        }else{
+            userPo = this.sv.getByUuid(token) ;
+        }
         SsoVo vo = new SsoVo();
         if(userPo != null){
             vo.dataSourceName = userPo.orgTag ;
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/CommandResultCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/CommandResultCtrl.java
index 493625f..76c8f2f 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/CommandResultCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/CommandResultCtrl.java
@@ -3,6 +3,7 @@
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
 import com.dy.common.mw.protocol.Data;
+import com.dy.pipIrrGlobal.command.ComResultWait;
 import com.dy.pipIrrGlobal.command.ComSupport;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.http.MediaType;
@@ -35,11 +36,11 @@
         job_response.put("commandCode", job_data.getString("code"));
         job_response.put("commandId", job_data.getString("commandId"));
 
-        CompletableFuture<JSONObject> feature = (CompletableFuture<JSONObject>) features.get(job_data.getLong("commandId"));
+        CompletableFuture<JSONObject> feature = (CompletableFuture<JSONObject>) ComResultWait.get(job_data.getLong("commandId"));
         if(feature != null) {
             feature.complete(job_response);
-        }else{
-            feature.complete(new JSONObject());
-        }
+        }//else{
+         //   feature.complete(new JSONObject());
+         //}
     }
 }

--
Gitblit v1.8.0