Administrator
2024-07-18 66160634b3f6ee11af600cc17ef477aed657d28e
Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV
39个文件已修改
1个文件已删除
2个文件已添加
708 ■■■■ 已修改文件
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_3D_Up.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd10Vo.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd21Vo.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd36Vo.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd37And67Vo.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd38And68Vo.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd39And69Vo.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd3AAnd6AVo.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd3BAnd6BVo.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd3CAnd65Vo.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd3CVo.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd3DVo.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd3EVo.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd51Vo.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd5EVo.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd66Vo.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd6CVo.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd71Vo.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd92Vo.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd93Vo.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd97Vo.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd98Vo.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd99Vo.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCdA0Vo.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/Server.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/ServerProperties.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/MidResultActionFromRtu.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/MidResultActionToRtu.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpDownCommandCache.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkFindComResponse.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkRtuDealCommandResponse.java 83 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkFindComResponseV202404.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/tasks/FromRtuComResultConstantTask.java 64 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/tasks/RtuUpTask.java 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/web/comResult/CommandResultDeal.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/p206V1_0_0/RtuP206V1_0_0Ctrl.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/tcpClient/upData/UpCd83Close.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/tcpClient/upData/UpCd83Open.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/tcpClient/upData/UpCd84.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/tcpClient/upData/UpConstant.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/p206V1_0_0/ComSupportP206V1_0_0.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_3D_Up.java
@@ -2,7 +2,7 @@
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V1_0_0.*;
import com.dy.common.mw.protocol.p206V1_0_0.upVos.DataCd3CVo;
import com.dy.common.mw.protocol.p206V1_0_0.upVos.DataCd3DVo;
import com.dy.common.util.ByteUtilUnsigned;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -58,7 +58,7 @@
     */
    protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception {
        DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ;
        DataCd3CVo cdData = new DataCd3CVo() ;
        DataCd3DVo cdData = new DataCd3DVo() ;
        dV1.subData = cdData ;
        int priceInt = ByteUtilUnsigned.bytes2Short_LE(bs, ProtocolConstantV206V1_0_0.dataIndex) ;
        cdData.price = priceInt/100.0D;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd10Vo.java
@@ -21,4 +21,13 @@
        return sb.toString() ;
    }
    public String comLog(){
        StringBuilder sb = new StringBuilder() ;
        sb.append("设置RTU地址命令回复:\n");
        sb.append("   地址:");
        sb.append(newRtuAddr);
        sb.append("\n");
        return sb.toString() ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd21Vo.java
@@ -15,7 +15,7 @@
    public String toString(){
        StringBuilder sb = new StringBuilder() ;
        sb.append("   设置IP应答:\n");
        sb.append("   设置服务端IP和端口应答:\n");
        sb.append("      IP:");
        sb.append(ip);
        sb.append("      端口:");
@@ -24,4 +24,15 @@
        return sb.toString() ;
    }
    public String comLog(){
        StringBuilder sb = new StringBuilder() ;
        sb.append("设置服务端IP和端口命令回复:\n");
        sb.append("   IP:");
        sb.append(ip);
        sb.append("   端口:");
        sb.append(port);
        sb.append("\n");
        return sb.toString() ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd36Vo.java
@@ -9,7 +9,7 @@
    public String toString(){
        StringBuilder sb = new StringBuilder() ;
        sb.append("  设置询IP地址和端口:\n");
        sb.append("  设置主信道IP和端口:\n");
        sb.append("      IP地址:");
        sb.append(ip);
        sb.append("\n");
@@ -18,4 +18,15 @@
        sb.append("\n");
        return sb.toString() ;
    }
    public String comLog(){
        StringBuilder sb = new StringBuilder() ;
        sb.append("设置主信道IP和端口命令回复:\n");
        sb.append("   IP:");
        sb.append(ip);
        sb.append("   端口:");
        sb.append(port==null?"":port);
        sb.append("\n");
        return sb.toString() ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd37And67Vo.java
@@ -1,5 +1,6 @@
package com.dy.common.mw.protocol.p206V1_0_0.upVos;
import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1;
import lombok.Data;
/**
@@ -21,4 +22,19 @@
        return sb.toString() ;
    }
    public String comLog(String code){
        StringBuilder sb = new StringBuilder() ;
        if(code.equals(CodeV1_0_1.cd_37)){
            sb.append("设置流量采集周期命令回复:\n");
            sb.append("   秒钟:");
            sb.append(second);
            sb.append("\n");
        } else if(code.equals(CodeV1_0_1.cd_67)){
            sb.append("查询流量采集周期命令回复:\n");
            sb.append("   秒钟:");
            sb.append(second);
            sb.append("\n");
        }
        return sb.toString() ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd38And68Vo.java
@@ -1,5 +1,6 @@
package com.dy.common.mw.protocol.p206V1_0_0.upVos;
import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1;
import lombok.Data;
/**
@@ -21,4 +22,20 @@
        return sb.toString() ;
    }
    public String comLog(String code){
        StringBuilder sb = new StringBuilder() ;
        if(code.equals(CodeV1_0_1.cd_38)){
            sb.append("设置用户余额报警值命令回复:\n");
            sb.append("   余额:");
            sb.append(remainMoneyAlarm);
            sb.append("\n");
        } else if(code.equals(CodeV1_0_1.cd_68)){
            sb.append("查询用户余额报警值命令回复:\n");
            sb.append("   余额:");
            sb.append(remainMoneyAlarm);
            sb.append("\n");
        }
        return sb.toString() ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd39And69Vo.java
@@ -1,5 +1,6 @@
package com.dy.common.mw.protocol.p206V1_0_0.upVos;
import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1;
import lombok.Data;
/**
@@ -21,4 +22,21 @@
        return sb.toString() ;
    }
    public String comLog(String code){
        StringBuilder sb = new StringBuilder() ;
        if(code.equals(CodeV1_0_1.cd_39)){
            sb.append("设置电池电压报警值命令回复:\n");
            sb.append("   电压报警值:");
            sb.append(batteryVoltAlarm);
            sb.append("\n");
        } else if(code.equals(CodeV1_0_1.cd_69)){
            sb.append("查询电池电压报警值命令回复:\n");
            sb.append("   电压报警值:");
            sb.append(batteryVoltAlarm);
            sb.append("\n");
        }
        return sb.toString() ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd3AAnd6AVo.java
@@ -1,5 +1,6 @@
package com.dy.common.mw.protocol.p206V1_0_0.upVos;
import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1;
import lombok.Data;
/**
@@ -21,4 +22,21 @@
        return sb.toString() ;
    }
    public String comLog(String code){
        StringBuilder sb = new StringBuilder() ;
        if(code.equals(CodeV1_0_1.cd_3A)){
            sb.append("设置阀门堵转电流命令回复:\n");
            sb.append("   电流:");
            sb.append(current);
            sb.append("\n");
        } else if(code.equals(CodeV1_0_1.cd_6A)){
            sb.append("查询阀门堵转电流命令回复:\n");
            sb.append("   电流:");
            sb.append(current);
            sb.append("\n");
        }
        return sb.toString() ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd3BAnd6BVo.java
@@ -1,5 +1,6 @@
package com.dy.common.mw.protocol.p206V1_0_0.upVos;
import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1;
import lombok.Data;
/**
@@ -21,4 +22,21 @@
        return sb.toString() ;
    }
    public String comLog(String code){
        StringBuilder sb = new StringBuilder() ;
        if(code.equals(CodeV1_0_1.cd_3B)){
            sb.append("设置阀门超时时间命令回复:\n");
            sb.append("   秒钟:");
            sb.append(second);
            sb.append("\n");
        } else if(code.equals(CodeV1_0_1.cd_6B)){
            sb.append("查询阀门超时时间命令回复:\n");
            sb.append("   秒钟:");
            sb.append(second);
            sb.append("\n");
        }
        return sb.toString() ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd3CAnd65Vo.java
@@ -1,5 +1,6 @@
package com.dy.common.mw.protocol.p206V1_0_0.upVos;
import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1;
import lombok.Data;
/**
@@ -21,4 +22,20 @@
        return sb.toString() ;
    }
    public String comLog(String code){
        StringBuilder sb = new StringBuilder() ;
        if(code.equals(CodeV1_0_1.cd_3C)){
            sb.append("设置自报周期命令回复:\n");
            sb.append("   分钟:");
            sb.append(minute);
            sb.append("\n");
        } else if(code.equals(CodeV1_0_1.cd_65)){
            sb.append("查询自报周期命令回复:\n");
            sb.append("   分钟:");
            sb.append(minute);
            sb.append("\n");
        }
        return sb.toString() ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd3CVo.java
File was deleted
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd3DVo.java
@@ -10,13 +10,24 @@
 */
@Data
public class DataCd3DVo {
    public String icCardNo ;
    public Double price ;
    public String toString(){
        StringBuilder sb = new StringBuilder() ;
        sb.append("   设置黑名单应答:\n");
        sb.append("      卡号:");
        sb.append(icCardNo);
        sb.append("   设置水价应答:\n");
        sb.append("      水价:");
        sb.append(price);
        sb.append("\n");
        return sb.toString() ;
    }
    public String comLog(){
        StringBuilder sb = new StringBuilder() ;
        sb.append("设置水价命令回复:\n");
        sb.append("   水价:");
        sb.append(price);
        sb.append("\n");
        return sb.toString() ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd3EVo.java
New file
@@ -0,0 +1,34 @@
package com.dy.common.mw.protocol.p206V1_0_0.upVos;
import lombok.Data;
/**
 * @Author liurunyu
 * @Date 2024/4/10 18:44
 * @LastEditTime 2024/4/10 18:44
 * @Description
 */
@Data
public class DataCd3EVo {
    public String icCardNo ;
    public String toString(){
        StringBuilder sb = new StringBuilder() ;
        sb.append("   设置黑名单应答:\n");
        sb.append("      卡号:");
        sb.append(icCardNo);
        sb.append("\n");
        return sb.toString() ;
    }
    public String comLog(){
        StringBuilder sb = new StringBuilder() ;
        sb.append("设置黑名单命令回复:\n");
        sb.append("   卡号:");
        sb.append(icCardNo);
        sb.append("\n");
        return sb.toString() ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd51Vo.java
@@ -21,4 +21,15 @@
        return sb.toString() ;
    }
    public String comLog(){
        StringBuilder sb = new StringBuilder() ;
        sb.append("查询终端时钟命令回复:\n");
        sb.append("   时钟:");
        sb.append(rtuDt);
        sb.append("\n");
        return sb.toString() ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd5EVo.java
@@ -27,4 +27,18 @@
        }
        return sb.toString() ;
    }
    public String comLog(){
        StringBuilder sb = new StringBuilder() ;
        sb.append("   查询终端状态和报警状态命令回复:\n");
        if(alarmVo != null){
            sb.append(alarmVo.toString());
            sb.append("\n");
        }
        if(stateVo != null){
            sb.append(stateVo.toString());
            sb.append("\n");
        }
        return sb.toString() ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd66Vo.java
@@ -18,4 +18,16 @@
        sb.append("\n");
        return sb.toString() ;
    }
    public String comLog(){
        StringBuilder sb = new StringBuilder() ;
        sb.append("查询IP地址和端口命令回复:\n");
        sb.append("  IP地址:");
        sb.append(ip);
        sb.append("\n");
        sb.append("  端口号:");
        sb.append(port==null?"":port);
        sb.append("\n");
        return sb.toString() ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd6CVo.java
@@ -21,4 +21,13 @@
        return sb.toString() ;
    }
    public String comLog(){
        StringBuilder sb = new StringBuilder() ;
        sb.append("查询水价命令回复:\n");
        sb.append("   水价:");
        sb.append(price);
        sb.append("\n");
        return sb.toString() ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd71Vo.java
@@ -18,4 +18,14 @@
        return sb.toString() ;
    }
    public String comLog(){
        StringBuilder sb = new StringBuilder() ;
        sb.append("查询阀门状态命令回复:\n");
        sb.append("   阀门状态:");
        sb.append(state==null?"":state);
        sb.append(stateName==null?"":("(" + stateName + ")"));
        sb.append("\n");
        return sb.toString() ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd92Vo.java
@@ -21,4 +21,14 @@
        return sb.toString() ;
    }
    public String comLog(){
        StringBuilder sb = new StringBuilder() ;
        sb.append("强制无卡开阀命令回复:\n");
        sb.append(success?"执行":"失败");
        sb.append("\n");
        return sb.toString() ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd93Vo.java
@@ -21,4 +21,12 @@
        return sb.toString() ;
    }
    public String comLog(){
        StringBuilder sb = new StringBuilder() ;
        sb.append("强制无卡关阀命令回复:\n");
        sb.append(success?"执行":"失败");
        sb.append("\n");
        return sb.toString() ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd97Vo.java
@@ -25,4 +25,16 @@
        return sb.toString() ;
    }
    public String comLog(){
        StringBuilder sb = new StringBuilder() ;
        sb.append("APP远程开阀命令回复:\n");
        sb.append("  虚拟卡号:");
        sb.append(cardNo);
        sb.append("\n");
        sb.append("  结果:");
        sb.append(success?"执行":"失败");
        sb.append("\n");
        return sb.toString() ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd98Vo.java
@@ -25,4 +25,18 @@
        return sb.toString() ;
    }
    public String comLog(){
        StringBuilder sb = new StringBuilder() ;
        sb.append("APP远程关阀命令回复:\n");
        sb.append("  虚拟卡号:");
        sb.append(cardNo);
        sb.append("\n");
        sb.append("  结果:");
        sb.append(success?"执行":"失败");
        sb.append("\n");
        return sb.toString() ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd99Vo.java
@@ -25,4 +25,17 @@
        return sb.toString() ;
    }
    public String comLog(){
        StringBuilder sb = new StringBuilder() ;
        sb.append("定时关阀开阀命令回复:\n");
        sb.append("   虚拟卡号:");
        sb.append(cardNo);
        sb.append("\n");
        sb.append("   结果:");
        sb.append(success?"执行":"失败");
        sb.append("\n");
        return sb.toString() ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCdA0Vo.java
@@ -25,4 +25,17 @@
        return sb.toString() ;
    }
    public String comLog(){
        StringBuilder sb = new StringBuilder() ;
        sb.append("定量关阀开阀命令回复:\n");
        sb.append("   虚拟卡号:");
        sb.append(cardNo);
        sb.append("\n");
        sb.append("   结果:");
        sb.append(success?"执行":"失败");
        sb.append("\n");
        return sb.toString() ;
    }
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/Server.java
@@ -138,6 +138,21 @@
            if(ServerProperties.isLowPower == null){
                ServerProperties.isLowPower = false ;
            }
            String onlyDealRtus = conf.getSetAttrTxt(doc, "config.base", "onlyDealRtus", null, true, null) ;
            if(onlyDealRtus == null || onlyDealRtus.trim().equals("")){
                ServerProperties.onlyDealRtusTest = false ;
            }else{
                onlyDealRtus = onlyDealRtus.replaceAll(",", ",") ;
                onlyDealRtus = onlyDealRtus.replaceAll(" ", "") ;
                ServerProperties.onlyDealRtus = onlyDealRtus.split(",") ;
                if(ServerProperties.onlyDealRtus != null && ServerProperties.onlyDealRtus.length > 0){
                    ServerProperties.onlyDealRtusTest = true ;
                }else{
                    ServerProperties.onlyDealRtusTest = false ;
                }
            }
            //在支持多通信协议时,只有RTU上线了,才能识别出该RTU实际用的通信协议,进而用此协议解析上行数据及构造下行命令。
            //如果RTU未曾上线(通信中间件启动后该RTU未曾上线),那么在向它发送下行命令时,不能判断出其采用的协议,也不能构造命令,尤其是低功耗情况下,不上线是正常现象。
            // 当只有一个协议情况下,在RTU未曾上线时,也能用此协议构造命令并缓存下来,尤其适合低功耗情况。
@@ -151,7 +166,7 @@
            //针对一个RTU,下发命令的时间间隔
            ServerProperties.commandSendInterval = conf.getSetAttrPlusInt(doc, "config.base", "commandSendInterval", null, 1, 40, null) * 1000L ;
            //命令已经发送达最大次数,仍未收到命令结果,需要在缓存继续等待,其等待最大时长
            ServerProperties.cachWaitResultTimeout = conf.getSetAttrPlusInt(doc, "config.base", "cachWaitResultTimeout", null, 10, 60, null) * 1000L ;
            ServerProperties.cachWaitResultTimeout = conf.getSetAttrPlusInt(doc, "config.base", "cachWaitResultTimeout", null, 10, 360, null) * 1000L ;
            //不在线缓存的命令最大缓存时长
            ServerProperties.offLineCachTimeout = conf.getSetAttrPlusInt(doc, "config.base", "offLineCachTimeout", null, 15, 172800, null) * 1000L ;
            //TCP上行数据时刻缓存时长,当达到时长时,TCP上行数据时刻被清空,采用TCP上行数据时刻目的是,阻止上数据同时下发数据,因为RTU处理不过来
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/ServerProperties.java
@@ -6,6 +6,11 @@
    public static String orgTag = "ym" ;
    //是否为低功耗
    public static Boolean isLowPower = false ;
    //只处理指定RTU地址设备,其他设备数据丢弃,多个RTU地址用英文逗号隔开,如果配置空串(即无IMEI号),则接收全部水表数据,设置此目的是针对某个水表进行调试
    public static Boolean onlyDealRtusTest = false ;
    public static String[] onlyDealRtus ;
    //在支持多通信协议时,只有RTU上线了,才能识别出该RTU实际用的通信协议,进而用此协议解析上行数据及构造下行命令。
    //如果RTU未曾上线(通信中间件启动后该RTU未曾上线),那么在向它发送下行命令时,不能判断出其采用的协议,也不能构造命令,尤其是低功耗情况下,不上线是正常现象。
    // 当只有一个协议情况下,在RTU未曾上线时,也能用此协议构造命令并缓存下来,尤其适合低功耗情况。
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/MidResultActionFromRtu.java
@@ -34,6 +34,7 @@
                    this.nextDealRtuData(false, resFromRtu);
                    this.nextDealRtuComResult(resFromRtu);
                }else{
                    log.error("匹配命令失败,功能码是:" + ((MidResultFromRtu) result).upCode );
                    this.nextDealRtuData(false, resFromRtu);
                    //未匹配到下发的命令,命令在缓存因超时被清除了
                    RtuStatusDealer.commandFail2Success(resFromRtu.rtuAddr) ;
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/MidResultActionToRtu.java
@@ -16,7 +16,7 @@
            try {
                MidResultToRtu resToRtu = (MidResultToRtu)result ;
                TcpDownCommandCache.cacheCommand(resToRtu);
                log.info("下行命令(toRtu)" + resToRtu.downCode + "中间结果已经放入下行命令缓存中");
                log.info("下行命令(toRtu,id=" + resToRtu.commandId + ")" + resToRtu.downCode + "中间数据(MidResult)已经放入下行命令缓存中");
            } catch (Exception e) {
                log.error(e);
            }
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpDownCommandCache.java
@@ -62,7 +62,7 @@
                obj.onceReceivedResult = true ;//标识已经收到命令结果
                return res ;
            }else{
                node = node.pre ;
                node = node.next ;
            }
        }
        
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkFindComResponse.java
@@ -25,7 +25,7 @@
    @Override
    public void execute(Object data) {
        Data d = (Data)data ;
        if(d.getCommandId() != null && d.getCommandId().trim().equals("")){
        if(d.getCommandId() != null && !d.getCommandId().trim().equals("")){
            //无命令ID
            this.toNextTasks(data);
        }
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkRtuDealCommandResponse.java
@@ -2,10 +2,7 @@
import com.dy.common.mw.protocol.Data;
import com.dy.common.mw.protocol.p206V1_0_0.DataV1_0_1;
import com.dy.common.mw.protocol.p206V1_0_0.upVos.DataCd92Vo;
import com.dy.common.mw.protocol.p206V1_0_0.upVos.DataCd93Vo;
import com.dy.common.mw.protocol.p206V1_0_0.upVos.DataCd97Vo;
import com.dy.common.mw.protocol.p206V1_0_0.upVos.DataCd98Vo;
import com.dy.common.mw.protocol.p206V1_0_0.upVos.*;
import com.dy.common.util.DateTime;
import com.dy.pipIrrGlobal.pojoRm.RmCommandHistory;
import com.dy.rtuMw.server.rtuData.TaskSurpport;
@@ -43,8 +40,10 @@
                try{
                    RmCommandHistory po = sv.getCommandLog(d.commandId) ;
                    if(po != null){
                        po = this.updateCommandLogPo(po, dV1_0_1, dV1_0_1.subData) ;
                        po = this.updateCommandLogPo(po, d.code, dV1_0_1, dV1_0_1.subData) ;
                        sv.updateCommandLog(po);
                    }else{
                        log.error("未得到命令日志(" + d.getCommandId() + ")");
                    }
                }catch (Exception e){
                    log.error("保存控制器自报数据时发生异常", e);
@@ -53,27 +52,75 @@
        }
    }
    public RmCommandHistory updateCommandLogPo(RmCommandHistory po, DataV1_0_1 dV1_0_1, Object obj) throws Exception{
    public RmCommandHistory updateCommandLogPo(RmCommandHistory po, String code, DataV1_0_1 dV1_0_1, Object obj) throws Exception{
        po.setResult((byte)1);
        po.setResultTime(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt)) ;
        if(obj instanceof DataCd97Vo){
            DataCd97Vo vo = (DataCd97Vo)obj ;
            po.setResultTime(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt)) ;
            //po.setResultText((JSONObject) JSON.toJSON(vo));
            po.setResultText(vo.toString());
            po.setResultText(vo.comLog());
        }else if(obj instanceof DataCd98Vo){
            DataCd98Vo vo = (DataCd98Vo)obj ;
            po.setResultTime(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt));
            //po.setResultText((JSONObject) JSON.toJSON(vo));
            po.setResultText(vo.toString());
            po.setResultText(vo.comLog());
        }else if(obj instanceof DataCd92Vo){
            DataCd92Vo vo = (DataCd92Vo)obj ;
            po.setResultTime(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt)) ;
            //po.setResultText((JSONObject) JSON.toJSON(vo));
            po.setResultText(vo.toString());
            po.setResultText(vo.comLog());
        }else if(obj instanceof DataCd93Vo){
            DataCd93Vo vo = (DataCd93Vo)obj ;
            po.setResultTime(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt)) ;
            //po.setResultText((JSONObject) JSON.toJSON(vo));
            po.setResultText(vo.toString());
            po.setResultText(vo.comLog());
        }else if(obj instanceof DataCd3AAnd6AVo){
            DataCd3AAnd6AVo vo = (DataCd3AAnd6AVo)obj ;
            po.setResultText(vo.comLog(code));
        }else if(obj instanceof DataCd3BAnd6BVo){
            DataCd3BAnd6BVo vo = (DataCd3BAnd6BVo)obj ;
            po.setResultText(vo.comLog(code));
        }else if(obj instanceof DataCd3BAnd6BVo){
            DataCd3CAnd65Vo vo = (DataCd3CAnd65Vo)obj ;
            po.setResultText(vo.comLog(code));
        }else if(obj instanceof DataCd3DVo){
            DataCd3DVo vo = (DataCd3DVo)obj ;
            po.setResultText(vo.comLog());
        }else if(obj instanceof DataCd3EVo){
            DataCd3EVo vo = (DataCd3EVo)obj ;
            po.setResultText(vo.comLog());
        }else if(obj instanceof DataCd5EVo){
            DataCd5EVo vo = (DataCd5EVo)obj ;
            po.setResultText(vo.comLog());
        }else if(obj instanceof DataCd6CVo){
            DataCd6CVo vo = (DataCd6CVo)obj ;
            po.setResultText(vo.comLog());
        }else if(obj instanceof DataCd10Vo){
            DataCd10Vo vo = (DataCd10Vo)obj ;
            po.setResultText(vo.comLog());
        }else if(obj instanceof DataCd21Vo){
            DataCd21Vo vo = (DataCd21Vo)obj ;
            po.setResultText(vo.comLog());
        }else if(obj instanceof DataCd36Vo){
            DataCd36Vo vo = (DataCd36Vo)obj ;
            po.setResultText(vo.comLog());
        }else if(obj instanceof DataCd37And67Vo){
            DataCd37And67Vo vo = (DataCd37And67Vo)obj ;
            po.setResultText(vo.comLog(code));
        }else if(obj instanceof DataCd38And68Vo){
            DataCd38And68Vo vo = (DataCd38And68Vo)obj ;
            po.setResultText(vo.comLog(code));
        }else if(obj instanceof DataCd39And69Vo){
            DataCd39And69Vo vo = (DataCd39And69Vo)obj ;
            po.setResultText(vo.comLog(code));
        }else if(obj instanceof DataCd51Vo){
            DataCd51Vo vo = (DataCd51Vo)obj ;
            po.setResultText(vo.comLog());
        }else if(obj instanceof DataCd66Vo){
            DataCd66Vo vo = (DataCd66Vo)obj ;
            po.setResultText(vo.comLog());
        }else if(obj instanceof DataCd71Vo){
            DataCd71Vo vo = (DataCd71Vo)obj ;
            po.setResultText(vo.comLog());
        }else if(obj instanceof DataCd99Vo){
            DataCd99Vo vo = (DataCd99Vo)obj ;
            po.setResultText(vo.comLog());
        }else if(obj instanceof DataCdA0Vo){
            DataCdA0Vo vo = (DataCdA0Vo)obj ;
            po.setResultText(vo.comLog());
        }
        return po ;
    }
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkFindComResponseV202404.java
@@ -24,7 +24,7 @@
    @Override
    public void execute(Object data) {
        Data d = (Data)data ;
        if(d.getCommandId() != null && d.getCommandId().trim().equals("")){
        if(d.getCommandId() != null && !d.getCommandId().trim().equals("")){
            //无命令ID
            this.toNextTasks(data);
        }
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/tasks/FromRtuComResultConstantTask.java
@@ -65,38 +65,38 @@
    //以下实现,采用了递归调用,当队列缓存结点很多时,会产生栈溢出异常
    //
    ////////////////////////////////////////////////
    /**
     * 处理上行数据
     */
    public Integer dealRtuComResult_() {
        Node first = RtuComResultCache.getFirstQueueNode() ;
        if(first != null){
            Integer count = RtuComResultCache.size() ;
            Node last = RtuComResultCache.getLastQueueNode() ;
            this.doDealRtuComResult_(first, last);
            return count ;
        }
        return null ;
    }
    /**
     * 处理缓存的上行数据节点
     * @param first 第一个节点
     * @param last 最后一个节点
     */
    private void doDealRtuComResult_(Node first, Node last){
        if(last != null){
            //在dealNode方法中,可能要把last从队列中移除,这时last.pre为空,所以提前把last.pre取出来
            Node pre = last.pre ;
            dealNode(last) ;
            if(first != last){
                doDealRtuComResult_(first, pre) ;
            }else{
                //停止
            }
        }
    }
//    /**
//     * 处理上行数据
//     */
//    public Integer dealRtuComResult_() {
//        Node first = RtuComResultCache.getFirstQueueNode() ;
//        if(first != null){
//            Integer count = RtuComResultCache.size() ;
//            Node last = RtuComResultCache.getLastQueueNode() ;
//            this.doDealRtuComResult_(first, last);
//            return count ;
//        }
//        return null ;
//    }
//
//    /**
//     * 处理缓存的上行数据节点
//     * @param first 第一个节点
//     * @param last 最后一个节点
//     */
//    private void doDealRtuComResult_(Node first, Node last){
//        if(last != null){
//            //在dealNode方法中,可能要把last从队列中移除,这时last.pre为空,所以提前把last.pre取出来
//            Node pre = last.pre ;
//            dealNode(last) ;
//            if(first != last){
//                doDealRtuComResult_(first, pre) ;
//            }else{
//                //停止
//            }
//        }
//    }
//
    /**
     * 处理一个节点
     * @param node 节点
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/tasks/RtuUpTask.java
@@ -78,18 +78,33 @@
                }
            }
        }
        if(rtuAddr != null){
            if(protocolName == null){
                protocolName = TcpSessionCache.getTcpProtocolName(rtuAddr) ;
            boolean toDeal = true ;
            if(ServerProperties.onlyDealRtusTest){
                boolean find = false ;
                for(String testRtu : ServerProperties.onlyDealRtus){
                    if(testRtu.equals(rtuAddr)){
                        find = true ;
                        break ;
                    }
                }
                if(!find){
                    //不在处理范围内
                    toDeal = false ;
                }
            }
            //设置收到数据时刻
            TcpSessionCache.cacheUpDataTime(rtuAddr);
            if(protocolName != null){
                //对上行数据进行处理
                this.dealUpData(session, rtuAddr, protocolName, isOnLine, upBuf, upHex) ;
            if(toDeal){
                if(protocolName == null){
                    protocolName = TcpSessionCache.getTcpProtocolName(rtuAddr) ;
                }
                //设置收到数据时刻
                TcpSessionCache.cacheUpDataTime(rtuAddr);
                if(protocolName != null){
                    //对上行数据进行处理
                    this.dealUpData(session, rtuAddr, protocolName, isOnLine, upBuf, upHex) ;
                }
            }
        }
    }
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/web/comResult/CommandResultDeal.java
@@ -2,7 +2,8 @@
import com.dy.common.mw.protocol.Command;
import com.dy.common.mw.protocol.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.*;
import org.springframework.http.converter.StringHttpMessageConverter;
@@ -18,10 +19,11 @@
 * @LastEditTime 2023/12/21 20:28
 * @Description
 */
@Slf4j
@Component()
public class CommandResultDeal {
    private static final Logger log = LogManager.getLogger(CommandResultDeal.class.getName());
    private RestTemplate restTemplate;
    @Autowired
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml
@@ -5,6 +5,7 @@
        基本配置
        orgTag 机构tag(对应机构tag,和数据源后缀)
        isLowPower: 是否为低功耗
        onlyDealRtus:只处理指定RTU地址设备,其他设备数据丢弃,多个RTU地址用英文逗号隔开,
        onlyOneProtocol:在支持多通信协议时,只有RTU上线了,才能识别出该RTU实际用的通信协议,进而用此协议解析上行数据及构造下行命令。
                         如果RTU未曾上线(通信中间件启动后该RTU未曾上线),那么在向它发送下行命令时,不能判断出其采用的协议,也不能构造命令,尤其是低功耗情况下,不上线是正常现象。
                         当只有一个协议情况下,在RTU未曾上线时,也能用此协议构造命令并缓存下来,尤其适合低功耗情况。
@@ -22,10 +23,11 @@
        <base
            orgTag="ym"
            isLowPower="false"
            onlyOneProtocol="true"
            onlyDealRtus="532328059995"
            onlyOneProtocol="false"
            downComandMaxResendTimes="1"
            commandSendInterval="2"
            cachWaitResultTimeout="60"
            cachWaitResultTimeout="120"
            offLineCachTimeout="86400"
            lastUpDataTimeLive="500"
            dbDataIdSuffix="0"
pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/p206V1_0_0/RtuP206V1_0_0Ctrl.java
@@ -3,6 +3,7 @@
import com.dy.common.webUtil.BaseResponse;
import com.dy.pipIrrMwTestRtu.tcpClient.upData.UpCd83Close;
import com.dy.pipIrrMwTestRtu.tcpClient.upData.UpCd83Open;
import com.dy.pipIrrMwTestRtu.tcpClient.upData.UpCd84;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -22,9 +23,11 @@
    @GetMapping(path = "test")
    public BaseResponse<String> test(String com) {
        if(com.equals("83Open")){
            this.cd83Open() ;
            UpCd83Open.upCd83Data();
        }else if(com.equals("83Close")){
            this.cd83Close() ;
            UpCd83Close.upCd83Data();
        }else if(com.equals("84")){
            UpCd84.upCd84Data();
        }
        BaseResponse<String> rt = new BaseResponse<String>() ;
        rt.setCode("001") ;
@@ -32,18 +35,6 @@
        rt.setSuccess(true) ;
        return rt ;
    }
    private void cd83Open(){
        UpCd83Open.upCd83Data();
    }
    private void cd83Close(){
        UpCd83Close.upCd83Data();
    }
}
pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/tcpClient/upData/UpCd83Close.java
@@ -2,7 +2,6 @@
import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate;
import com.dy.common.util.ByteUtil;
import com.dy.common.util.ByteUtilUnsigned;
import com.dy.pipIrrMwTestRtu.ServerProperties;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -31,13 +30,14 @@
    /**
     * 构造心跳数据
     * 构造上行数据
     *
     * @return 字节数组
     * @throws Exception 异常
     */
    private static byte[] createData(String rtuAddr) throws Exception {
        UpConstant.closeValve();
        UpConstant.addValve();//调整流量
        byte[] bytes = creatHead(rtuAddr, "83", (byte)0xB0);
        byte[] bs = new byte[1] ;
pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/tcpClient/upData/UpCd83Open.java
@@ -31,7 +31,7 @@
    /**
     * 构造心跳数据
     * 构造上行数据
     *
     * @return 字节数组
     * @throws Exception 异常
pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/tcpClient/upData/UpCd84.java
New file
@@ -0,0 +1,89 @@
package com.dy.pipIrrMwTestRtu.tcpClient.upData;
import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate;
import com.dy.common.util.ByteUtil;
import com.dy.pipIrrMwTestRtu.ServerProperties;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
/**
 * @Author: liurunyu
 * @Date: 2024/7/16 19:32
 * @Description
 */
public class UpCd84 extends UpData {
    private static final Logger log = LogManager.getLogger(UpCd84.class);
    public static void upCd84Data() {
        try {
            if (UpData.session != null && UpData.session.isConnected()) {
                byte[] bs = createData(ServerProperties.rtuAddr);
                UpData.upSend(bs);
            } else {
                log.error("未连接通信中间件,不能发送数据");
            }
        } catch (Exception e) {
            log.error("向通信中间件发送数据产生异常", e);
        }
    }
    /**
     * 构造心跳数据
     *
     * @return 字节数组
     * @throws Exception 异常
     */
    private static byte[] createData(String rtuAddr) throws Exception {
        UpConstant.addValve();//调整流量
        byte[] bytes = creatHead(rtuAddr, "84", (byte)0xB0);
        byte[] bs = new byte[1] ;
        bs[0] = (byte)0x01 ;//刷卡开阀
        bytes = ByteUtil.bytesMerge(bytes, bs) ;
        bs = new byte[1] ;
        bs[0] = (byte)0x01 ;//卡类型 用户卡
        bytes = ByteUtil.bytesMerge(bytes, bs) ;
        bs = new byte[4] ;//IC卡地址
        ByteUtil.hex2Bytes_LE(ServerProperties.icCardAddr, bs, 0);
        bytes = ByteUtil.bytesMerge(bytes, bs) ;
        bs = new byte[8] ;//IC卡编号
        GlCreate.createIcCardNo(ServerProperties.icCardNo, bs, 0);
        bytes = ByteUtil.bytesMerge(bytes, bs) ;
        bs = new byte[4] ;//用水户余额
        ByteUtil.int2BCD_LE(UpConstant.remainMoney, bs, 0);
        bytes = ByteUtil.bytesMerge(bytes, bs) ;
        bs = new byte[5] ;//累计流量
        ByteUtil.int2BCD_LE(UpConstant.totalAmount, bs, 0);
        bytes = ByteUtil.bytesMerge(bytes, bs) ;
        bs = new byte[5] ;//瞬时流量
        ByteUtil.int2BCD_LE(UpConstant.instantAmount, bs, 0);
        bytes = ByteUtil.bytesMerge(bytes, bs) ;
        bs = new byte[]{0x00, 0x00} ;//报警
        bytes = ByteUtil.bytesMerge(bytes, bs) ;
        bs = new byte[]{0x00, 0x00} ;//状态
        bytes = ByteUtil.bytesMerge(bytes, bs) ;
        bs = new byte[6] ;//控制器时钟
        GlCreate.createTp(bs, 0);
        bytes = ByteUtil.bytesMerge(bytes, bs) ;
        GlCreate.createLen(bytes);//长度放字节数组中
        byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRC和尾叠加字节数组中
        bytes = ByteUtil.bytesMerge(bytes, bsTail) ;
        return bytes ;
    }
}
pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/java/com/dy/pipIrrMwTestRtu/tcpClient/upData/UpConstant.java
@@ -13,15 +13,16 @@
    private static String openValveDt ;
    private static String closeValveDt ;
    public static Integer instantAmount = 10123;//瞬时流量10.000
    public static Integer totalAmount = 1234567;//实为12345.67
    public static Integer remainMoney = 56789;//实为567.89
    public static Integer thisAmount = 1000;//实为10.00
    public static Integer thisMoney = 1000;//实为10.00
    public static Integer thisAmount = 0;//
    public static Integer thisMoney = 0;//
    public static Integer thisTime = 10;//实为10
    public static Integer thisPrice = 100;//实为1.00
    public static Integer perAmount = thisAmount;
    public static Integer perMoney = thisMoney;
    public static Integer perAmount = 10;
    public static Integer perMoney = 0;
    public static void clearOpenValveDt(){
@@ -40,7 +41,11 @@
        return closeValveDt ;
    }
    public static void closeValve(){
    public static void addValve(){
        perMoney = perAmount / (thisPrice / 100) ;
        thisAmount += perAmount ;
        thisMoney += perMoney ;
        totalAmount = totalAmount + perAmount ;
        remainMoney = remainMoney - perMoney ;
    }
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/p206V1_0_0/ComSupportP206V1_0_0.java
@@ -20,8 +20,12 @@
public class ComSupportP206V1_0_0 {
    protected static String mwUrlTest = "http://127.0.0.1:8070/rtuMw/com/test" ;
    protected static String mwUrlSendCom = "http://127.0.0.1:8070/rtuMw/com/send" ;
    protected static String rtuAddr = "532328059995" ;
//    protected static String mwUrlTest = "http://8.140.179.55:8071/rtuMw/com/test" ;
//    protected static String mwUrlSendCom = "http://8.140.179.55:8071/rtuMw/com/send" ;
//    protected static String rtuAddr = "620202000066" ;
    protected static String rtuResultSendWebUrl = "http://127.0.0.1:65535/test/comRes/receive" ;
    protected static String vsIcCardNo = "61181622830147822" ;//虚拟IC卡编号(用户虚拟卡序列号)