From 1135c89deb50a080152f9086fc7b741c415ecd54 Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期三, 12 二月 2025 17:00:14 +0800
Subject: [PATCH] 通信中间件增加功能: 1、实现消息心中; 2、开阀报、关阀报、报警数据都会在消息中间件存入消息; 3、在消息中心注册消息接收者,消息中心周期性向消息接收者推送消息。

---
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterUnit.java                 |   83 +++++++++
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsObj.java                        |   12 +
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeUnit.java                   |    2 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config(test测试).xml                                        |    8 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config(ym元谋).xml                                          |    8 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealOpenValveReport.java  |   26 ++
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/largeScreen/WebSocketServer.java      |    4 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/dbSv/DbSv.java                     |    2 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/Server.java                                       |   18 ++
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/AdapterImp_MsCenterUnit.java               |   19 ++
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealCloseValveReport.java |   25 ++
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml                                                |    8 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVirtualCardMapper.xml                                      |    5 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config(mj梅江).xml                                          |    8 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealAlarmStatus.java      |   25 ++
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config(sp沙盘).xml                                          |    8 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterUnitAdapter.java          |   12 +
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/TestMsResource.java               |   23 ++
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterManager.java              |  138 +++++++++++++++
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/web/com/CommandCtrl.java                          |   19 ++
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml                                       |    3 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config(mq民勤).xml                                          |    8 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterConfigVo.java             |   19 ++
 23 files changed, 478 insertions(+), 5 deletions(-)

diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml
index f5c65a6..ae9b1ff 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml
@@ -92,7 +92,8 @@
     <!-- 鏍规嵁姘村崱缂栧彿鑾峰彇姘村崱瀵瑰簲鐨勫啘鎴穒d鍜屽鍚� -->
     <select id="getClientIdAndNameByCardAddrAndCardNo" resultType="java.util.Map">
         SELECT cli.id   AS clientId,
-               cli.name AS clientName
+               cli.name AS clientName,
+               cli.address AS clientAddress
         FROM se_client_card card
                  INNER JOIN se_client cli ON card.clientId = cli.id
         WHERE card.cardAddr = #{cardAddr}
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVirtualCardMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVirtualCardMapper.xml
index e758d80..6bc3433 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVirtualCardMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVirtualCardMapper.xml
@@ -245,11 +245,12 @@
     SELECT id FROM se_virtual_card WHERE state = 1 AND vc_num = #{vcNum}
   </select>
 
-  <!--鏍规嵁铏氭嫙鍗$紪鍙疯幏鍙栬櫄鎷熷崱ID-->
+  <!--鏍规嵁铏氭嫙鍗$紪鍙疯幏鍙栧啘鎴穒d銆佸鍚嶃�佸湴鍧�-->
   <select id="getClientIdAndNameByVsCardNo" resultType="java.util.Map">
     SELECT
     cli.id AS clientId,
-    cli.name AS clientName
+    cli.name AS clientName,
+    cli.address AS clientAddress
     FROM se_virtual_card card
     INNER JOIN se_client cli ON card.client_id = cli.id
     WHERE card.state = 1 AND card.vc_num = #{vcNum}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/Server.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/Server.java
index 17e9b85..79375db 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/Server.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/Server.java
@@ -4,6 +4,8 @@
 import java.util.List;
 
 import com.dy.rtuMw.server.*;
+import com.dy.rtuMw.server.msCenter.MsCenterConfigVo;
+import com.dy.rtuMw.server.msCenter.MsCenterUnit;
 import com.dy.rtuMw.server.rtuData.RtuDataUnit;
 import com.dy.rtuMw.server.rtuData.RtuDataUnitConfigVo;
 import com.dy.rtuMw.server.tasks.FromRtuComResultConstantTask;
@@ -334,6 +336,22 @@
 			}
 			*/
 
