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