liurunyu
2024-05-30 c929083f415ef98765afec91d5a8c88be4450f5b
为甘肃嘉峪关项目基于靳总制定协议实现一款产品
1 文件已复制
2 文件已重命名
26个文件已修改
1个文件已添加
1个文件已删除
705 ■■■■■ 已修改文件
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultFromRtu.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultToRtu.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CommonV1_0_1.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83CloseVo.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd84Vo.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd97Vo.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd98Vo.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCdC0Vo.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DriverV1_0_1.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/OnLineV1_0_1.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/PrefixedDataAvailableV1_0_1.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/ProtocolConstantV206V1_0_0.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/downVos/Com97Vo.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/downVos/Com98Vo.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_02_Down.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_02_Up.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Up.java 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_84_Up.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_97_Down.java 55 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_98_Down.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Up.java 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/global/GlCreate.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/说明.txt 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/CommonV202404.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/MidResultActionFromRtu.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/PipIrrMwTestWebApplication.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/test/ComSupportP206V100.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/test/ComSupportP206V202404.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/test/CommandP206V100Ctrl.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/test/CommandP206V202404Ctrl.java 91 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-webchat/pipIrr-web-webchat.iml 179 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultFromRtu.java
@@ -1,5 +1,7 @@
package com.dy.common.mw.protocol;
import com.dy.common.mw.protocol.p206V1_0_0.*;
/**
 * ä»ŽRTU收到数据
 */