+
+			/////////////////
+			//娑堟伅涓績妯″潡
+			MsCenterConfigVo mscVo = new MsCenterConfigVo();
+			mscVo.enable = conf.getSetAttrBoolean(doc, "config.msCenter", "enable", null, null) ;
+			mscVo.notifyMsInterval = conf.getSetAttrPlusInt(doc, "config.msCenter", "notifyInterval", null, 1, 600, null) * 1000L ;
+			mscVo.showStartInfo = showStartInfo ;
+			AdapterImp_MsCenterUnit mscAdapt = new AdapterImp_MsCenterUnit();
+			mscAdapt.setConfig(mscVo);
+			MsCenterUnit mscUnit = MsCenterUnit.getInstance();
+			mscUnit.setAdapter(mscAdapt);
+			mscUnit.start(obj -> {
+			});
+			units.add(mscUnit) ;
+
+
 			/////////////////
 			//RTU杩滅▼鍗囩骇妯″潡
 			UpgradeUnitConfigVo ugVo = new UpgradeUnitConfigVo();
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/AdapterImp_MsCenterUnit.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/AdapterImp_MsCenterUnit.java
new file mode 100644
index 0000000..9c1ad40
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/AdapterImp_MsCenterUnit.java
@@ -0,0 +1,19 @@
+package com.dy.rtuMw.server;
+
+
+import com.dy.rtuMw.server.msCenter.MsCenterConfigVo;
+import com.dy.rtuMw.server.msCenter.MsCenterUnitAdapter;
+
+public class AdapterImp_MsCenterUnit implements MsCenterUnitAdapter {
+	
+	private MsCenterConfigVo configVo ;
+
+	public MsCenterConfigVo getConfig() {
+		return configVo;
+	}
+	
+	public void setConfig(MsCenterConfigVo configVo){
+		this.configVo = configVo ;
+	}
+
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterConfigVo.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterConfigVo.java
new file mode 100644
index 0000000..a8f2131
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterConfigVo.java
@@ -0,0 +1,19 @@
+package com.dy.rtuMw.server.msCenter;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/12 13:57
+ * @Description
+ */
+public class MsCenterConfigVo {
+    public Boolean showStartInfo ;
+    public Boolean enable ;//妯″潡鏄惁鍚姩
+
+    public Long notifyMsInterval ;//閫氱煡闂撮殧(鍗曚綅姣)
+
+    public MsCenterConfigVo(){
+        this.showStartInfo = false ;
+        this.enable = false ;
+        this.notifyMsInterval = 1000L ;
+    }
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterManager.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterManager.java
new file mode 100644
index 0000000..659e45f
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterManager.java
@@ -0,0 +1,138 @@
+package com.dy.rtuMw.server.msCenter;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.dy.common.queue.Queue;
+import com.dy.common.springUtil.SpringContextUtil;
+import com.dy.common.threadPool.ThreadPool;
+import com.dy.common.threadPool.TreadPoolFactory;
+import com.dy.common.util.Callback;
+import com.dy.common.util.TimerTaskJob;
+import com.dy.rtuMw.web.webRequest.WebRequestDeal;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import java.util.*;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/12 14:12
+ * @Description
+ */
+public class MsCenterManager extends TimerTaskJob implements Callback {
+
+    private static final Logger log = LogManager.getLogger(MsCenterManager.class.getName());
+
+    private static final MsCenterManager INSTANCE = new MsCenterManager();
+    //娑堟伅缂撳瓨闃熷垪锛岀嚎绋嬪畨鍏ㄧ殑
+    private static final Queue msQueue = new Queue("MsCenterQueue") ;
+
+    private static final Map<String, String> msReceivers = new HashMap<>() ;
+
+
+    private MsCenterManager(){
+    }
+
+    protected static MsCenterManager getInstance() {
+        return MsCenterManager.INSTANCE;
+    }
+
+    /**
+     *  鍒濆鍖栭厤缃俊鎭�
+     */
+    protected void initOption(MsCenterConfigVo configVo) {
+    }
+    /**
+     * 娉ㄥ唽娑堟伅鎺ユ敹鍣�
+     * @param webUrl 鎺ユ敹鑰厀eb http post url
+     */
+    protected void registerMsReceiver(String webUrl){
+        if(!msReceivers.containsKey(webUrl)){
+            msReceivers.put(webUrl, webUrl) ;
+        }
+    }
+
+    protected void pushMs(MsObj msNode){
+        try {
+            msQueue.pushTail(msNode);
+        }catch (Exception e){
+            log.error("娑堟伅涓績闃熷垪瀛樺叆娑堟伅鏃跺彂鐢熷紓甯�", e);
+        }
+    }
+
+    @Override
+    public Object execute() throws Exception {
+        if(msQueue.size() > 0){
+            JSONObject msNode1 = (JSONObject)msQueue.pop() ;
+            if(msNode1 != null){
+                //澶ч儴鍒嗘椂闂磎sNode1鏄痭ull
+                List<JSONObject> list = new ArrayList<>() ;
+                list.add(msNode1) ;
+                JSONObject msNode ;
+                do{
+                    msNode = (JSONObject)msQueue.pop() ;
+                    if(msNode != null){
+                        list.add(msNode) ;
+                    }
+                }while (msNode != null);
+                this.notifyMs(list) ;
+            }
+        }
+        return null;
+    }
+
+
+    ////////////////////////////////////////////////////
+    //
+    // 娑堟伅閫氱煡閫氱煡宸ヤ綔绾跨▼鎵ц瀹屾垚鍚庡洖璋冪殑鏂规硶锛�
+    // 涔熷氨鏄笂闈xecute鏂规硶鎵ц瀹屾垚杩斿洖鎴栨姏鍑哄紓甯稿悗锛屾墽琛屼笅闈笁涓柟娉�
+    //
+    ////////////////////////////////////////////////////
+    @Override
+    public void call(Object obj) {
+        //绾跨▼宸ヤ綔鎵ц瀹屼簡锛宱bj = Boolean(true)
+    }
+    @Override
+    public void call(Object... objs) {
+    }
+    @Override
+    public void exception(Exception e) {
+        log.error("娑堟伅閫氱煡浼烘湇绾跨▼鍙戠敓寮傚父", e);
+    }
+
+
+    /**
+     * 鎶婃秷鎭�氱煡鍑哄幓
+     * @param list
+     */
+    private void notifyMs(List<JSONObject> list){
+        try {
+            if(msReceivers.size() > 0){
+                ThreadPool.Pool pool = TreadPoolFactory.getThreadPoolLong() ;
+                pool.putJob(new ThreadPool.Job() {
+                    public void execute() {
+                        Iterator<String> it = msReceivers.keySet().iterator() ;
+                        while (it.hasNext()){
+                            doNotifyMs(it.next(), list) ;
+                        }
+                    }
+                    @Override
+                    public void destroy(){
+                    }
+                    @Override
+                    public boolean isDestroy(){
+                        return false ;
+                    }
+
+                });
+            }
+        } catch (Exception e) {
+            log.error("鍦≧tuDataNode鍐呭彂鐢熷紓甯�", e);
+        }
+    }
+
+    private void doNotifyMs(String receiverWebUrl, List<JSONObject> list){
+        WebRequestDeal deal = SpringContextUtil.getBean(WebRequestDeal.class) ;
+        deal.deal(receiverWebUrl, list);
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterUnit.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterUnit.java
new file mode 100644
index 0000000..2776201
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterUnit.java
@@ -0,0 +1,83 @@
+package com.dy.rtuMw.server.msCenter;
+
+import com.dy.common.mw.UnitAdapterInterface;
+import com.dy.common.mw.UnitCallbackInterface;
+import com.dy.common.mw.UnitInterface;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/12 13:55
+ * @Description
+ */
+public class MsCenterUnit  implements UnitInterface {
+
+    private static MsCenterUnit instance = new MsCenterUnit() ;
+
+    public static MsCenterUnitAdapter adapter ;
+    public static MsCenterConfigVo confVo ;
+
+    private static MsCenterManager manager ;
+
+    private MsCenterUnit(){} ;
+
+    public static MsCenterUnit getInstance(){
+        return instance ;
+    }
+
+    @Override
+    public void setAdapter(UnitAdapterInterface adapter) throws Exception {
+        if(adapter == null){
+            throw new Exception("娑堟伅涓績妯″潡閫傞厤鍣ㄥ璞′笉鑳戒负绌猴紒") ;
+        }
+        MsCenterUnit.adapter = (MsCenterUnitAdapter)adapter ;
+        MsCenterUnit.confVo = MsCenterUnit.adapter.getConfig() ;
+        if(MsCenterUnit.confVo == null){
+            throw new Exception("娑堟伅涓績妯″潡閰嶇疆瀵硅薄涓嶈兘涓虹┖锛�") ;
+        }
+    }
+
+    /**
+     * 鍒濆鍖�
+     */
+    @Override
+    public void start(UnitCallbackInterface callback) throws Exception {
+        if(confVo.enable){
+            manager = MsCenterManager.getInstance() ;
+            manager.initOption(confVo);
+            manager.start(1000L, confVo.notifyMsInterval, manager);
+            callback.call(null) ;
+            System.out.println("娑堟伅涓績妯″潡鎴愬姛鍚姩");
+        }else{
+            System.out.println("娑堟伅涓績妯″潡閰嶇疆涓嶅惎鍔�");
+        }
+
+    }
+
+    @Override
+    public void stop(UnitCallbackInterface callback) throws Exception {
+        if(manager != null){
+            manager.stop();
+        }
+    }
+
+    /**
+     * 瀛樺叆娑堟伅
+     * @param msNode
+     */
+    public void pushMs(MsObj msNode){
+        if(manager != null){
+            manager.pushMs(msNode) ;
+        }
+    }
+
+    /**
+     * 娉ㄥ唽娑堟伅鎺ユ敹鍣�
+     * @param webUrl 鎺ユ敹鑰厀eb http post url
+     */
+    public void registerMsReceiver(String webUrl){
+        if(manager != null){
+            manager.registerMsReceiver(webUrl) ;
+        }
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterUnitAdapter.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterUnitAdapter.java
new file mode 100644
index 0000000..d458763
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterUnitAdapter.java
@@ -0,0 +1,12 @@
+package com.dy.rtuMw.server.msCenter;
+
+import com.dy.common.mw.UnitAdapterInterface;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/12 13:58
+ * @Description
+ */
+public interface MsCenterUnitAdapter extends UnitAdapterInterface {
+    MsCenterConfigVo getConfig();
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsObj.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsObj.java
new file mode 100644
index 0000000..b1aa8cd
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsObj.java
@@ -0,0 +1,12 @@
+package com.dy.rtuMw.server.msCenter;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.dy.common.queue.NodeObj;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/12 15:14
+ * @Description
+ */
+public class MsObj extends JSONObject implements NodeObj {
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/TestMsResource.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/TestMsResource.java
new file mode 100644
index 0000000..f0b09af
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/TestMsResource.java
@@ -0,0 +1,23 @@
+package com.dy.rtuMw.server.msCenter;
+
+import org.springframework.scheduling.annotation.Scheduled;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/12 15:35
+ * @Description
+ */
+//浣胯捣浣滅敤锛屾湰绫绘敞瑙Component锛屽苟鍦≒ipIrrMwRtuApplication娉ㄨВ@EnableScheduling
+//@Component
+public class TestMsResource {
+
+    // 璁剧疆瀹氭椂鍗佺涓�娆�
+    @Scheduled(cron = "0/1 * * * * ?")
+    public void WsHeartBeat() throws Exception {
+        MsObj obj = new MsObj() ;
+        obj.put("id", System.currentTimeMillis());
+        obj.put("ms", "娑堟伅" + System.currentTimeMillis());
+        MsCenterUnit.getInstance().pushMs(obj);
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/dbSv/DbSv.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/dbSv/DbSv.java
index fd7c0df..b2a6a43 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/dbSv/DbSv.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/dbSv/DbSv.java
@@ -98,6 +98,7 @@
                 vo = new SeClient() ;
                 vo.setId(Long.parseLong(map.get("clientId").toString()));
                 vo.setName(map.get("clientName").toString());
+                vo.setAddress(map.get("clientAddress").toString());
             }
         }
         return vo ;
@@ -116,6 +117,7 @@
                 vo = new SeClient() ;
                 vo.setId(Long.parseLong(map.get("clientId").toString()));
                 vo.setName(map.get("clientName").toString());
+                vo.setAddress(map.get("clientAddress").toString());
             }
         }
         return vo ;
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealAlarmStatus.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealAlarmStatus.java
index 354af9f..d11588e 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealAlarmStatus.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealAlarmStatus.java
@@ -4,6 +4,8 @@
 import com.dy.pipIrrGlobal.pojoRm.RmAlarmStateHistory;
 import com.dy.rtuMw.server.ServerProperties;
 import com.dy.rtuMw.server.forMs.SendMsCache;
+import com.dy.rtuMw.server.msCenter.MsCenterUnit;
+import com.dy.rtuMw.server.msCenter.MsObj;
 import com.dy.rtuMw.server.rtuData.TaskSurpport;
 import com.dy.rtuMw.server.rtuData.dbSv.DbSv;
 import com.dy.common.mw.protocol.Data;
@@ -47,6 +49,7 @@
                             Object[] objs = this.getTaskResults(TkPreGenObjs.taskId);
                             DbSv sv = (DbSv) objs[0];
                             PrController controller = (PrController) objs[1];
+                            this.toMsCenter(controller, d.getRtuAddr(), dV1, dataCd81Vo.alarmVo, dataCd81Vo.stateVo);
                             this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), dataCd81Vo.rtuDt, dV1, dataCd81Vo.alarmVo, dataCd81Vo.stateVo);
                             this.saveHistory(sv, controller, d.getRtuAddr(), dataCd81Vo.rtuDt, dV1, dataCd81Vo.alarmVo, dataCd81Vo.stateVo);
                             if(dataCd81Vo.stateVo != null && dataCd81Vo.stateVo.valveState != null && dataCd81Vo.stateVo.valveState.byteValue() == DataStateVo.ValveCloseState){
@@ -63,6 +66,7 @@
                             Object[] objs = this.getTaskResults(TkPreGenObjs.taskId);
                             DbSv sv = (DbSv) objs[0];
                             PrController controller = (PrController) objs[1];
+                            this.toMsCenter(controller, d.getRtuAddr(), dV1, dataCd84Vo.alarmVo, dataCd84Vo.stateVo);
                             this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), dataCd84Vo.rtuDt, dV1, dataCd84Vo.alarmVo, dataCd84Vo.stateVo);
                             this.saveHistory(sv, controller, d.getRtuAddr(), dataCd84Vo.rtuDt, dV1, dataCd84Vo.alarmVo, dataCd84Vo.stateVo);
                             /** 闃�寮�宸ヤ綔鎶ワ紝闃�闂ㄧ姸鎬佷竴瀹氭槸鎵撳紑鐘舵�侊紝鎵�浠ヤ笉璁剧疆涓嬮潰鏁版嵁浠ュ鍚庣画浠诲姟璁剧疆铏氭嫙鍗$姸鎬�
@@ -80,6 +84,7 @@
                             Object[] objs = this.getTaskResults(TkPreGenObjs.taskId);
                             DbSv sv = (DbSv) objs[0];
                             PrController controller = (PrController) objs[1];
+                            this.toMsCenter(controller, d.getRtuAddr(), dV1, dataCdC0Vo.alarmVo, dataCdC0Vo.stateVo);
                             this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), dataCdC0Vo.rtuDt, dV1, dataCdC0Vo.alarmVo, dataCdC0Vo.stateVo);
                             this.saveHistory(sv, controller, d.getRtuAddr(), dataCdC0Vo.rtuDt, dV1, dataCdC0Vo.alarmVo, dataCdC0Vo.stateVo);
                             if(dataCdC0Vo.stateVo != null && dataCdC0Vo.stateVo.valveState != null && dataCdC0Vo.stateVo.valveState.byteValue() == DataStateVo.ValveCloseState){
@@ -99,6 +104,26 @@
             }
         }
     }
+
+    /**
+     * 鎶ヨ鐘舵�佹暟鎹瓨鍏ユ秷鎭腑蹇�
+     * @param controller 鎺у埗鍣ㄥ璞�
+     * @param rtuAddr 鎺у埗鍣ㄥ湴鍧�
+     * @param dV1 鏁版嵁瀵硅薄
+     * @param alarmVo 鎶ヨ瀵硅薄
+     * @param stateVo 鐘舵�佸璞�
+     */
+    private void toMsCenter(PrController controller, String rtuAddr, DataV1 dV1, DataAlarmVo alarmVo, DataStateVo stateVo){
+        if(alarmVo != null && controller != null){
+            MsObj msObj = new MsObj() ;
+            msObj.put("name", "鎶ヨ");
+            msObj.put("rtuAddr", rtuAddr);
+            msObj.put("intakeId", controller.getIntakeId());
+            msObj.put("alarm", alarmVo.alarmContent());
+            MsCenterUnit.getInstance().pushMs(msObj);
+        }
+    }
+
     /**
      * 淇濆瓨鎶ヨ鐘舵�佹渶鏂版暟鎹�
      * @param sv 鏈嶅姟
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealCloseValveReport.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealCloseValveReport.java
index dc02e7e..b328b7e 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealCloseValveReport.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealCloseValveReport.java
@@ -8,6 +8,8 @@
 import com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveHistory;
 import com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveLast;
 import com.dy.pipIrrGlobal.pojoSe.SeClient;
+import com.dy.rtuMw.server.msCenter.MsCenterUnit;
+import com.dy.rtuMw.server.msCenter.MsObj;
 import com.dy.rtuMw.server.rtuData.TaskSurpport;
 import com.dy.rtuMw.server.rtuData.dbSv.DbSv;
 import org.apache.logging.log4j.LogManager;
@@ -43,6 +45,7 @@
             PrController controller = (PrController)objs[1] ;
             SeClient clientVo = (SeClient)objs[3] ;//杩欎釜鍊煎璞′腑鍙湁id鍜宯ame浼氭湁鍊�
             try{
+                this.toMsCenter(clientVo, controller, d.getRtuAddr(), dV1, (DataCd83CloseVo)cdObj) ;
                 this.doDeal(sv, clientVo, controller, d.getRtuAddr(), dV1, (DataCd83CloseVo)cdObj) ;
             }catch (Exception e){
                 log.error("淇濆瓨鎺у埗鍣ㄥ紑闃�涓婃姤鏃跺彂鐢熷紓甯�", e);
@@ -51,6 +54,28 @@
     }
 
     /**
+     * 鎶婂紑闃�娑堟伅瀛樺叆娑堟伅涓績
+     * @param clientVo
+     * @param controller
+     * @param rtuAddr
+     * @param dV1
+     * @param dataCd83CloseVo
+     */
+    private void toMsCenter(SeClient clientVo, PrController controller, String rtuAddr, DataV1 dV1, DataCd83CloseVo dataCd83CloseVo){
+        if(clientVo != null && controller != null){
+            MsObj msObj = new MsObj() ;
+            msObj.put("name", "鍏抽榾");
+            msObj.put("clientId", clientVo.getId());
+            msObj.put("clientName", clientVo.getName());
+            msObj.put("clientAddress", clientVo.getAddress());
+            msObj.put("icCardNo", dataCd83CloseVo.icCardNo);
+            msObj.put("rtuAddr", rtuAddr);
+            msObj.put("intakeId", controller.getIntakeId());
+            MsCenterUnit.getInstance().pushMs(msObj);
+        }
+    }
+
+    /**
      * 淇濆瓨鏁版嵁
      * @param sv 鏈嶅姟
      * @param clientVo 鍐滄埛瀵硅薄锛堜笉涓虹┖鏃讹紝鍙湁id鍜宯ame鏈夊�硷級
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealOpenValveReport.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealOpenValveReport.java
index b4e39a7..c786899 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealOpenValveReport.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealOpenValveReport.java
@@ -8,6 +8,8 @@
 import com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveHistory;
 import com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveLast;
 import com.dy.pipIrrGlobal.pojoSe.SeClient;
+import com.dy.rtuMw.server.msCenter.MsCenterUnit;
+import com.dy.rtuMw.server.msCenter.MsObj;
 import com.dy.rtuMw.server.rtuData.TaskSurpport;
 import com.dy.rtuMw.server.rtuData.dbSv.DbSv;
 import org.apache.logging.log4j.LogManager;
@@ -42,12 +44,36 @@
             PrController controller = (PrController)objs[1] ;
             SeClient clientVo = (SeClient)objs[3] ;//杩欎釜鍊煎璞′腑鍙湁id鍜宯ame浼氭湁鍊�
             try{
+                this.toMsCenter(clientVo, controller, d.getRtuAddr(), dV1, (DataCd83OpenVo)cdObj) ;
                 this.doDeal(sv, clientVo, controller, d.getRtuAddr(), dV1, (DataCd83OpenVo)cdObj) ;
             }catch (Exception e){
                 log.error("淇濆瓨鎺у埗鍣ㄥ紑闃�涓婃姤鏃跺彂鐢熷紓甯�", e);
             }
         }
     }
+
+    /**
+     * 鎶婂紑闃�娑堟伅瀛樺叆娑堟伅涓績
+     * @param clientVo
+     * @param controller
+     * @param rtuAddr
+     * @param dV1
+     * @param dataCd83OpenVo
+     */
+    private void toMsCenter(SeClient clientVo, PrController controller, String rtuAddr, DataV1 dV1, DataCd83OpenVo dataCd83OpenVo){
+        if(clientVo != null && controller != null){
+            MsObj msObj = new MsObj() ;
+            msObj.put("name", "寮�闃�");
+            msObj.put("clientId", clientVo.getId());
+            msObj.put("clientName", clientVo.getName());
+            msObj.put("clientAddress", clientVo.getAddress());
+            msObj.put("icCardNo", dataCd83OpenVo.icCardNo);
+            msObj.put("rtuAddr", rtuAddr);
+            msObj.put("intakeId", controller.getIntakeId());
+            MsCenterUnit.getInstance().pushMs(msObj);
+        }
+    }
+
     /**
      * 涓氬姟澶勭悊
      * @param sv 鏈嶅姟
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeUnit.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeUnit.java
index 9a7fd69..3abc7b6 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeUnit.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeUnit.java
@@ -39,7 +39,7 @@
     }
 
     /**
-     * 鍒濆鍖栦笂琛屾暟鎹鐞嗕换鍔℃睜
+     * 鍒濆鍖�
      */
     @Override
     public void start(UnitCallbackInterface callback) throws Exception {
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 b96b485..877113e 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,6 +7,7 @@
 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.msCenter.MsCenterUnit;
 import com.dy.rtuMw.server.tasks.WebDownComTask;
 import com.dy.common.mw.core.CoreUnit;
 import com.dy.common.mw.protocol.Command;
@@ -144,6 +145,24 @@
             return BaseResponseUtils.buildSuccess(list);
         }
     }
+
+
+    /**
+     * 娉ㄥ唽娑堟伅鎺ユ敹鑰�
+     * @param msReceiverWebUrl 娑堟伅鎺ユ敹鑰厀eb http post url
+     * @return
+     */
+    @GetMapping("/registerMsReceiverWebUrl")
+    public BaseResponse<List<String>> registerMsReceiverWebUrl(String msReceiverWebUrl){
+        try{
+            MsCenterUnit.getInstance().registerMsReceiver(msReceiverWebUrl);
+        }catch (Exception e){
+            log.error("娉ㄥ唽娑堟伅鎺ユ敹鑰呮椂鍙戠敓寮傚父", e);
+            return BaseResponseUtils.buildError("娉ㄥ唽娑堟伅鎺ユ敹鑰呮椂鍙戠敓寮傚父" + (e.getMessage() == null?"":("锛�" + e.getMessage())));
+        }
+        return BaseResponseUtils.buildSuccess(true);
+    }
+
     /**
      * 鎺ユ敹web绯荤粺鍙戞潵鍗囩骇浠诲姟
      * @param vo
diff --git "a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050mj\346\242\205\346\261\237\051.xml" "b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050mj\346\242\205\346\261\237\051.xml"
index d0d32a8..ff21787 100644
--- "a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050mj\346\242\205\346\261\237\051.xml"
+++ "b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050mj\346\242\205\346\261\237\051.xml"
@@ -56,6 +56,14 @@
 			synchroRtuClockTimepieces="300000"
 	/>
 
+	<!-- RTU 娑堟伅涓績
+	enable: 妯″潡鏄惁鍚姩
+	notifyInterval: 娑堟伅閫氱煡闂撮殧锛堢锛�
+	-->
+	<msCenter enable="true"
+			  notifyInterval="5"
+	/>
+
 	<!-- RTU 杞欢鍗囩骇
 	enable: 妯″潡鏄惁鍚姩
 	openNoUpgrade: 闃�寮�锛堟车寮�锛変笉鎵ц鍗囩骇
diff --git "a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050mq\346\260\221\345\213\244\051.xml" "b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050mq\346\260\221\345\213\244\051.xml"
index 0b20023..933d74e 100644
--- "a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050mq\346\260\221\345\213\244\051.xml"
+++ "b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050mq\346\260\221\345\213\244\051.xml"
@@ -56,6 +56,14 @@
 			synchroRtuClockTimepieces="300000"
 	/>
 
+	<!-- RTU 娑堟伅涓績
+	enable: 妯″潡鏄惁鍚姩
+	notifyInterval: 娑堟伅閫氱煡闂撮殧锛堢锛�
+	-->
+	<msCenter enable="true"
+			  notifyInterval="5"
+	/>
+
 	<!-- RTU 杞欢鍗囩骇
 	enable: 妯″潡鏄惁鍚姩
 	openNoUpgrade: 闃�寮�锛堟车寮�锛変笉鎵ц鍗囩骇
diff --git "a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050sp\346\262\231\347\233\230\051.xml" "b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050sp\346\262\231\347\233\230\051.xml"
index ee8e0ee..9c148d8 100644
--- "a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050sp\346\262\231\347\233\230\051.xml"
+++ "b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050sp\346\262\231\347\233\230\051.xml"
@@ -56,6 +56,14 @@
 			synchroRtuClockTimepieces="300000"
 	/>
 
+	<!-- RTU 娑堟伅涓績
+	enable: 妯″潡鏄惁鍚姩
+	notifyInterval: 娑堟伅閫氱煡闂撮殧锛堢锛�
+	-->
+	<msCenter enable="true"
+			  notifyInterval="5"
+	/>
+
 	<!-- RTU 杞欢鍗囩骇
 	enable: 妯″潡鏄惁鍚姩
 	openNoUpgrade: 闃�寮�锛堟车寮�锛変笉鎵ц鍗囩骇
diff --git "a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050test\346\265\213\350\257\225\051.xml" "b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050test\346\265\213\350\257\225\051.xml"
index cd60a61..5b08ff2 100644
--- "a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050test\346\265\213\350\257\225\051.xml"
+++ "b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050test\346\265\213\350\257\225\051.xml"
@@ -56,6 +56,14 @@
 			synchroRtuClockTimepieces="300000"
 	/>
 
+	<!-- RTU 娑堟伅涓績
+	enable: 妯″潡鏄惁鍚姩
+	notifyInterval: 娑堟伅閫氱煡闂撮殧锛堢锛�
+	-->
+	<msCenter enable="true"
+			  notifyInterval="5"
+	/>
+
 	<!-- RTU 杞欢鍗囩骇
 	enable: 妯″潡鏄惁鍚姩
 	openNoUpgrade: 闃�寮�锛堟车寮�锛変笉鎵ц鍗囩骇
diff --git "a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050ym\345\205\203\350\260\213\051.xml" "b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050ym\345\205\203\350\260\213\051.xml"
index d2a18e5..d8800f8 100644
--- "a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050ym\345\205\203\350\260\213\051.xml"
+++ "b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050ym\345\205\203\350\260\213\051.xml"
@@ -56,6 +56,14 @@
 			synchroRtuClockTimepieces="300000"
 	/>
 
+	<!-- RTU 娑堟伅涓績
+	enable: 妯″潡鏄惁鍚姩
+	notifyInterval: 娑堟伅閫氱煡闂撮殧锛堢锛�
+	-->
+	<msCenter enable="true"
+			  notifyInterval="5"
+	/>
+
 	<!-- RTU 杞欢鍗囩骇
 	enable: 妯″潡鏄惁鍚姩
 	openNoUpgrade: 闃�寮�锛堟车寮�锛変笉鎵ц鍗囩骇
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml
index d2a18e5..d8800f8 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml
@@ -56,6 +56,14 @@
 			synchroRtuClockTimepieces="300000"
 	/>
 
+	<!-- RTU 娑堟伅涓績
+	enable: 妯″潡鏄惁鍚姩
+	notifyInterval: 娑堟伅閫氱煡闂撮殧锛堢锛�
+	-->
+	<msCenter enable="true"
+			  notifyInterval="5"
+	/>
+
 	<!-- RTU 杞欢鍗囩骇
 	enable: 妯″潡鏄惁鍚姩
 	openNoUpgrade: 闃�寮�锛堟车寮�锛変笉鎵ц鍗囩骇
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/largeScreen/WebSocketServer.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/largeScreen/WebSocketServer.java
index 423b4e8..fd66ef4 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/largeScreen/WebSocketServer.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/largeScreen/WebSocketServer.java
@@ -27,7 +27,8 @@
 
     // 瀹㈡埛绔繛鎺ヤ細璇濓紝閫氳繃瀹冪粰瀹㈡埛绔彂閫佹暟鎹�
     private Session session;
-
+    // 瀹㈡埛绔笂绾挎椂鍒�
+    //private String onLineDt ;
     // 瀹㈡埛绔痠d
     private String id = "";
 
@@ -39,6 +40,7 @@
     @OnOpen
     public void onOpen(Session session, @PathParam("id") String id) {
         this.session = session;
+        //this.onLineDt = DateTime.yyyy_MM_dd_HH_mm_ss() ;
         this.id = id;
         if(this.id == null || this.id.length() == 0){
             this.id = "" + System.nanoTime() ;

--
Gitblit v1.8.0