liurunyu
2025-01-22 4917ae8ab0ef975560674adf20d7001bef0a47d9
通信中间件代码优化;取水口统合数据增加远程的属性内容。
3个文件已修改
2个文件已添加
123 ■■■■■ 已修改文件
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/VoAllRound/VoArIntakeRemote.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoAllRound/Ar4RemoteMapper.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/Ar4RemoteMapper.xml 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpDownCommandObj.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/allRound/Ar4RemoteSv.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/VoAllRound/VoArIntakeRemote.java
@@ -2,6 +2,7 @@
import com.alibaba.fastjson2.annotation.JSONField;
import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import lombok.Data;
@@ -33,16 +34,19 @@
    /**
     * 最新报警时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    public Date alarmDt ;
    /**
     * 最后开阀时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    public Date lastOpenDt ;
    /**
     * 最后关闭时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    public Date lastCloseDt ;
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoAllRound/Ar4RemoteMapper.java
New file
@@ -0,0 +1,33 @@
package com.dy.pipIrrGlobal.daoAllRound;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dy.pipIrrGlobal.VoAllRound.VoArIntakeRemote;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * @Author: liurunyu
 * @Date: 2025/1/14 16:45
 * @Description
 */
@Mapper
public interface Ar4RemoteMapper extends BaseMapper<Object> {
    /**
     * 查询取水口最新报警信息
     * @param intakeId
     * @return
     */
    List<VoArIntakeRemote> alarmInfo(@Param("intakeId") Long intakeId) ;
    /**
     * 查询取水口最新开关阀信息
     * @param intakeId
     * @return
     */
    List<VoArIntakeRemote> openCloseValveInfo(@Param("intakeId") Long intakeId) ;
}
pipIrr-platform/pipIrr-global/src/main/resources/mapper/Ar4RemoteMapper.xml
New file
@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dy.pipIrrGlobal.daoAllRound.Ar4RemoteMapper">
    <select id="alarmInfo" resultType="com.dy.pipIrrGlobal.VoAllRound.VoArIntakeRemote">
        select
        CONCAT(
        IF(alarm_loss = 1, '漏损报警,', ''),
        IF(alarm_battery_volt = 1, '电池电压报警,', ''),
        IF(alarm_valve = 1, '阀门报警,', ''),
        IF(alarm_water_meter_fault = 1, '流量计故障报警,', '')
        ) AS alarm,
        dt AS alarmDt
        from rm_alarm_state_last rasl
        where intake_id = #{intakeId,jdbcType=BIGINT}
    </select>
    <select id="openCloseValveInfo" resultType="com.dy.pipIrrGlobal.VoAllRound.VoArIntakeRemote">
        select
        op_dt AS lastOpenDt,
        cl_dt AS lastCloseDt
        from rm_open_close_valve_last rocvl
        where intake_id = #{intakeId,jdbcType=BIGINT}
    </select>