@@ -26,11 +28,36 @@
        ProtocolUnit.getInstance().adapter.getSingleActionFromRtu(this.protocolName).doAction(this); 
    }
    
    public void matchedCommand(String commandId, String rtuResultSendWebUrl){
    public void matchedCommand(String commandId, Object toRtuMidResultParam, String rtuResultSendWebUrl){
        this.commandId = commandId ;
        if(this.data != null){
            this.data.setCommandId(commandId);
        }
        if(toRtuMidResultParam != null){
            if(protocolName != null && protocolName.equals(ProtocolConstantV206V1_0_0.protocolName)){
                if(upCode != null && upCode.equals(CodeV1_0_1.cd_97)){
                    if(data.subData != null && data.subData instanceof DataV1_0_1){
                        DataV1_0_1 dataV1_0_1 = (DataV1_0_1)data.subData ;
                        if(dataV1_0_1 != null && dataV1_0_1.subData != null && dataV1_0_1.subData instanceof DataCd97Vo){
                            DataCd97Vo dataCd97Vo = (DataCd97Vo)dataV1_0_1.subData ;
                            if(dataCd97Vo != null && dataCd97Vo.cardNo != null){
                                dataCd97Vo.cardNo = (String)toRtuMidResultParam + dataCd97Vo.cardNo ;
                            }
                        }
                    }
                }else if(upCode != null && upCode.equals(CodeV1_0_1.cd_98)){
                    if(data.subData != null && data.subData instanceof DataV1_0_1){
                        DataV1_0_1 dataV1_0_1 = (DataV1_0_1)data.subData ;
                        if(dataV1_0_1 != null && dataV1_0_1.subData != null && dataV1_0_1.subData instanceof DataCd98Vo){
                            DataCd98Vo dataCd98Vo = (DataCd98Vo)dataV1_0_1.subData ;
                            if(dataCd98Vo != null && dataCd98Vo.cardNo != null){
                                dataCd98Vo.cardNo = (String)toRtuMidResultParam + dataCd98Vo.cardNo ;
                            }
                        }
                    }
                }
            }
        }
        this.rtuResultSendWebUrl = rtuResultSendWebUrl ;
        if(this.data != null){
            this.data.setRtuResultSendWebUrl(rtuResultSendWebUrl);
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultToRtu.java
@@ -23,7 +23,9 @@
    
    public boolean isSendFirst;//优先其他发送,例如各命令的应答
    public boolean isQuickSend;//速发命令,即不受下发数据时间间隔限制
    public Object param ;//缓存一些数据,例如为兼容王工(江海)协议与靳总协议(虚拟IC卡编号长度不一致),把不兼容的虚拟IC卡编号的前半部分放入此处
    public MidResultToRtu(){
        hasResponse = true ;
        isCachForOffLine = false ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CommonV1_0_1.java
@@ -82,7 +82,7 @@
    public String parseRtuAddr(byte[] bs)throws Exception{
        String rtuAddrBCD = "" + ByteUtil.BCD2Long_BE(bs, ProtocolConstantV206V1_0_0.rtuAddr1Index_start, ProtocolConstantV206V1_0_0.rtuAddr1Index_end) ;
        String rtuAddrStr = "" + ByteUtilUnsigned.bytes2Short_LE(bs, ProtocolConstantV206V1_0_0.rtuAddr2Index_start) ;
        while(rtuAddrStr.length() < 5){
        while(rtuAddrStr.length() <= 5){
            rtuAddrStr = "0" + rtuAddrStr ;
        }
        return rtuAddrBCD + rtuAddrStr ;
@@ -146,9 +146,25 @@
        //DIR = 0
        return b ;
    }
    /**
     * å¾—到IC卡类型名称 ï¼ˆ å¡ç±»åž‹(1:用户卡;2:管理员卡;3:调试卡;4:开关阀卡;5:清空卡))
     * @param type å­—节
     * @return åç§°
     */
    public static String icCardType(byte type){
        return switch (type) {
            case 1 -> "用户卡";
            case 2 -> "管理员卡";
            case 3 -> "调试卡";
            case 4 -> "开关阀卡";
            case 5 -> "清空卡";
            default -> "未知";
        };
    }
    /**
     * å¾—到关开阀类型名称
     * å¼€å…³é˜€ç±»åž‹(1:刷卡开阀;2:刷卡关阀;3:中心站开阀;4:中心站关阀;5:欠费关阀;6:流量计故障关阀;7:紧急关闭;8:用户远程开阀;9:用户远程关阀;10:开关阀卡关阀;11:开关阀卡刷卡卡开阀;)
     * @param type å­—节
     * @return åç§°
     */
@@ -163,10 +179,47 @@
            case 7 -> "紧急关阀";
            case 8 -> "用户远程开阀";
            case 9 -> "用户远程关阀";
            case 16 -> "管道无水自动关阀";
            case 10 -> "开关阀卡关阀";
            case 11 -> "开关阀卡开阀";
            default -> "未知";
        };
    }
    public static Boolean isCloseValveType(byte type){
        return switch (type) {
            case 1 -> false ;
            case 2 -> true ;
            case 3 -> false ;
            case 4 -> true ;
            case 5 -> true ;
            case 6 -> true ;
            case 7 -> true ;
            case 8 -> false ;
            case 9 -> true ;
            case 10 -> true ;
            case 11 -> false ;
            default -> null ;
        };
    }
    /**
     * å¤„理IC卡编号,靳总制定的协议要求10位IC卡编号
     * @param icCardNo
     * @return
     */
    public static String[] dealIcCardNo(String icCardNo){
        if(icCardNo.length() > 10){
            String tail = icCardNo.substring(icCardNo.length() - 10) ;
            String head = icCardNo.substring(0, icCardNo.length() - 10) ;
            return new String[]{head , tail} ;
        }else if(icCardNo.length() < 10){
            while(icCardNo.length() != 10){
                icCardNo = "0" + icCardNo ;
            }
            return new String[]{null , icCardNo} ;
        }else{
            return new String[]{null , icCardNo} ;
        }
    }
    
    /*
     * åˆ†æžç‰ˆæœ¬å·
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83CloseVo.java
@@ -17,6 +17,9 @@
    public Double thisAmount ;//用水户本次用水量:累计流量5字节BCD码,取值范围0~9999999999,单位为m3。
    public Double thisMoney ;//用水户本次消费金额:用户余额4字节BCD码,取值范围0.00~999999.99,单位为元。
    public Integer thisTime ;//用水户本次用水时长:用水时长2字节BCD码,取值范围0~9999,单位为分钟。
    public Byte priceType ;//水价类型(1:水卡水价,2:控制器水价)
    public Double price ;//æ°´ä»·
    public Byte cardType ;//卡类型
    public String rtuDt ;//控制器时钟
    public String toString(){
@@ -52,6 +55,15 @@
        sb.append("      æœ¬æ¬¡ç”¨æ°´æ—¶é•¿ï¼ˆåˆ†é’Ÿï¼‰ï¼š");
        sb.append(thisTime==null?"":thisTime);
        sb.append("\n");
        sb.append("      æ°´ä»·ç±»åž‹ï¼š");
        sb.append(priceType ==null?"": (priceType==1?"IC卡水价":(priceType==2?"控制器水价":"未知")));
        sb.append("\n");
        sb.append("      æ°´ä»·ï¼š");
        sb.append(price ==null?"": price);
        sb.append("\n");
        sb.append("      å¡ç±»åž‹ï¼š");
        sb.append(cardType==null?"未知":CommonV1_0_1.icCardType(cardType)) ;
        sb.append("\n");
        sb.append("      æŽ§åˆ¶å™¨æ—¶é’Ÿï¼š");
        sb.append(rtuDt==null?"":rtuDt);
        sb.append("\n");
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd84Vo.java
@@ -7,15 +7,31 @@
 */
@Data
public class DataCd84Vo {
    public Byte opType;//开关阀类型(1:刷卡开阀;2:刷卡关阀;3:中心站开阀;4:中心站关阀;5:欠费关阀;6:流量计故障关阀;7:紧急关闭;8:用户远程开阀;9:用户远程关阀;10:开关阀卡关阀;11:开关阀卡刷卡卡开阀;)
    public Byte cardType ;//卡类型(1:用户卡;2:管理员卡;3:调试卡;4:开关阀卡;5:清空卡)
    public String cardAddr ;//IC卡地址(8位字符)
    public String cardNo ;//IC卡编号
    public Double remainMoney ;//剩余金额:用户余额4字节BCD码,取值范围0.00~999999.99,单位为元
    public Double totalAmount; //累计流量(本次开阀以来的累计流量):5字节BCD码,取值范围0~9999999999,单位为m3。
    public Double instantAmount; //瞬时流量:5字节BCD码,取值范围0~9999999.999,单位为m3/h。
    public String rtuDt ;//控制器时钟
    public DataAlarmVo alarmVo ;//报警
    public DataStateVo stateVo ;//状态
    public String toString(){
        StringBuilder sb = new StringBuilder() ;
        sb.append("   ç»ˆç«¯å¼€é˜€å·¥ä½œæŠ¥:\n");
        sb.append("      å¼€é˜€ç±»åž‹ï¼š");
        sb.append(opType==null?"未知":CommonV1_0_1.openCloseValveType(opType));
        sb.append("\n");
        sb.append("      IC卡类型:");
        sb.append(cardType==null?"未知":CommonV1_0_1.icCardType(cardType)) ;
        sb.append("\n");
        sb.append("      IC卡地址:");
        sb.append(cardAddr);
        sb.append("\n");
        sb.append("      IC卡编号:");
        sb.append(cardNo);
        sb.append("\n");
@@ -31,6 +47,14 @@
        sb.append("      æŽ§åˆ¶å™¨æ—¶é’Ÿï¼š");
        sb.append(rtuDt==null?"":rtuDt);
        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/DataCd97Vo.java
@@ -18,6 +18,7 @@
        sb.append("   APP远程开阀应答:\n");
        sb.append("      è™šæ‹Ÿå¡å·ï¼š");
        sb.append(cardNo);
        sb.append("\n");
        sb.append("      ç»“果:");
        sb.append(success?"执行":"失败");
        sb.append("\n");
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd98Vo.java
@@ -15,9 +15,10 @@
    public String toString(){
        StringBuilder sb = new StringBuilder() ;
        sb.append("   APP远程开阀应答:\n");
        sb.append("   APP远程关阀应答:\n");
        sb.append("      è™šæ‹Ÿå¡å·ï¼š");
        sb.append(cardNo);
        sb.append("\n");
        sb.append("      ç»“果:");
        sb.append(success?"执行":"失败");
        sb.append("\n");
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCdC0Vo.java
@@ -11,9 +11,10 @@
    public Double totalAmount; //累计流量:5字节BCD码,取值范围0~9999999999,单位为m3。
    public Double lossAmount; //损失流量(从0时到当前的漏损累计流量,24时一个周期,0时归0):5字节BCD码,取值范围0~9999999999,单位为m3。
    public Double waterPress; //水压:4字节BCD码,取值范围0~999999.99,单位为KPa。
    public Double batteryVolt;//蓄电池电压:4字节BCD码,取值范围0~99.99,单位为V。
    public Double sunVolt ;//太阳能电压:4字节BCD码,取值范围0~99.99,单位为V。
    public Double batteryVolt;//蓄电池电压:2字节BCD码,取值范围0~99.99,单位为V。
    public Double sunVolt ;//太阳能电压:2字节BCD码,取值范围0~99.99,单位为V。
    public Integer signalValue; //信号强度:1字节BCD码,取值范围0~99。
    public Double waterPrice ;//æ°´ä»·:2字节BCD码,取值范围0~99.99,单位为V。
    public String rtuDt ;//控制器时钟
    public DataAlarmVo alarmVo ;//报警
    public DataStateVo stateVo ;//状态
@@ -41,6 +42,9 @@
        sb.append("      ä¿¡å·å¼ºåº¦ï¼š");
        sb.append(signalValue ==null?"": signalValue);
        sb.append("\n");
        sb.append("      æ°´ä»·ï¼š");
        sb.append(waterPrice ==null?"": waterPrice);
        sb.append("\n");
        sb.append("      æŽ§åˆ¶å™¨æ—¶é’Ÿï¼š");
        sb.append(rtuDt==null?"":rtuDt);
        sb.append("\n");
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DriverV1_0_1.java
@@ -6,7 +6,7 @@
import java.net.URI;
import java.net.URL;
@AnnotationDriver(enable = false, name= ProtocolConstantV206V1_0_0.protocolName)
@AnnotationDriver(enable = true, name= ProtocolConstantV206V1_0_0.protocolName)
public class DriverV1_0_1 extends Driver {
    
    private static String scanRootPackage = "com.dy.common.mw.protocol.p206V1_0_0." ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/OnLineV1_0_1.java
@@ -4,7 +4,7 @@
import com.dy.common.mw.protocol.OnLine;
@AnnotationOnLine(
        enable = false,
        enable = true,
        protocolName = ProtocolConstantV206V1_0_0.protocolName,
        priority = ProtocolConstantV206V1_0_0.priority)
@SuppressWarnings("unused")
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/PrefixedDataAvailableV1_0_1.java
@@ -11,7 +11,7 @@
@AnnotationPrefixedDataAvailable(
        enable = false,
        enable = true,
        protocolName = ProtocolConstantV206V1_0_0.protocolName,
        priority = ProtocolConstantV206V1_0_0.priority,
        onLineDataMinLength = ProtocolConstantV206V1_0_0.onLineDataMinLength,
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/ProtocolConstantV206V1_0_0.java
@@ -9,7 +9,7 @@
     * æ³¨è§£ç›¸å…³
     */
    public static final String protocolName = "p206V1_0_1" ;
    public static final int priority = 1 ;//优先级
    public static final int priority = 2 ;//优先级
    /**
     * RTU上线数据(上线后第一包数据)最小长度,设置该属性以备进行完整性检查,
     * å³æ–­åŒ…检查,使尽可能收全上线数据(取值范围1-100)
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/downVos/Com97Vo.java
@@ -10,7 +10,8 @@
@Data
public class Com97Vo {
    public String icCardNo ;//10位虚拟IC卡编号
    public Double money ;//剩余金额
    public Double price ;//æ°´ä»·
    public String icCardNo ;//17位虚拟IC卡编号(协议是10位数字)
    public Double moneyRemain;//剩余金额(取值范围0.00~999999.99,单位为元)
    public Double waterPrice;//æ°´ä»·(取值范围0.00~99.99元/m3)
    public String orderNo ;//订单号(16位数字)
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/downVos/Com98Vo.java
@@ -11,4 +11,5 @@
@Data
public class Com98Vo {
    public String icCardNo ;//10位虚拟IC卡编号
    public String orderNo ;//订单号(16位数字)
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_02_Down.java
@@ -65,7 +65,15 @@
        ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ;
        byte[] bs = new byte[7] ;
        bs[0] = (byte)0xF2 ;//数据域: 1 ä¸ªå­—节,F0 ç™»å½•, F1 é€€å‡ºç™»å½•,F2 åœ¨çº¿ä¿æŒã€‚
        Integer loginFlag = 0xF2 ;
        if(para.param != null && para.param instanceof DataCd02Vo){
            DataCd02Vo vo = (DataCd02Vo)para.param ;
            if(vo != null && vo.status != null){
                loginFlag = Integer.parseInt(vo.status, 16);
            }
        }
        bs[0] = loginFlag.byteValue() ;//数据域: 1 ä¸ªå­—节,F0 ç™»å½•, F1 é€€å‡ºç™»å½•,F2 åœ¨çº¿ä¿æŒã€‚
        GlCreate.createTp(bs, 1);
        bytes = ByteUtil.bytesMerge(bsHead, bs) ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_02_Up.java
@@ -49,7 +49,7 @@
                para.rtuAddr,
                Command.defaultId,
                confirmComCode,
                null,
                para.data!=null?(para.data.subData!=null?(((DataV1_0_1)(para.data.subData)).subData):null):null,
                null);
        //构造应答
        byte[] data = new Cd_02_Down().doParse(downCpParams) ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Up.java
@@ -83,10 +83,11 @@
     */
    protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception {
        byte opType = bs[ProtocolConstantV206V1_0_0.dataIndex];
        if(opType == 1 || opType == 3 || opType == 8){
            this.doParseOpen(opType, bs, bsLen, dataCode, data);
        }else{
        Boolean isCloseType = CommonV1_0_1.isCloseValveType(opType) ;
        if(isCloseType != null && isCloseType.booleanValue()){
            this.doParseClose(opType, bs, bsLen, dataCode, data);
        }else if(isCloseType != null && !isCloseType.booleanValue()){
            this.doParseOpen(opType, bs, bsLen, dataCode, data);
        }
    }
    private void doParseOpen(byte opType, byte[] bs, int bsLen, String dataCode, Data data) throws Exception {
@@ -120,7 +121,7 @@
        index += 5 ;
        //IC卡号格式:4字节HEX码低位在前高位在后。
        cdData.icCardNo = ByteUtil.bytesToHex(bs, index, index + 3) ;
        cdData.icCardAddr = ByteUtil.bytesToHex(bs, index, index + 3) ;
        index += 4 ;
        //用水户余额:用户余额4字节BCD码,取值范围0.00~999999.99,单位为元。
@@ -140,8 +141,24 @@
        //用水户用水开始时间:6字节BCD码,顺序是年月日时分秒,其中公元年=2000+年。
        cdData.openDt = GlParse.parseTp(bs, index) ;
        index += 6 ;
        index += 6 ;
        /* å¼€é˜€æ—¶ï¼Œæ­¤éƒ¨åˆ†æ²¡æœ‰
        cdData.priceType = bs[index] ;
        index++ ;
        cdData.price = 0.0D ;
        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
        index++ ;
        cdData.price += tpInt/100.0 ;
        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
        index++ ;
        cdData.price += tpInt;
        cdData.cardType = bs[index] ;
        index++ ;
         */
        //控制器时钟
        cdData.rtuDt = GlParse.parseTp(bs, index) ;
        //index += 6 ;
@@ -178,7 +195,7 @@
        index += 5 ;
        //IC卡号格式:4字节HEX码低位在前高位在后。
        cdData.icCardNo = ByteUtil.bytesToHex(bs, index, index + 3) ;
        cdData.closeDt = ByteUtil.bytesToHex(bs, index, index + 3) ;
        index += 4 ;
        //用水户余额:用户余额4字节BCD码,取值范围0.00~999999.99,单位为元。
@@ -246,6 +263,21 @@
        index++ ;
        cdData.thisTime += tpInt * 100 ;
        cdData.priceType = bs[index] ;
        index++ ;
        cdData.price = 0.0D ;
        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
        index++ ;
        cdData.price += tpInt/100.0 ;
        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
        index++ ;
        cdData.price += tpInt;
        cdData.cardType = bs[index] ;
        index++ ;
        //控制器时钟
        cdData.rtuDt = GlParse.parseTp(bs, index) ;
        //index += 6 ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_84_Up.java
@@ -87,10 +87,19 @@
        dV1.subData = cdData ;
        short index = ProtocolConstantV206V1_0_0.dataIndex ;
        cdData.opType = bs[index] ;
        index++ ;
        cdData.cardType = bs[index] ;
        index++ ;
        cdData.cardAddr = ByteUtil.bytes2Hex(bs, false,  index, 4) ;
        index += 4 ;
        //用水户号数据格式:5字节BCD码低位在前高位在后。
        cdData.cardNo = ByteUtil.BCD2String_LE(bs, index, index + 4) ;
        index += 5 ;
        index += 5 ;
        //用水户余额:用户余额4字节BCD码,取值范围0.00~999999.99,单位为元。
        cdData.remainMoney = 0.0D ;
        int tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
@@ -142,6 +151,11 @@
        index++ ;
        cdData.instantAmount += tpInt * 100000.0 ;
        cdData.alarmVo = GlParse.parseAlarm(bs, index) ;
        index += 2 ;
        cdData.stateVo = GlParse.parseState(bs, index) ;
        index += 2 ;
        //控制器时钟
        cdData.rtuDt = GlParse.parseTp(bs, index) ;
        //index += 6 ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_97_Down.java
@@ -9,7 +9,6 @@
import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0;
import com.dy.common.mw.protocol.p206V1_0_0.downVos.Com97Vo;
import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate;
import com.dy.common.mw.protocol.p206V202404.downVos.ComCd87Vo;
import com.dy.common.util.ByteUtil;
import com.dy.common.util.ByteUtilUnsigned;
@@ -27,9 +26,9 @@
    @Override
    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception {
        ParseParamsForDownV1_0_1 para = (ParseParamsForDownV1_0_1) params ;
        byte[] bs = this.doParse(para) ;
        MidResultToRtu midRs = new MidResultToRtu() ;
        byte[] bs = this.doParse(midRs, para) ;
        midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 å‘向目的地web URL
        midRs.protocolName = para.protocolName ;//协议名称
        midRs.rtuAddr = para.rtuAddr ;//Rtu地址
@@ -51,11 +50,12 @@
    /**
     * æž„造下行数据
     * @param midRs å‚æ•°
     * @param para å‚æ•°
     * @return å­—节数组
     * @throws Exception å¼‚常
     */
    public byte[] doParse(ParseParamsForDownV1_0_1 para) throws Exception {
    public byte[] doParse(MidResultToRtu midRs, ParseParamsForDownV1_0_1 para) throws Exception {
        CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ;
        byte[] bytes ;
        byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code] ;
@@ -86,25 +86,52 @@
        if(cvo.icCardNo == null){
            throw new Exception("虚拟IC卡编号不能为空") ;
        }
        if(cvo.money == null){
        if(cvo.moneyRemain == null){
            throw new Exception("剩余金额不能为空") ;
        }
        if(cvo.price == null){
        if(cvo.waterPrice == null){
            throw new Exception("水价不能为空") ;
        }
        String icCardNo = null ;
        if(cvo.icCardNo.length() > 10){
            icCardNo = cvo.icCardNo.substring(cvo.icCardNo.length() - 10) ;
        String[] icCardNoGrp = CommonV1_0_1.dealIcCardNo(cvo.icCardNo) ;
        if(icCardNoGrp[0] != null){
            midRs.param = icCardNoGrp[0] ;
        }
        byte[] bs = new byte[11] ;
        ByteUtil.string2BCD_LE(bs, icCardNo, 0) ;
        index = 0 ;
        ByteUtil.string2BCD_LE(bs, icCardNoGrp[1], index) ;
        Integer money = Double.valueOf(cvo.money * 100.0D).intValue() ;
        ByteUtilUnsigned.int2Bytes_LE(bs, money, 4);
        index += 5 ;
        Integer money = Double.valueOf(cvo.moneyRemain * 100.0D).intValue() ;
        byte[] bTemp = ByteUtil.int2BCD_LE(money) ;
        int bTempLen = bTemp.length ;
        int count = 0 ;
        for(int i = 0 ; i < bTempLen; i++){
            bs[index++] = bTemp[i] ;
            count ++ ;
            if(count >= 4){
                break ;
            }
        }
        for(; count < 4; count++){
            bs[index++] = 0 ;
        }
        Short price = Double.valueOf(cvo.price * 100.0D).shortValue() ;
        ByteUtilUnsigned.short2Bytes_LE(bs, price, 8);
        Integer price = Double.valueOf(cvo.waterPrice * 100.0D).intValue() ;
        bTemp = ByteUtil.int2BCD_LE(price) ;
        bTempLen = bTemp.length ;
        count = 0 ;
        for(int i = 0 ; i < bTempLen; i++){
            bs[index++] = bTemp[i] ;
            count ++ ;
            if(count >= 2){
                break ;
            }
        }
        for(; count < 2; count++){
            bs[index++] = 0 ;
        }
        bytes = ByteUtil.bytesMerge(bsHead, bs) ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_98_Down.java
@@ -27,9 +27,9 @@
    @Override
    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception {
        ParseParamsForDownV1_0_1 para = (ParseParamsForDownV1_0_1) params ;
        byte[] bs = this.doParse(para) ;
        MidResultToRtu midRs = new MidResultToRtu() ;
        byte[] bs = this.doParse(midRs, para) ;
        midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu返回命令结果 å‘向目的地web URL
        midRs.protocolName = para.protocolName ;//协议名称
        midRs.rtuAddr = para.rtuAddr ;//Rtu地址
@@ -51,11 +51,12 @@
    /**
     * æž„造下行数据
     * @param midRs å‚æ•°
     * @param para å‚æ•°
     * @return å­—节数组
     * @throws Exception å¼‚常
     */
    public byte[] doParse(ParseParamsForDownV1_0_1 para) throws Exception {
    public byte[] doParse(MidResultToRtu midRs, ParseParamsForDownV1_0_1 para) throws Exception {
        CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ;
        byte[] bytes ;
        byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code] ;
@@ -86,13 +87,14 @@
        if(cvo.icCardNo == null){
            throw new Exception("虚拟IC卡编号不能为空") ;
        }
        String icCardNo = null ;
        if(cvo.icCardNo.length() > 10){
            icCardNo = cvo.icCardNo.substring(cvo.icCardNo.length() - 10) ;
        }
        String[] icCardNoGrp = CommonV1_0_1.dealIcCardNo(cvo.icCardNo) ;
        if(icCardNoGrp[0] != null){
            midRs.param = icCardNoGrp[0] ;
        }
        byte[] bs = new byte[5] ;
        ByteUtil.string2BCD_LE(bs, icCardNo, 0) ;
        ByteUtil.string2BCD_LE(bs, icCardNoGrp[1], 0) ;
        bytes = ByteUtil.bytesMerge(bsHead, bs) ;
        GlCreate.createLen(bytes);//长度放字节数组中
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Up.java
@@ -86,22 +86,24 @@
        DataCdC0Vo cdData = new DataCdC0Vo() ;
        dV1.subData = cdData ;
        boolean hasWaterAmount = false ;//是否有流量数据
        boolean hasWaterPress = false ;//是否有水压数据
        boolean hasEleVolt = false ;//是否有电压数据
        boolean hasSignal = false ;//是否有信号强度数据
        boolean hasAlarmStatus = false ;//是否有数据
        boolean hasWaterAmount = true ;//是否有流量数据
        boolean hasWaterPress = true ;//是否有水压数据
        boolean hasEleVolt = true ;//是否有电压数据
        boolean hasSignal = true ;//是否有信号强度数据
        boolean hasAlarmStatus = true ;//是否有数据
        short index = ProtocolConstantV206V1_0_0.dataIndex ;
        byte tmpBt1 = bs[index] ;
        index++ ;
        /* RTU实现一定有流量数据
        if(((tmpBt1 & 4) >> 2) == 1){
            hasWaterAmount = true ;
        }
        */
        byte tmpBt2 = bs[index] ;
        index++ ;
        /*RTU实现一定有下面各项数据
        if(((tmpBt2 & 0x10) >> 4) == 1){
            hasAlarmStatus = true ;
        }
@@ -114,7 +116,7 @@
        if(((tmpBt2 & 0x80) >> 7) == 1){
            hasSignal = true ;
        }
        */
        if(hasWaterAmount){
            //瞬时流量:5字节BCD码,取值范围0~9999999.999,单位为m3/h。
            cdData.instantAmount = 0.0D ;
@@ -187,7 +189,7 @@
            cdData.waterPress += tpInt * 10000.0 ;
        }
        if(hasEleVolt){
            //电池电压:4字节BCD码,取值范围0~99.99,单位为V。
            //电池电压:2字节BCD码,取值范围0~99.99,单位为V。
            cdData.batteryVolt = 0.0D ;//蓄电池电压
            cdData.sunVolt = 0.0D ;//太阳能电压
            int tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
@@ -219,6 +221,16 @@
            cdData.stateVo = GlParse.parseState(bs, index) ;
            index += 2 ;
        }
        //水价:2字节BCD码,取值范围0~99.99,单位为元。
        cdData.waterPrice = 0.0D ;//æ°´ä»·
        int tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
        index++ ;
        cdData.waterPrice += tpInt/100.0 ;
        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
        index++ ;
        cdData.waterPrice += tpInt;
        cdData.rtuDt = GlParse.parseTp(bs, index) ;
    }
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/global/GlCreate.java
@@ -16,7 +16,7 @@
        index += 3 ;
        Integer rtuAddr2Int = Integer.parseInt(rtuAddr2) ;
        ByteUtilUnsigned.short2Bytes_BE(bs, rtuAddr2Int.shortValue(), index);
        ByteUtilUnsigned.short2Bytes_LE(bs, rtuAddr2Int.shortValue(), index);
    }
    public static void createPw(byte[] bs, int index) throws Exception {
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/˵Ã÷.txt
@@ -7,11 +7,10 @@
还需要实现上行数据处理任务树部分。
靳总版测控一体阀与王江海版测控一体阀不能在同一个中间件运行,
因为两个版本的协议协议头都一样,没法区分开来,如果两种设备
都要应用,需要部署两个通信中间件。
靳总版测控一体阀与王江海版测控一体阀两个版本的协议协议头都一样,
为了区分开来两种设备,对CommonV202404的isThisProtocolHead进行了修改。
当前把DriverV1_0_1驱动配置为不起作用:
若不采用靳总的协议,把DriverV1_0_1驱动配置为不起作用:
DriverV1_0_1类注解enable = false
PrefixedDataAvailableV1_0_1类注解enable = false
OnLineV1_0_1类注解enable = false
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/CommonV202404.java
@@ -15,14 +15,22 @@
    public Boolean isThisProtocolHead(byte[] bs) throws Exception{
        if(bs == null){
            return null ;
        }else if(bs.length >= (ProtocolConstantV206V202404.ctrlIndex - 1)
        }else if(bs.length >= ProtocolConstantV206V202404.ctrlIndex
                && bs[0] == ProtocolConstantV206V202404.P_Head_Byte){
            if(bs[2] == ProtocolConstantV206V202404.P_Head_Byte){
                return true ;
                if(bs[3] == (byte)0x80 || bs[3] == (byte)0x81){
                    return true ;
                }else{
                    return false ;
                }
            }else if((byte)(bs[2] & 0xF8) == ProtocolConstantV206V202404.P_Head_Byte){
                //如果控制域、地址域、用户数据域(应用层)的字节总数大于255,则通过扩展第二个开始字符0x68的低3位作为长L的高位扩展
                //0xF8二进制: 11111000
                return true ;
                if(bs[3] == (byte)0x80 || bs[3] == (byte)0x81){
                    return true ;
                }else{
                    return false ;
                }
            }else{
                return false ;
            }
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/MidResultActionFromRtu.java
@@ -30,7 +30,7 @@
                MidResultToRtu resToRtu = TcpDownCommandCache.matchFromHead(resFromRtu) ;
                if(resToRtu != null){
                    //匹配到下发的命令
                    resFromRtu.matchedCommand(resToRtu.commandId, resToRtu.rtuResultSendWebUrl) ;
                    resFromRtu.matchedCommand(resToRtu.commandId, resToRtu.param, resToRtu.rtuResultSendWebUrl) ;
                    this.nextDealRtuData(false, resFromRtu);
                    this.nextDealRtuComResult(resFromRtu);
                }else{
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/PipIrrMwTestWebApplication.java
@@ -1,6 +1,6 @@
package com.dy.pipIrrMwTestWeb;
import com.dy.pipIrrMwTestWeb.test.CommandCtrl;
import com.dy.pipIrrMwTestWeb.test.CommandP206V202404Ctrl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -29,7 +29,7 @@
public class PipIrrMwTestWebApplication{
    @Autowired
    private CommandCtrl test ;
    private CommandP206V202404Ctrl test ;
    public static void main(String[] args) {
        SpringApplication.run(PipIrrMwTestWebApplication.class, args);
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/test/ComSupportP206V100.java
copy from pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/test/ComSupport.java copy to pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/test/ComSupportP206V100.java
File was copied from pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/test/ComSupport.java
@@ -2,9 +2,7 @@
import com.dy.common.mw.protocol.Command;
import com.dy.common.mw.protocol.CommandType;
import com.dy.common.mw.protocol.p206V202404.CodeV202404;
import com.dy.common.mw.protocol.p206V202404.ProtocolConstantV206V202404;
import com.dy.common.mw.protocol.p206V202404.downVos.ComCdXyVo;
import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0;
import com.dy.common.webUtil.BaseResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
@@ -19,17 +17,12 @@
 * @Date: 2024/5/14 17:32
 * @Description
 */
public class ComSupport {
public class ComSupportP206V100 {
    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 = "37142501020100215" ;
    protected static String rtuAddr = "620201000029" ;
    protected static String rtuResultSendWebUrl = "http://127.0.0.1:65535/test/comRes/receive" ;
    protected static String controllerType = "57" ;//控制器类型
    protected static Integer projectNo = 10 ;//项目编码
    protected static String icCardAddr = "04BEA5BB" ;//IC卡地址
    protected static String icCardNo = "37142501020500001" ;//IC卡编号(用户卡序列号)
@@ -37,17 +30,10 @@
    private RestTemplate restTemplate;
    protected ComCdXyVo comCdXyVo(){
        ComCdXyVo comVo = new ComCdXyVo() ;
        comVo.controllerType = controllerType ;
        comVo.projectNo = projectNo  ;
        return comVo ;
    }
    protected Command command(String code, Object param, String comId){
        Command com = new Command() ;
        com.id = comId==null?Command.defaultId:(comId.trim().equals("")?Command.defaultId:comId) ;//实际应用中,替换成数据库记录id
        com.protocol = ProtocolConstantV206V202404.protocolName ;
        com.protocol = ProtocolConstantV206V1_0_0.protocolName ;
        com.code = code ;
        com.rtuAddr = rtuAddr ;
        com.type = CommandType.outerCommand ;
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/test/ComSupportP206V202404.java
File was renamed from pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/test/ComSupport.java
@@ -19,7 +19,7 @@
 * @Date: 2024/5/14 17:32
 * @Description
 */
public class ComSupport {
public class ComSupportP206V202404 {
    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" ;
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/test/CommandP206V100Ctrl.java
New file
@@ -0,0 +1,55 @@
package com.dy.pipIrrMwTestWeb.test;
import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1;
import com.dy.common.mw.protocol.p206V1_0_0.downVos.Com97Vo;
import com.dy.common.mw.protocol.p206V1_0_0.downVos.Com98Vo;
import com.dy.common.webUtil.BaseResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * @Author: liurunyu
 * @Date: 2024/5/29 09:17
 * @Description
 */
@Slf4j
@RestController
@RequestMapping(path="comP206V100")
@SuppressWarnings("unchecked")//java版本越高,对泛型约束越严,所以配置SuppressWarnings("unchecked")
public class CommandP206V100Ctrl extends ComSupportP206V100 {
    @GetMapping(path = "test")
    public BaseResponse<String> test() {
        //return this.connect() ;//连接通信中间件测试
        //return this.cd97() ;
        return this.cd98() ;
    }
    /**
     * æµ‹è¯•连通性
     * @return
     */
    private BaseResponse connect(){
        return this.sendTest() ;
    }
    //APP远程开阀
    private BaseResponse cd97(){
        Com97Vo comVo = new Com97Vo() ;
        comVo.icCardNo = CommandP206V100Ctrl.icCardNo ;
        comVo.moneyRemain = 234.56 ;
        comVo.waterPrice = 1.2 ;
        return this.sendCom2Mw(this.command(CodeV1_0_1.cd_97, comVo, null)) ;
    }
    //APP远程关阀
    private BaseResponse cd98(){
        Com98Vo comVo = new Com98Vo() ;
        comVo.icCardNo = CommandP206V100Ctrl.icCardNo ;
        return this.sendCom2Mw(this.command(CodeV1_0_1.cd_98, comVo, null)) ;
    }
}
pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/test/CommandP206V202404Ctrl.java
File was renamed from pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/test/CommandCtrl.java
@@ -3,7 +3,6 @@
import com.dy.common.mw.protocol.p206V202404.CodeV202404;
import com.dy.common.mw.protocol.p206V202404.downVos.*;
import com.dy.common.webUtil.BaseResponse;
import com.dy.common.webUtil.BaseResponseUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
@@ -14,9 +13,9 @@
 */
@Slf4j
@RestController
@RequestMapping(path="com")
@RequestMapping(path="comP206V202404")
@SuppressWarnings("unchecked")//java版本越高,对泛型约束越严,所以配置SuppressWarnings("unchecked")
public class CommandCtrl extends ComSupport {
public class CommandP206V202404Ctrl extends ComSupportP206V202404 {
    @GetMapping(path = "test")
    public BaseResponse<String> test() {
@@ -54,18 +53,18 @@
    //设置终端地址(AFN=0x10H)
    private BaseResponse cd10(){
        ComCd10Vo comVo = new ComCd10Vo() ;
        comVo.controllerType = CommandCtrl.controllerType ;
        comVo.projectNo = CommandCtrl.projectNo  ;
        comVo.rtuNewAddr = CommandCtrl.rtuAddr ;
        comVo.controllerType = CommandP206V202404Ctrl.controllerType ;
        comVo.projectNo = CommandP206V202404Ctrl.projectNo  ;
        comVo.rtuNewAddr = CommandP206V202404Ctrl.rtuAddr ;
        return this.sendCom2Mw(this.command(CodeV202404.cd_10, comVo, null)) ;
    }
     //远程用户充值 (AFN=0x15H)
    private BaseResponse cd15(){
        ComCd15Vo comVo = new ComCd15Vo() ;
        comVo.controllerType = CommandCtrl.controllerType ;
        comVo.projectNo = CommandCtrl.projectNo  ;
        comVo.icCardAddr = CommandCtrl.icCardAddr ;//IC卡地址(8位数字或字母)
        comVo.icCardNo = CommandCtrl.icCardNo ;//用户卡序列号(17位数字)(6字节BCD,2字节HEX)
        comVo.controllerType = CommandP206V202404Ctrl.controllerType ;
        comVo.projectNo = CommandP206V202404Ctrl.projectNo  ;
        comVo.icCardAddr = CommandP206V202404Ctrl.icCardAddr ;//IC卡地址(8位数字或字母)
        comVo.icCardNo = CommandP206V202404Ctrl.icCardNo ;//用户卡序列号(17位数字)(6字节BCD,2字节HEX)
        comVo.chargeMoney = 20.0 ;//单位:元  2位小数点(最大值 99999999.99)
        comVo.chargeWater = 20.0 ;//单位:m3  2位小数点(最大值 99999999.99)
        comVo.flowNo = "123456789012" ;//流水号(12位数字)
@@ -75,8 +74,8 @@
    //设置设备终端剩余水量和剩余金额报警值 (AFN=0x16H)
    private BaseResponse cd16(){
        ComCd16Vo comVo = new ComCd16Vo() ;
        comVo.controllerType = CommandCtrl.controllerType ;
        comVo.projectNo = CommandCtrl.projectNo  ;
        comVo.controllerType = CommandP206V202404Ctrl.controllerType ;
        comVo.projectNo = CommandP206V202404Ctrl.projectNo  ;
        comVo.waterAlarm = 100 ;//剩余水量报警值,单位:m3。整数,取值范围0~9999
        comVo.moneyAlarm = 3 ;//剩余金额报警值,单位:元。整数,取值范围0~9999
@@ -85,8 +84,8 @@
    //设置设备终端IP地址 (AFN=0x21H)
    private BaseResponse cd21(){
        ComCd21Vo comVo = new ComCd21Vo() ;
        comVo.controllerType = CommandCtrl.controllerType ;
        comVo.projectNo = CommandCtrl.projectNo  ;
        comVo.controllerType = CommandP206V202404Ctrl.controllerType ;
        comVo.projectNo = CommandP206V202404Ctrl.projectNo  ;
        comVo.channel = 1 ;//IP通道号(取值范围 1、2).
        comVo.ip = "8.140.180.59" ;//IP(例如 125.235.35.89)
        comVo.port = 6001 ;///端口号(0~65536)
@@ -96,8 +95,8 @@
    //设置机井年最大开采量和水位下限 (AFN=0x22H)
    private BaseResponse cd22(){
        ComCd22Vo comVo = new ComCd22Vo() ;
        comVo.controllerType = CommandCtrl.controllerType ;
        comVo.projectNo = CommandCtrl.projectNo  ;
        comVo.controllerType = CommandP206V202404Ctrl.controllerType ;
        comVo.projectNo = CommandP206V202404Ctrl.projectNo  ;
        comVo.maxAmountYear = 99998888 ;//机井年最大用水量单位:m3 æ•´æ•°ï¼Œå–值范围0~99999999
        comVo.limitLevel = 9978.60; //水位下限 å•位:m å–值范围:0~9999.99
@@ -106,8 +105,8 @@
    //设置设备终端域名(AFN=0x23H)
    private BaseResponse cd23(){
        ComCd23Vo comVo = new ComCd23Vo() ;
        comVo.controllerType = CommandCtrl.controllerType ;
        comVo.projectNo = CommandCtrl.projectNo  ;
        comVo.controllerType = CommandP206V202404Ctrl.controllerType ;
        comVo.projectNo = CommandP206V202404Ctrl.projectNo  ;
        comVo.channel = 1 ;//IP通道号(取值范围 1、2).
        comVo.domain = "dayuyanjiuyuan.top" ;//域名(例如 dayuyanjiuyuan.top),最大长度42字符
        comVo.port = 6001 ;///端口号(0~65536)
@@ -117,8 +116,8 @@
    //设置设备终端注册号(AFN=0x24H)
    private BaseResponse cd24(){
        ComCd24Vo comVo = new ComCd24Vo() ;
        comVo.controllerType = CommandCtrl.controllerType ;
        comVo.projectNo = CommandCtrl.projectNo  ;
        comVo.controllerType = CommandP206V202404Ctrl.controllerType ;
        comVo.projectNo = CommandP206V202404Ctrl.projectNo  ;
        comVo.registerNo = "10203040506070809000" ;//
        return this.sendCom2Mw(this.command(CodeV202404.cd_24, comVo, null)) ;
@@ -126,8 +125,8 @@
    //设置设备终端年用水量(AFN=0x24H)
    private BaseResponse cd26(){
        ComCd26Vo comVo = new ComCd26Vo() ;
        comVo.controllerType = CommandCtrl.controllerType ;
        comVo.projectNo = CommandCtrl.projectNo  ;
        comVo.controllerType = CommandP206V202404Ctrl.controllerType ;
        comVo.projectNo = CommandP206V202404Ctrl.projectNo  ;
        comVo.maxAmountYear = 200  ;//设备终端年用水量 å•位:m3 æ•´æ•°ï¼Œå–值范围0~99999999
        return this.sendCom2Mw(this.command(CodeV202404.cd_26, comVo, null)) ;
@@ -135,8 +134,8 @@
    //设置设备终端用水有效(AFN=0x31H)
    private BaseResponse cd31(){
        ComCd31Vo comVo = new ComCd31Vo() ;
        comVo.controllerType = CommandCtrl.controllerType ;
        comVo.projectNo = CommandCtrl.projectNo  ;
        comVo.controllerType = CommandP206V202404Ctrl.controllerType ;
        comVo.projectNo = CommandP206V202404Ctrl.projectNo  ;
        comVo.valid = false ;//有效性
        return this.sendCom2Mw(this.command(CodeV202404.cd_31, comVo, null)) ;
@@ -144,8 +143,8 @@
    //查询遥测终端充值记录 (AFN=0x55H)
    private BaseResponse cd55(int page){
        ComCd55Vo comVo = new ComCd55Vo() ;
        comVo.controllerType = CommandCtrl.controllerType ;
        comVo.projectNo = CommandCtrl.projectNo  ;
        comVo.controllerType = CommandP206V202404Ctrl.controllerType ;
        comVo.projectNo = CommandP206V202404Ctrl.projectNo  ;
        comVo.page = page ;//分页(取值范围1、2、3、4、5、6、7、8、9)
        return this.sendCom2Mw(this.command(CodeV202404.cd_55, comVo, null)) ;
@@ -153,34 +152,34 @@
    //查询设备终端用户用水记录(AFN=0x65H)
    private BaseResponse cd65(int page){
        ComCd65Vo comVo = new ComCd65Vo() ;
        comVo.controllerType = CommandCtrl.controllerType ;
        comVo.projectNo = CommandCtrl.projectNo  ;
        comVo.controllerType = CommandP206V202404Ctrl.controllerType ;
        comVo.projectNo = CommandP206V202404Ctrl.projectNo  ;
        comVo.page = page ;
        return this.sendCom2Mw(this.command(CodeV202404.cd_65, comVo, null)) ;
    }
    //查询控制器IP地址(AFN=0x86H)
    private BaseResponse cd86(){
        ComCd86Vo comVo = new ComCd86Vo() ;
        comVo.controllerType = CommandCtrl.controllerType ;
        comVo.projectNo = CommandCtrl.projectNo  ;
        comVo.controllerType = CommandP206V202404Ctrl.controllerType ;
        comVo.projectNo = CommandP206V202404Ctrl.projectNo  ;
        comVo.channel = 1 ;//IP通道号(取值范围 1、2).
        return this.sendCom2Mw(this.command(CodeV202404.cd_86, comVo, null)) ;
    }
    //查询控制器域名(AFN=0x87H)
    private BaseResponse cd87(){
        ComCd87Vo comVo = new ComCd87Vo() ;
        comVo.controllerType = CommandCtrl.controllerType ;
        comVo.projectNo = CommandCtrl.projectNo  ;
        comVo.controllerType = CommandP206V202404Ctrl.controllerType ;
        comVo.projectNo = CommandP206V202404Ctrl.projectNo  ;
        comVo.channel = 1 ;//IP通道号(取值范围 1、2).
        return this.sendCom2Mw(this.command(CodeV202404.cd_87, comVo, null)) ;
    }
    //平台/APP远程开启水泵/阀门(AFN=0x92H/AFN=0xA2H)
    private BaseResponse cd92(){
        ComCd92_A2Vo comVo = new ComCd92_A2Vo() ;
        comVo.controllerType = CommandCtrl.controllerType ;
        comVo.projectNo = CommandCtrl.projectNo  ;
        comVo.controllerType = CommandP206V202404Ctrl.controllerType ;
        comVo.projectNo = CommandP206V202404Ctrl.projectNo  ;
        //comVo.icCardAddr = Test.icCardAddr ;//IC卡地址(8位数字或字母)
        comVo.icCardNo = CommandCtrl.icCardNo ;//用户卡序列号(17位数字)(6字节BCD,2字节HEX)
        comVo.icCardNo = CommandP206V202404Ctrl.icCardNo ;//用户卡序列号(17位数字)(6字节BCD,2字节HEX)
        comVo.waterRemain = 123.45 ;//单位:元  2位小数点(最大值 99999999.99)
        comVo.moneyRemain = 234.56 ;//单位:m3  2位小数点(最大值 99999999.99)
        comVo.waterPrice = 0.8 ;//水量单价 å•位:元, 2个小数点
@@ -192,10 +191,10 @@
    //平台/APP远程开启水泵/阀门(AFN=0x92H/AFN=0xA2H)
    private BaseResponse cdA2(){
        ComCd92_A2Vo comVo = new ComCd92_A2Vo() ;
        comVo.controllerType = CommandCtrl.controllerType ;
        comVo.projectNo = CommandCtrl.projectNo  ;
        comVo.controllerType = CommandP206V202404Ctrl.controllerType ;
        comVo.projectNo = CommandP206V202404Ctrl.projectNo  ;
        //comVo.icCardAddr = Test.icCardAddr ;//IC卡地址(8位数字或字母)
        comVo.icCardNo = CommandCtrl.icCardNo ;//用户卡序列号(17位数字)(6字节BCD,2字节HEX)
        comVo.icCardNo = CommandP206V202404Ctrl.icCardNo ;//用户卡序列号(17位数字)(6字节BCD,2字节HEX)
        comVo.waterRemain = 123.45 ;//单位:元  2位小数点(最大值 99999999.99)
        comVo.moneyRemain = 234.56 ;//单位:m3  2位小数点(最大值 99999999.99)
        comVo.waterPrice = 0.8 ;//水量单价 å•位:元, 2个小数点
@@ -208,9 +207,9 @@
   //平台/APP远程关闭水泵/阀门(AFN=0x93H/AFN=0xA3H)
    private BaseResponse cd93(){
        ComCd93_A3Vo comVo = new ComCd93_A3Vo() ;
        comVo.controllerType = CommandCtrl.controllerType ;
        comVo.projectNo = CommandCtrl.projectNo  ;
        comVo.icCardNo = CommandCtrl.icCardNo ;//用户卡序列号(17位数字)(6字节BCD,2字节HEX)
        comVo.controllerType = CommandP206V202404Ctrl.controllerType ;
        comVo.projectNo = CommandP206V202404Ctrl.projectNo  ;
        comVo.icCardNo = CommandP206V202404Ctrl.icCardNo ;//用户卡序列号(17位数字)(6字节BCD,2字节HEX)
        comVo.orderNo = "1234567890123456" ;//订单号(16位数字)
        return this.sendCom2Mw(this.command(CodeV202404.cd_93, comVo, null)) ;
@@ -219,8 +218,8 @@
   //平台/APP远程关闭水泵/阀门(AFN=0x93H/AFN=0xA3H)
    private BaseResponse cd9C(){
        ComCd9CVo comVo = new ComCd9CVo() ;
        comVo.controllerType = CommandCtrl.controllerType ;
        comVo.projectNo = CommandCtrl.projectNo  ;
        comVo.controllerType = CommandP206V202404Ctrl.controllerType ;
        comVo.projectNo = CommandP206V202404Ctrl.projectNo  ;
        comVo.icCardAddr = "04BEA5BB" ;//
        return this.sendCom2Mw(this.command(CodeV202404.cd_9C, comVo, null)) ;
@@ -228,9 +227,9 @@
    //平台/APP远程关闭水泵/阀门(AFN=0x93H/AFN=0xA3H)
    private BaseResponse cdA3(){
        ComCd93_A3Vo comVo = new ComCd93_A3Vo() ;
        comVo.controllerType = CommandCtrl.controllerType ;
        comVo.projectNo = CommandCtrl.projectNo  ;
        comVo.icCardNo = CommandCtrl.icCardNo ;//用户卡序列号(17位数字)(6字节BCD,2字节HEX)
        comVo.controllerType = CommandP206V202404Ctrl.controllerType ;
        comVo.projectNo = CommandP206V202404Ctrl.projectNo  ;
        comVo.icCardNo = CommandP206V202404Ctrl.icCardNo ;//用户卡序列号(17位数字)(6字节BCD,2字节HEX)
        comVo.orderNo = "1234567890123456" ;//订单号(16位数字)
        return this.sendCom2Mw(this.command(CodeV202404.cd_A3, comVo, null)) ;
pipIrr-platform/pipIrr-web/pipIrr-web-webchat/pipIrr-web-webchat.iml
File was deleted