通信中间件增加功能:
1、实现消息心中;
2、开阀报、关阀报、报警数据都会在消息中间件存入消息;
3、在消息中心注册消息接收者,消息中心周期性向消息接收者推送消息。
16个文件已修改
7个文件已添加
483 ■■■■■ 已修改文件
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVirtualCardMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/Server.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/AdapterImp_MsCenterUnit.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterConfigVo.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterManager.java 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterUnit.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterUnitAdapter.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsObj.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/TestMsResource.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/dbSv/DbSv.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealAlarmStatus.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealCloseValveReport.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealOpenValveReport.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeUnit.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/web/com/CommandCtrl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config(mj梅江).xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config(mq民勤).xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config(sp沙盘).xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config(test测试).xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config(ym元谋).xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/largeScreen/WebSocketServer.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml
@@ -92,7 +92,8 @@
    <!-- æ ¹æ®æ°´å¡ç¼–号获取水卡对应的农户id和姓名 -->
    <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}
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-->
  <!--根据虚拟卡编号获取农户id、姓名、地址-->
  <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}
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();
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/AdapterImp_MsCenterUnit.java
New file
@@ -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 ;
    }
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterConfigVo.java
New file
@@ -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 ;
    }
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterManager.java
New file
@@ -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 æŽ¥æ”¶è€…web 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){
                //大部分时间msNode1是null
                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;
    }
    ////////////////////////////////////////////////////
    //
    // æ¶ˆæ¯é€šçŸ¥é€šçŸ¥å·¥ä½œçº¿ç¨‹æ‰§è¡Œå®ŒæˆåŽå›žè°ƒçš„æ–¹æ³•,
    // ä¹Ÿå°±æ˜¯ä¸Šé¢execute方法执行完成返回或抛出异常后,执行下面三个方法
    //
    ////////////////////////////////////////////////////
    @Override
    public void call(Object obj) {
        //线程工作执行完了,obj = 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("在RtuDataNode内发生异常", e);
        }
    }
    private void doNotifyMs(String receiverWebUrl, List<JSONObject> list){
        WebRequestDeal deal = SpringContextUtil.getBean(WebRequestDeal.class) ;
        deal.deal(receiverWebUrl, list);
    }
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterUnit.java
New file
@@ -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 æŽ¥æ”¶è€…web http post url
     */
    public void registerMsReceiver(String webUrl){
        if(manager != null){
            manager.registerMsReceiver(webUrl) ;
        }
    }
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsCenterUnitAdapter.java
New file
@@ -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();
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/MsObj.java
New file
@@ -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 {
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/msCenter/TestMsResource.java
New file
@@ -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,并在PipIrrMwRtuApplication注解@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);
    }
}
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 ;
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 æœåŠ¡
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和name会有值
            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和name有值)
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和name会有值
            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 æœåŠ¡
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 {
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 æ¶ˆæ¯æŽ¥æ”¶è€…web 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
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config(mj÷½­).xml
@@ -56,6 +56,14 @@
            synchroRtuClockTimepieces="300000"
    />
    <!-- RTU æ¶ˆæ¯ä¸­å¿ƒ
    enable: æ¨¡å—是否启动
    notifyInterval: æ¶ˆæ¯é€šçŸ¥é—´éš”(秒)
    -->
    <msCenter enable="true"
              notifyInterval="5"
    />
    <!-- RTU è½¯ä»¶å‡çº§
    enable: æ¨¡å—是否启动
    openNoUpgrade: é˜€å¼€ï¼ˆæ³µå¼€ï¼‰ä¸æ‰§è¡Œå‡çº§
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config(mqÃñÇÚ).xml
@@ -56,6 +56,14 @@
            synchroRtuClockTimepieces="300000"
    />
    <!-- RTU æ¶ˆæ¯ä¸­å¿ƒ
    enable: æ¨¡å—是否启动
    notifyInterval: æ¶ˆæ¯é€šçŸ¥é—´éš”(秒)
    -->
    <msCenter enable="true"
              notifyInterval="5"
    />
    <!-- RTU è½¯ä»¶å‡çº§
    enable: æ¨¡å—是否启动
    openNoUpgrade: é˜€å¼€ï¼ˆæ³µå¼€ï¼‰ä¸æ‰§è¡Œå‡çº§
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config(spɳÅÌ).xml
@@ -56,6 +56,14 @@
            synchroRtuClockTimepieces="300000"
    />
    <!-- RTU æ¶ˆæ¯ä¸­å¿ƒ
    enable: æ¨¡å—是否启动
    notifyInterval: æ¶ˆæ¯é€šçŸ¥é—´éš”(秒)
    -->
    <msCenter enable="true"
              notifyInterval="5"
    />
    <!-- RTU è½¯ä»¶å‡çº§
    enable: æ¨¡å—是否启动
    openNoUpgrade: é˜€å¼€ï¼ˆæ³µå¼€ï¼‰ä¸æ‰§è¡Œå‡çº§
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config(test²âÊÔ).xml
@@ -56,6 +56,14 @@
            synchroRtuClockTimepieces="300000"
    />
    <!-- RTU æ¶ˆæ¯ä¸­å¿ƒ
    enable: æ¨¡å—是否启动
    notifyInterval: æ¶ˆæ¯é€šçŸ¥é—´éš”(秒)
    -->
    <msCenter enable="true"
              notifyInterval="5"
    />
    <!-- RTU è½¯ä»¶å‡çº§
    enable: æ¨¡å—是否启动
    openNoUpgrade: é˜€å¼€ï¼ˆæ³µå¼€ï¼‰ä¸æ‰§è¡Œå‡çº§
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config(ymԪı).xml
@@ -56,6 +56,14 @@
            synchroRtuClockTimepieces="300000"
    />
    <!-- RTU æ¶ˆæ¯ä¸­å¿ƒ
    enable: æ¨¡å—是否启动
    notifyInterval: æ¶ˆæ¯é€šçŸ¥é—´éš”(秒)
    -->
    <msCenter enable="true"
              notifyInterval="5"
    />
    <!-- RTU è½¯ä»¶å‡çº§
    enable: æ¨¡å—是否启动
    openNoUpgrade: é˜€å¼€ï¼ˆæ³µå¼€ï¼‰ä¸æ‰§è¡Œå‡çº§
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: é˜€å¼€ï¼ˆæ³µå¼€ï¼‰ä¸æ‰§è¡Œå‡çº§
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 ;
    // å®¢æˆ·ç«¯id
    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() ;