</mapper>
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpDownCommandObj.java
@@ -75,15 +75,16 @@
        Long lastDownComTime = tcpSe.lastDownComTime ;
        boolean nowSend = false ;
        if(this.result.isQuickSend){
            //在命令构建时,只有在低功耗情况下,才会把isQuickSend付值为true
            //未收到命令结果,未达到最大发送次数,RTU在线,离上行数据时刻不近,当前是速发命令,满足发送命令条件,执行发送命令
            nowSend = true ;
        }else if(lastDownComTime == null){
            //未收到命令结果,未达到最大发送次数,RTU在线,离上行数据时刻不近,当前RTU上线以来未曾下发过命令,满足发送命令条件,执行发送命令
            nowSend = true ;
        }else if(this.result.isFastCom && now - lastDownComTime >= ServerProperties.fastCommandSendInterval){
        }else if(this.result.isFastCom && (now - lastDownComTime) >= ServerProperties.fastCommandSendInterval){
            //未收到命令结果,未达到最大发送次数,RTU在线,离上行数据时刻不近,RTU上线以来曾下发过命令,当前命令是快速命令且超过命令下发间隔,满足发送命令条件,执行发送命令
            nowSend = true ;
        }else if(!this.result.isFastCom && now - lastDownComTime >= ServerProperties.commandSendInterval){
        }else if(!this.result.isFastCom && (now - lastDownComTime) >= ServerProperties.commandSendInterval){
            //未收到命令结果,未达到最大发送次数,RTU在线,离上行数据时刻不近,RTU上线以来曾下发过命令,当前命令非快速命令,RTU下发命令间隔超过命令下发间隔,满足发送命令条件,执行发送命令
            nowSend = true ;
        }
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/allRound/Ar4RemoteSv.java
@@ -7,6 +7,7 @@
import com.dy.common.webUtil.QueryResultVo;
import com.dy.pipIrrGlobal.VoAllRound.VoArIntakeRemote;
import com.dy.pipIrrGlobal.daoAllRound.Ar4BaseMapper;
import com.dy.pipIrrGlobal.daoAllRound.Ar4RemoteMapper;
import com.dy.pipIrrGlobal.rtuMw.CodeLocal;
import com.dy.pipIrrGlobal.rtuMw.Web2RtuMw;
import com.dy.pipIrrGlobal.voPr.VoOnLineIntake;
@@ -32,6 +33,9 @@
    private Ar4BaseMapper baseDao;
    @Autowired
    private Ar4RemoteMapper remoteDao;
    @Autowired
    private Environment env;
    @Autowired
@@ -43,12 +47,33 @@
     */
    public QueryResultVo<VoArIntakeRemote> intakeInfo(Long intakeId){
        VoArIntakeRemote rVo = new VoArIntakeRemote() ;
        String rtuAddr = this.getRtuAddr(intakeId);
        this.getRtuOnLine(intakeId, rtuAddr, rVo);
        this.getAlarmInfo(intakeId, rtuAddr, rVo);
        this.getOpenCloseValveInfo(intakeId, rtuAddr, rVo);
        return null ;
    }
        String rtuAddr = null ;
    /**
     * 获取取水口对应的RTU地址
     * @param intakeId 取水口ID
     * @return RTU地址
     */
    private String getRtuAddr(Long intakeId){
        List<String> rtuAddrs = baseDao.intakeRtuAddr(intakeId) ;
        if(rtuAddrs != null && rtuAddrs.size() > 0){
            rtuAddr = rtuAddrs.get(0) ;
            return rtuAddrs.get(0) ;
        }
        return null ;
    }
    /**
     * 得到取水RTU在线情况
     * @param intakeId
     * @param rtuAddr
     * @param rVo
     */
    private void getRtuOnLine(Long intakeId, String rtuAddr, VoArIntakeRemote rVo){
        if(rtuAddr != null){
            //向通信中间件发关命令,查询部分RTU在线情况
            Command com = this.createInnerCommand(CodeLocal.onLinePart);
@@ -77,7 +102,29 @@
                log.error("通信中间件返回内部命令结果为null");
            }
        }
        return null ;
    }
    /**
     * 得到取水口最新报警信息
     * @param intakeId
     */
    private void getAlarmInfo(Long intakeId, String rtuAddr, VoArIntakeRemote rVo){
        List<VoArIntakeRemote> list = remoteDao.alarmInfo(intakeId);
        if(list != null && list.size() > 0){
            VoArIntakeRemote vo = list.get(0) ;
            rVo.alarm = vo.alarm ;
            rVo.alarmDt = vo.alarmDt ;
        }
    }
   /**
     * 得到取水口最新开关阀信息
     * @param intakeId
     */
    private void getOpenCloseValveInfo(Long intakeId, String rtuAddr, VoArIntakeRemote rVo){
        List<VoArIntakeRemote> list = remoteDao.openCloseValveInfo(intakeId);
        if(list != null && list.size() > 0){
            VoArIntakeRemote vo = list.get(0) ;
            rVo.lastOpenDt = vo.lastOpenDt ;
            rVo.lastCloseDt = vo.lastCloseDt ;
        }
    }
}