liurunyu
2024-05-13 2b2a90e952c2c59642c41d8af5759ceb51b9e099
根据王江海修改完善的协议(20240510),进行协议实现完善。
19个文件已修改
3个文件已添加
598 ■■■■ 已修改文件
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_15_Down.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_55_Up.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_65_Up.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_81_Up.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_84_Up.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_92_A2_Down.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_93_A3_Down.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_C2_Up.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/global/GlCreate.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/global/GlParse.java 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/AlarmVo.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd65Vo.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd80_5BVo.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd81Vo.java 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd83Vo.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd84Vo.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd93_A3_85Vo.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCdC2Vo.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/ByteUtilUnsigned.java 144 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkFindComResponse.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkRtuDealCommandResponse.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/RtuDataDealTree.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_15_Down.java
@@ -62,7 +62,7 @@
            if(cvo.flowNo.length() != 12){
                throw new Exception("流水号必须是12位数字") ;
            }
            byte[] bs = new byte[34] ;
            byte[] bs = new byte[40] ;
            int index = 0 ;
            bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16));
@@ -96,9 +96,9 @@
                    bs[index++] = 0 ;
                }
            }
            if(cvo.chargeMoney != null){
                String chargeMoney = "" + (Double.valueOf(cvo.chargeWater * 100)).longValue() ;
                byte[] bTemp = ByteUtil.string2BCD_LE(chargeMoney) ;
            if(cvo.chargeWater != null){
                String chargeWater = "" + (Double.valueOf(cvo.chargeWater * 100)).longValue() ;
                byte[] bTemp = ByteUtil.string2BCD_LE(chargeWater) ;
                int bTempLen = bTemp.length ;
                int count = 0 ;
                for(int i = 0 ; i < bTempLen; i++){
@@ -120,6 +120,9 @@
            ByteUtil.string2BCD_BE(bs, cvo.flowNo, index) ;
            index += 6 ;
            GlCreate.createDt(bs, index);
            index += 6 ;
            GlCreate.createPw(bs, index);
            index += 2 ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_55_Up.java
@@ -115,18 +115,7 @@
            }
            index += 1 ;
            String ss = ByteUtil.BCD2String_BE(bs, index, index) ;
            index++ ;
            String mm = ByteUtil.BCD2String_BE(bs, index, index) ;
            index++ ;
            String HH = ByteUtil.BCD2String_BE(bs, index, index) ;
            index++ ;
            String dd = ByteUtil.BCD2String_BE(bs, index, index) ;
            index++ ;
            String MM = ByteUtil.BCD2String_BE(bs, index, index) ;
            index++ ;
            String yy = ByteUtil.BCD2String_BE(bs, index, index) ;
            cdData.dt = "20" + yy + "-" + MM + "-" + dd + " " + HH + ":" + mm  + ":" + ss ;
            cdData.dt = GlParse.parseRtuDt(bs, index) ;
            return cdData ;
        }else{
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_65_Up.java
@@ -112,26 +112,12 @@
            cdData.thisWater = thisWater/100.0D;
            index += 4 ;
            String mm = ByteUtil.BCD2String_BE(bs, index, index) ;
            index++ ;
            String HH = ByteUtil.BCD2String_BE(bs, index, index) ;
            index++ ;
            String dd = ByteUtil.BCD2String_BE(bs, index, index) ;
            index++ ;
            String MM = ByteUtil.BCD2String_BE(bs, index, index) ;
            cdData.rtuStartDt = MM + "-" + dd + " " + HH + ":" + mm ;
            cdData.rtuStartDt = GlParse.parseRtuDt(bs, index) ;
            index++ ;
            mm = ByteUtil.BCD2String_BE(bs, index, index) ;
            index++ ;
            HH = ByteUtil.BCD2String_BE(bs, index, index) ;
            index++ ;
            dd = ByteUtil.BCD2String_BE(bs, index, index) ;
            index++ ;
            MM = ByteUtil.BCD2String_BE(bs, index, index) ;
            cdData.rtuEndDt = MM + "-" + dd + " " + HH + ":" + mm ;
            index += 6 ;
            cdData.rtuEndDt = GlParse.parseRtuDt(bs, index) ;
            index++ ;
            index += 6 ;
            cdData.useWaterType = bs[index];
            return cdData ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_81_Up.java
@@ -94,6 +94,9 @@
        cdData.projectNo = (int)bs[index];
        index++ ;
        GlParse.parseRtuDt(bs, index) ;
        index += 6 ;
        GlParse.parseAlarmAndState(bs, index, cdData) ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_84_Up.java
@@ -128,6 +128,9 @@
        index += 5 ;
        cdData.waterRemainUser = ByteUtil.BCD2Int_BE(bs, index, index + 4)/100.0D ;
        index += 5 ;
        GlParse.parseAlarmAndState(bs, index, cdData) ;
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_92_A2_Down.java
@@ -82,7 +82,7 @@
            }
            byte[] bs = new byte[39] ;
            byte[] bs = new byte[45] ;
            int index = 0 ;
            bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16));
@@ -178,6 +178,9 @@
            ByteUtil.string2BCD_BE(bs, cvo.orderNo, index) ;
            index += 8 ;
            GlCreate.createDt(bs, index);
            index += 6 ;
            GlCreate.createPw(bs, index);
            index += 2 ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_93_A3_Down.java
@@ -61,7 +61,7 @@
                throw new Exception("订单号必须是16位数字") ;
            }
            byte[] bs = new byte[26] ;
            byte[] bs = new byte[32] ;
            int index = 0 ;
            bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16));
@@ -82,6 +82,9 @@
            ByteUtil.string2BCD_BE(bs, cvo.orderNo, index) ;
            index += 8 ;
            GlCreate.createDt(bs, index);
            index += 6 ;
            GlCreate.createPw(bs, index);
            index += 2 ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_C2_Up.java
@@ -3,6 +3,7 @@
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V202404.*;
import com.dy.common.mw.protocol.p206V202404.parse.global.GlParse;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCd02Vo;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCdC2Vo;
import com.dy.common.util.ByteUtil;
@@ -106,5 +107,12 @@
            cdData.success = true ;
        }else{
            cdData.success = false ;
        }    }
        }
        index++ ;
        GlParse.parseRtuDt(bs, index);
        index+= 6 ;
        GlParse.parseAlarmAndState(bs, index, cdData);
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/global/GlCreate.java
@@ -93,6 +93,17 @@
        Integer icCardNo2Int = Integer.parseInt(icCardNo2) ;
        ByteUtilUnsigned.short2Bytes_LE(bs, icCardNo2Int.shortValue(), index);
    }
    public static void createDt(byte[] bs, int index) throws Exception {
        bs[index] = Byte.parseByte(DateTime.ss()) ;
        bs[index + 1] = Byte.parseByte(DateTime.mm()) ;
        bs[index + 2] = Byte.parseByte(DateTime.HH()) ;
        bs[index + 3] = Byte.parseByte(DateTime.dd()) ;
        bs[index + 4] = Byte.parseByte(DateTime.MM()) ;
        bs[index + 5] = Byte.parseByte(DateTime.yy()) ;
    }
    public static void createPw(byte[] bs, int index) throws Exception {
        bs[index] = 0;
        bs[index + 1] = 0;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/global/GlParse.java
@@ -1,9 +1,7 @@
package com.dy.common.mw.protocol.p206V202404.parse.global;
import com.dy.common.mw.protocol.p206V202404.ProtocolConstantV206V202404;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCd80_5BVo;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCd81Vo;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCd93_A3_85Vo;
import com.dy.common.mw.protocol.p206V202404.upVos.*;
import com.dy.common.util.ByteUtil;
import com.dy.common.util.ByteUtilUnsigned;
import org.apache.logging.log4j.LogManager;
@@ -32,7 +30,7 @@
        String mm = ByteUtil.BCD2String_BE(bs, index, index) ;
        index++ ;
        String yy = ByteUtil.BCD2String_BE(bs, index, index) ;
        return yy + "-" + mm + "-" + dd + " " + HH + ":" + MM + ":" + ss ;
        return "20" + yy + "-" + mm + "-" + dd + " " + HH + ":" + MM + ":" + ss ;
    }
   /**
     * 分析IC卡编号
@@ -61,23 +59,23 @@
    public static void parseAlarmAndState(byte[] bs, int index, DataCd80_5BVo vo){
        byte b = bs[index] ;
        vo.statePump = (byte)(b & 0x1) ;
        vo.alarmWaterRemain = (byte)(b & 0x2) ;
        vo.alarm0WaterRemain = (byte)(b & 0x4) ;
        vo.alarmExceedYear = (byte)(b & 0x8) ;
        vo.alarmWaterMeterFault = (byte)(b & 0x10) ;
        vo.alarmSteal = (byte)(b & 0x20) ;
        vo.alarmWaterMeterBreak = (byte)(b & 0x40) ;
        vo.alarmEleMeterFault = (byte)(b & 0x80) ;
        vo.alarmWaterRemain = (byte)(b >> 1 & 1) ;
        vo.alarm0WaterRemain = (byte)(b >> 2 & 1) ;
        vo.alarmExceedYear = (byte)(b >> 3 & 1) ;
        vo.alarmWaterMeterFault = (byte)(b >> 4 & 1) ;
        vo.alarmSteal = (byte)(b >> 5 & 1) ;
        vo.alarmWaterMeterBreak = (byte)(b >> 6 & 1) ;
        vo.alarmEleMeterFault = (byte)(b >> 7 & 1) ;
        index++ ;
        b = bs[index] ;
        vo.alarm0MoneyRemain = (byte)(b & 0x1) ;
        vo.alarmInnerDoor = (byte)(b & 0x2) ;
        vo.alarmOuterDoor = (byte)(b & 0x4) ;
        vo.alarmEleMiss = (byte)(b & 0x8) ;
        vo.alarmEleExceed = (byte)(b & 0x10) ;
        vo.alarmEleLowVolt = (byte)(b & 0x20) ;
        vo.stateIcEnable = (byte)(b & 0x40) ;
        vo.alarmInnerDoor = (byte)(b >> 1 & 1) ;
        vo.alarmOuterDoor = (byte)(b >> 2 & 1) ;
        vo.alarmEleMiss = (byte)(b >> 3 & 1) ;
        vo.alarmEleExceed = (byte)(b >> 4 & 1) ;
        vo.alarmEleLowVolt = (byte)(b >> 5 & 1) ;
        vo.stateIcEnable = (byte)(b >> 6 & 1) ;
    }
    /**
     * 分析状态与报警
@@ -88,23 +86,50 @@
    public static void parseAlarmAndState(byte[] bs, int index, DataCd81Vo vo){
        byte b = bs[index] ;
        vo.statePump = (byte)(b & 0x1) ;
        vo.alarmWaterRemain = (byte)(b & 0x2) ;
        vo.alarm0WaterRemain = (byte)(b & 0x4) ;
        vo.alarmExceedYear = (byte)(b & 0x8) ;
        vo.alarmWaterMeterFault = (byte)(b & 0x10) ;
        vo.alarmSteal = (byte)(b & 0x20) ;
        vo.alarmWaterMeterBreak = (byte)(b & 0x40) ;
        vo.alarmEleMeterFault = (byte)(b & 0x80) ;
        vo.alarmWaterRemain = (byte)(b >> 1 & 1) ;
        vo.alarm0WaterRemain = (byte)(b >> 2 & 1) ;
        vo.alarmExceedYear = (byte)(b >> 3 & 1) ;
        vo.alarmWaterMeterFault = (byte)(b >> 4 & 1) ;
        vo.alarmSteal = (byte)(b >> 5 & 1) ;
        vo.alarmWaterMeterBreak = (byte)(b >> 6 & 1) ;
        vo.alarmEleMeterFault = (byte)(b >> 7 & 1) ;
        index++ ;
        b = bs[index] ;
        vo.alarm0MoneyRemain = (byte)(b & 0x1) ;
        vo.alarmInnerDoor = (byte)(b & 0x2) ;
        vo.alarmOuterDoor = (byte)(b & 0x4) ;
        vo.alarmEleMiss = (byte)(b & 0x8) ;
        vo.alarmEleExceed = (byte)(b & 0x10) ;
        vo.alarmEleLowVolt = (byte)(b & 0x20) ;
        vo.stateIcEnable = (byte)(b & 0x40) ;
        vo.alarmInnerDoor = (byte)(b >> 1 & 1) ;
        vo.alarmOuterDoor = (byte)(b >> 2 & 1) ;
        vo.alarmEleMiss = (byte)(b >> 3 & 1) ;
        vo.alarmEleExceed = (byte)(b >> 4 & 1) ;
        vo.alarmEleLowVolt = (byte)(b >> 5 & 1) ;
        vo.stateIcEnable = (byte)(b >> 6 & 1) ;
    }
    /**
     * 分析状态与报警
     * @param bs
     * @param index
     * @return
     */
    public static void parseAlarmAndState(byte[] bs, int index, DataCd84Vo vo){
        byte b = bs[index] ;
        vo.statePump = (byte)(b & 0x1) ;
        vo.alarmWaterRemain = (byte)(b >> 1 & 1) ;
        vo.alarm0WaterRemain = (byte)(b >> 2 & 1) ;
        vo.alarmExceedYear = (byte)(b >> 3 & 1) ;
        vo.alarmWaterMeterFault = (byte)(b >> 4 & 1) ;
        vo.alarmSteal = (byte)(b >> 5 & 1) ;
        vo.alarmWaterMeterBreak = (byte)(b >> 6 & 1) ;
        vo.alarmEleMeterFault = (byte)(b >> 7 & 1) ;
        index++ ;
        b = bs[index] ;
        vo.alarm0MoneyRemain = (byte)(b & 0x1) ;
        vo.alarmInnerDoor = (byte)(b >> 1 & 1) ;
        vo.alarmOuterDoor = (byte)(b >> 2 & 1) ;
        vo.alarmEleMiss = (byte)(b >> 3 & 1) ;
        vo.alarmEleExceed = (byte)(b >> 4 & 1) ;
        vo.alarmEleLowVolt = (byte)(b >> 5 & 1) ;
        vo.stateIcEnable = (byte)(b >> 6 & 1) ;
    }
    /**
     * 分析状态与报警
@@ -115,23 +140,50 @@
    public static void parseAlarmAndState(byte[] bs, int index, DataCd93_A3_85Vo vo){
        byte b = bs[index] ;
        vo.statePump = (byte)(b & 0x1) ;
        vo.alarmWaterRemain = (byte)(b & 0x2) ;
        vo.alarm0WaterRemain = (byte)(b & 0x4) ;
        vo.alarmExceedYear = (byte)(b & 0x8) ;
        vo.alarmWaterMeterFault = (byte)(b & 0x10) ;
        vo.alarmSteal = (byte)(b & 0x20) ;
        vo.alarmWaterMeterBreak = (byte)(b & 0x40) ;
        vo.alarmEleMeterFault = (byte)(b & 0x80) ;
        vo.alarmWaterRemain = (byte)(b >> 1 & 1) ;
        vo.alarm0WaterRemain = (byte)(b >> 2 & 1) ;
        vo.alarmExceedYear = (byte)(b >> 3 & 1) ;
        vo.alarmWaterMeterFault = (byte)(b >> 4 & 1) ;
        vo.alarmSteal = (byte)(b >> 5 & 1) ;
        vo.alarmWaterMeterBreak = (byte)(b >> 6 & 1) ;
        vo.alarmEleMeterFault = (byte)(b >> 7 & 1) ;
        index++ ;
        b = bs[index] ;
        vo.alarm0MoneyRemain = (byte)(b & 0x1) ;
        vo.alarmInnerDoor = (byte)(b & 0x2) ;
        vo.alarmOuterDoor = (byte)(b & 0x4) ;
        vo.alarmEleMiss = (byte)(b & 0x8) ;
        vo.alarmEleExceed = (byte)(b & 0x10) ;
        vo.alarmEleLowVolt = (byte)(b & 0x20) ;
        vo.stateIcEnable = (byte)(b & 0x40) ;
        vo.alarmInnerDoor = (byte)(b >> 1 & 1) ;
        vo.alarmOuterDoor = (byte)(b >> 2 & 1) ;
        vo.alarmEleMiss = (byte)(b >> 3 & 1) ;
        vo.alarmEleExceed = (byte)(b >> 4 & 1) ;
        vo.alarmEleLowVolt = (byte)(b >> 5 & 1) ;
        vo.stateIcEnable = (byte)(b >> 6 & 1) ;
    }
   /**
     * 分析状态与报警
     * @param bs
     * @param index
     * @return
     */
    public static void parseAlarmAndState(byte[] bs, int index, DataCdC2Vo vo){
        byte b = bs[index] ;
        vo.statePump = (byte)(b & 0x1) ;
        vo.alarmWaterRemain = (byte)(b >> 1 & 1) ;
        vo.alarm0WaterRemain = (byte)(b >> 2 & 1) ;
        vo.alarmExceedYear = (byte)(b >> 3 & 1) ;
        vo.alarmWaterMeterFault = (byte)(b >> 4 & 1) ;
        vo.alarmSteal = (byte)(b >> 5 & 1) ;
        vo.alarmWaterMeterBreak = (byte)(b >> 6 & 1) ;
        vo.alarmEleMeterFault = (byte)(b >> 7 & 1) ;
        index++ ;
        b = bs[index] ;
        vo.alarm0MoneyRemain = (byte)(b & 0x1) ;
        vo.alarmInnerDoor = (byte)(b >> 1 & 1) ;
        vo.alarmOuterDoor = (byte)(b >> 2 & 1) ;
        vo.alarmEleMiss = (byte)(b >> 3 & 1) ;
        vo.alarmEleExceed = (byte)(b >> 4 & 1) ;
        vo.alarmEleLowVolt = (byte)(b >> 5 & 1) ;
        vo.stateIcEnable = (byte)(b >> 6 & 1) ;
    }
    public static String parseTp(byte[] bs, short index){
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/AlarmVo.java
New file
@@ -0,0 +1,26 @@
package com.dy.common.mw.protocol.p206V202404.upVos;
/**
 * @Author: liurunyu
 * @Date: 2024/5/13 16:01
 * @Description
 */
public class AlarmVo {
    public Byte statePump ; //泵/阀状态    (1:开泵/阀;0:关泵/阀)
    public Byte alarmWaterRemain ; //剩余水量报警    (1:小于报警上限报警 0:正常)
    public Byte alarm0WaterRemain ; //剩余水量为0关泵/阀    (1:剩余水量为0关泵  0:正常)
    public Byte alarmExceedYear ; //年度超采报警    (1:年用水量大于限制水量报警 0:正常)
    public Byte alarmWaterMeterFault ; //外部流量计故障    (1:流量计故障报警 0:正常)
    public Byte alarmSteal ; //偷水报警    (1:绕开控制器用水报警 0:正常)
    public Byte alarmWaterMeterBreak ; //流量计损坏报警    (1:正常通讯但瞬时为0报警 0:正常)
    public Byte alarmEleMeterFault ; //电表故障报警    (1:和电表通讯断或数据不正常 0:正常)
    public Byte alarm0MoneyRemain ; //剩余金额为0关泵/阀    (1:剩余金额为0报警  0:正常)
    public Byte alarmInnerDoor ; //控制器内门报警    (1:内门打开报警    0:正常)
    public Byte alarmOuterDoor ; //控制器外门报警    (1:外门打开报警    0:正常)
    public Byte alarmEleMiss ; //交流缺项报警    (1:三相缺项报警    0:正常)
    public Byte alarmEleExceed ; //交流过流报警    (1:交流过流报警    0:正常)
    public Byte alarmEleLowVolt ; //三相电欠压报警    (1:欠压报警        0:正常)
    public Byte stateIcEnable ; //IC卡使能    (1、IC有刷卡支持    0:不支持)
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd65Vo.java
@@ -14,8 +14,8 @@
    public Double waterRemain ;//用户剩余水量(单位0.01m3)
    public Double thisEle ;//本次使用电量(单位0.01度)
    public Double thisWater ;//本次使用水量(单位0.01立方米)
    public String rtuStartDt ;//本次开始时间 (分时日月)
    public String rtuEndDt ;//本次结束时间 (分时日月)
    public String rtuStartDt ;//本次开始时间 (yyyy-mm-dd HH:MM:SS)
    public String rtuEndDt ;//本次结束时间 (yyyy-mm-dd HH:MM:SS)
    public Byte useWaterType ;//用水方式(0x00:正常刷卡开泵/阀用水 0x01:平台远程开泵/阀用水 0x02:用户远程开泵/阀用水 0x03:测试卡,0x04:其它)
    public String toString(){
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd80_5BVo.java
@@ -4,7 +4,7 @@
//设备终端工作上报 + 查询设备终端实时值
@Data
public class DataCd80_5BVo {
public class DataCd80_5BVo extends AlarmVo {
    public String controllerType;//控制器类型:   01:测控一体阀;57:井电控制器
    public Integer projectNo ;//项目编号:
@@ -46,24 +46,6 @@
        CSQ值大于18:能稳定通信
     */
    public Integer csq ;//手机信号强度 CSQ值()
    public Byte statePump ; //泵/阀状态    (1:开泵/阀;0:关泵/阀)
    public Byte alarmWaterRemain ; //剩余水量报警    (1:小于报警上限报警 0:正常)
    public Byte alarm0WaterRemain ; //剩余水量为0关泵/阀    (1:剩余水量为0关泵  0:正常)
    public Byte alarmExceedYear ; //年度超采报警    (1:年用水量大于限制水量报警 0:正常)
    public Byte alarmWaterMeterFault ; //外部流量计故障    (1:流量计故障报警 0:正常)
    public Byte alarmSteal ; //偷水报警    (1:绕开控制器用水报警 0:正常)
    public Byte alarmWaterMeterBreak ; //流量计损坏报警    (1:正常通讯但瞬时为0报警 0:正常)
    public Byte alarmEleMeterFault ; //电表故障报警    (1:和电表通讯断或数据不正常 0:正常)
    public Byte alarm0MoneyRemain ; //剩余金额为0关泵/阀    (1:剩余金额为0报警  0:正常)
    public Byte alarmInnerDoor ; //控制器内门报警    (1:内门打开报警    0:正常)
    public Byte alarmOuterDoor ; //控制器外门报警    (1:外门打开报警    0:正常)
    public Byte alarmEleMiss ; //交流缺项报警    (1:三相缺项报警    0:正常)
    public Byte alarmEleExceed ; //交流过流报警    (1:交流过流报警    0:正常)
    public Byte alarmEleLowVolt ; //三相电欠压报警    (1:欠压报警        0:正常)
    public Byte stateIcEnable ; //IC卡使能    (1、IC有刷卡支持    0:不支持)
    public String comName ;//命令名称
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd81Vo.java
@@ -4,27 +4,11 @@
//设备终端随机自报
@Data
public class DataCd81Vo {
public class DataCd81Vo extends AlarmVo {
    public String controllerType;//控制器类型:   01:测控一体阀;57:井电控制器
    public Integer projectNo ;//项目编号:
    public Byte statePump ; //泵/阀状态    (1:开泵/阀;0:关泵/阀)
    public Byte alarmWaterRemain ; //剩余水量报警    (1:小于报警上限报警 0:正常)
    public Byte alarm0WaterRemain ; //剩余水量为0关泵/阀    (1:剩余水量为0关泵  0:正常)
    public Byte alarmExceedYear ; //年度超采报警    (1:年用水量大于限制水量报警 0:正常)
    public Byte alarmWaterMeterFault ; //外部流量计故障    (1:流量计故障报警 0:正常)
    public Byte alarmSteal ; //偷水报警    (1:绕开控制器用水报警 0:正常)
    public Byte alarmWaterMeterBreak ; //流量计损坏报警    (1:正常通讯但瞬时为0报警 0:正常)
    public Byte alarmEleMeterFault ; //电表故障报警    (1:和电表通讯断或数据不正常 0:正常)
    public Byte alarm0MoneyRemain ; //剩余金额为0关泵/阀    (1:剩余金额为0报警  0:正常)
    public Byte alarmInnerDoor ; //控制器内门报警    (1:内门打开报警    0:正常)
    public Byte alarmOuterDoor ; //控制器外门报警    (1:外门打开报警    0:正常)
    public Byte alarmEleMiss ; //交流缺项报警    (1:三相缺项报警    0:正常)
    public Byte alarmEleExceed ; //交流过流报警    (1:交流过流报警    0:正常)
    public Byte alarmEleLowVolt ; //三相电欠压报警    (1:欠压报警        0:正常)
    public Byte stateIcEnable ; //IC卡使能    (1、IC有刷卡支持    0:不支持)
    public String rtuDt ;//设备上报的日期时间(yyyy-mm-dd HH:MM:SS)
    public String toString(){
        StringBuffer sb = new StringBuffer() ;
@@ -35,6 +19,9 @@
        sb.append("      项目编号 : ") ;
        sb.append(projectNo == null?"未知":projectNo) ;
        sb.append("\n") ;
        sb.append("      设备时钟 : ") ;
        sb.append(rtuDt == null?"未知":rtuDt) ;
        sb.append("\n") ;
        sb.append("      泵状态 : ") ;
        sb.append(statePump == null?"未知":(statePump.byteValue()==1?"泵/阀开":(statePump.byteValue()==0?"泵/阀关":"未知"))) ;
        sb.append("      剩余水量报警 : ") ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd83Vo.java
@@ -16,6 +16,7 @@
    public Double waterUserTotalAmountDay ;// 当日用户用水量
    public Double lossTotalAmountDay ;// 漏损水量
    public Double batteryVolt ;//后备电池电压
    public Double rtuDt ;//上报时间(yyyy-mm-dd HH)
    public String toString(){
        StringBuffer sb = new StringBuffer() ;
@@ -50,6 +51,9 @@
        sb.append("      后备电池电压 : ") ;
        sb.append(batteryVolt == null?"未知":batteryVolt) ;
        sb.append("\n") ;
        sb.append("      上报时间 : ") ;
        sb.append(rtuDt == null?"未知":rtuDt) ;
        sb.append("\n") ;
        return sb.toString() ;
    }
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd84Vo.java
@@ -4,7 +4,7 @@
//刷卡开泵/阀上报
@Data
public class DataCd84Vo {
public class DataCd84Vo extends AlarmVo {
    public String controllerType;//控制器类型 01(0x01):测控一体阀;57(0x57):井电控制器
    public Integer projectNo ;//控制器类型 0x01:测控一体阀;0x57:井电控制器
@@ -50,6 +50,50 @@
        sb.append("      用户剩余水量 : ") ;
        sb.append(waterRemainUser == null?"未知":waterRemainUser) ;
        sb.append("\n") ;
        sb.append("      泵状态 : ") ;
        sb.append(statePump == null?"未知":(statePump.byteValue()==1?"泵/阀开":(statePump.byteValue()==0?"泵/阀关":"未知"))) ;
        sb.append("      剩余水量报警 : ") ;
        sb.append(alarmWaterRemain == null?"未知":(alarmWaterRemain.byteValue()==1?"小于报警上限":(alarmWaterRemain.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
        sb.append("      剩余水量为0关泵/阀 : ") ;
        sb.append(alarm0WaterRemain == null?"未知":(alarm0WaterRemain.byteValue()==1?"归零关泵/阀":(alarm0WaterRemain.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
        sb.append("      年度超采 : ") ;
        sb.append(alarmExceedYear == null?"未知":(alarmExceedYear.byteValue()==1?"报警":(alarmExceedYear.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
        sb.append("      外部流量计故障 : ") ;
        sb.append(alarmWaterMeterFault == null?"未知":(alarmWaterMeterFault.byteValue()==1?"报警":(alarmWaterMeterFault.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
        sb.append("      偷水 : ") ;
        sb.append(alarmSteal == null?"未知":(alarmSteal.byteValue()==1?"报警":(alarmSteal.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
        sb.append("      流量计损坏 : ") ;
        sb.append(alarmWaterMeterBreak == null?"未知":(alarmWaterMeterBreak.byteValue()==1?"报警":(alarmWaterMeterBreak.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
        sb.append("      电表故障 : ") ;
        sb.append(alarmEleMeterFault == null?"未知":(alarmEleMeterFault.byteValue()==1?"报警":(alarmEleMeterFault.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
        sb.append("      剩余金额为0关泵/阀 : ") ;
        sb.append(alarm0MoneyRemain == null?"未知":(alarm0MoneyRemain.byteValue()==1?"报警":(alarm0MoneyRemain.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
        sb.append("      控制器内门 : ") ;
        sb.append(alarmInnerDoor == null?"未知":(alarmInnerDoor.byteValue()==1?"报警":(alarmInnerDoor.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
        sb.append("      控制器外门 : ") ;
        sb.append(alarmOuterDoor == null?"未知":(alarmOuterDoor.byteValue()==1?"报警":(alarmOuterDoor.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
        sb.append("      交流缺项 : ") ;
        sb.append(alarmEleMiss == null?"未知":(alarmEleMiss.byteValue()==1?"报警":(alarmEleMiss.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
        sb.append("      交流过流 : ") ;
        sb.append(alarmEleExceed == null?"未知":(alarmEleExceed.byteValue()==1?"报警":(alarmEleExceed.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
        sb.append("      三相电欠压 : ") ;
        sb.append(alarmEleLowVolt == null?"未知":(alarmEleLowVolt.byteValue()==1?"报警":(alarmEleLowVolt.byteValue()==0?"正常":"未知"))) ;
        sb.append("\n") ;
        sb.append("      IC卡使能 : ") ;
        sb.append(stateIcEnable == null?"未知":(stateIcEnable.byteValue()==1?"支持":(stateIcEnable.byteValue()==0?"不支持":"未知"))) ;
        sb.append("\n") ;
        return sb.toString() ;
    }
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd93_A3_85Vo.java
@@ -4,7 +4,7 @@
//平台/APP远程关闭水泵/阀门   +  刷卡关泵/阀上报
@Data
public class DataCd93_A3_85Vo {
public class DataCd93_A3_85Vo extends AlarmVo {
    public String controllerType;//控制器类型 01(0x01):测控一体阀;57(0x57):井电控制器
    public Integer projectNo ;//控制器类型 0x01:测控一体阀;0x57:井电控制器
@@ -23,24 +23,6 @@
    public Double thisWater ;//本次使用水量, 单位0.01立方米
    public Double thisMoney ;//本次使用金额, 单位0.01元
    public Integer thisDuration;//本次使用时间长, 单位:分钟
    public Byte statePump ; //泵/阀状态    (1:开泵/阀;0:关泵/阀)
    public Byte alarmWaterRemain ; //剩余水量报警    (1:小于报警上限报警 0:正常)
    public Byte alarm0WaterRemain ; //剩余水量为0关泵/阀    (1:剩余水量为0关泵  0:正常)
    public Byte alarmExceedYear ; //年度超采报警    (1:年用水量大于限制水量报警 0:正常)
    public Byte alarmWaterMeterFault ; //外部流量计故障    (1:流量计故障报警 0:正常)
    public Byte alarmSteal ; //偷水报警    (1:绕开控制器用水报警 0:正常)
    public Byte alarmWaterMeterBreak ; //流量计损坏报警    (1:正常通讯但瞬时为0报警 0:正常)
    public Byte alarmEleMeterFault ; //电表故障报警    (1:和电表通讯断或数据不正常 0:正常)
    public Byte alarm0MoneyRemain ; //剩余金额为0关泵/阀    (1:剩余金额为0报警  0:正常)
    public Byte alarmInnerDoor ; //控制器内门报警    (1:内门打开报警    0:正常)
    public Byte alarmOuterDoor ; //控制器外门报警    (1:外门打开报警    0:正常)
    public Byte alarmEleMiss ; //交流缺项报警    (1:三相缺项报警    0:正常)
    public Byte alarmEleExceed ; //交流过流报警    (1:交流过流报警    0:正常)
    public Byte alarmEleLowVolt ; //三相电欠压报警    (1:欠压报警        0:正常)
    public Byte stateIcEnable ; //IC卡使能    (1、IC有刷卡支持    0:不支持)
    public String comName ;//命令名称
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCdC2Vo.java
@@ -4,13 +4,14 @@
//开关水泵/阀门成功/失败上报
@Data
public class DataCdC2Vo {
public class DataCdC2Vo extends AlarmVo {
    public String controllerType ;//控制器类型:   01:测控一体阀;57:井电控制器
    public Integer projectNo ;//项目编号:
    public Byte opType1 ;//操作方式:0:刷卡开水泵/阀门;1:远程开水泵/阀门;2:APP开水泵/阀门
    public Byte opType2 ;//开启关闭:0: 开启 -1:关闭
    public Boolean success ;//执行结果(true成功, false失败)
    public String rutDt ;//设备时钟
    public String toString(){
        StringBuffer sb = new StringBuffer() ;
@@ -27,6 +28,9 @@
        sb.append("      开启关闭 : ") ;
        sb.append(opType2 == null?"未知":(opType2.byteValue()==0?"开启水泵/阀门":(opType2.byteValue()==1?"关闭水泵/阀门":"未知"))) ;
        sb.append("\n") ;
        sb.append("      设备时钟 : ") ;
        sb.append(rutDt == null?"未知":rutDt) ;
        sb.append("\n") ;
        sb.append("      执行结果 : ") ;
        sb.append(success == null?"未知":(success?"成功":"失败")) ;
        sb.append("\n") ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/ByteUtilUnsigned.java
@@ -1,6 +1,5 @@
package com.dy.common.util;
@SuppressWarnings("unuseed")
public class ByteUtilUnsigned {
    /**
     * 大端模式《数据低位在数组高字节》
@@ -36,7 +35,7 @@
            throw new Exception("int2Bytes时数组越界");
        }
    }
    /**
     * 小端模式《数据低位在数组低字节》
@@ -167,6 +166,90 @@
            throw new Exception("byte2Int时数组越界");
        }
    }
    /**
     * 小端模式《数据低位在数组低字节》
     * 与方法bytes2Int算法一样,只是把顺序反过来
     * @param bs
     * @return
     */
    public static long bytes2Long_LE(byte[] bs, int startIndex, int endIndex) throws Exception {
        boolean b = isOutOfArrLength(bs.length, endIndex);
        if (!b) {
            byte count = 0 ;
            long s = 0;
            long temp = 0 ;
            for(int i = startIndex ; i <= endIndex; i++){
                temp =  bs[i] & 0xFF ;// 数据的最低位在低字节
                if(temp < 0){
                    temp = Byte.MAX_VALUE * 2 + 1 + temp + 1 ;
                }
                if(count > 0){
                    temp <<= count * 8;
                }
                count++ ;
                s = s | temp ;
            }
            return s;
        } else {
            throw new Exception("bytes2Long_LE时数组越界");
        }
    }
    /**
     * 大端模式《数据低位在数组高字节》
     * 无符号short类型转换成2位byte数组
     * java没有无符号短整型数据,只有有符号短整数,取值范围是-32768~32767
     * 若模拟无符号短整型数据,取值范围是0到65535 ,已经超出了java的有符号整数上限,所以只能用java的Int型表示无符号整数
     * @value bs byte[]
     */
    public static long bytes2Long_BE(byte[] bs, int startIndex, int endIndex) throws Exception {
        boolean b = isOutOfArrLength(bs.length, endIndex);
        if (!b) {
            int count = endIndex - startIndex  ;
            long s = 0;
            long temp = 0 ;
            for(int i = startIndex ; i <= endIndex ; i++){
                temp =  bs[i] & 0xFF ;// 数据的最低位在低字节
                if(temp < 0){
                    temp = Byte.MAX_VALUE * 2 + 1 + temp + 1 ;
                }
                if(count > 0){
                    temp <<= count * 8;
                }
                count-- ;
                s = s | temp ;
            }
            return s;
        } else {
            throw new Exception("bytes2Long_LE时数组越界");
        }
    }
//    public static long bytes2Int_BE(byte[] bs, int from) throws Exception {
//        boolean b = isOutOfArrLength(bs.length, (from - 1) + 4);
//        if (!b) {
//            long s = 0;
//            long s0 = bs[from + 0] & 0xFF ;// 数据的最高位在低字节
//            long s1 = bs[from + 1] & 0xFF ;
//            long s2 = bs[from + 2] & 0xFF ;
//            long s3 = bs[from + 3] & 0xFF ;
//
//            // 最低位S3不变
//            s0 <<= 24;
//            s1 <<= 16;
//            s2 <<= 8;
//            s = s0 | s1 | s2 | s3;
//            if(s < 0){
//                //s = Integer.MAX_VALUE -s ;
//                s = Integer.MAX_VALUE * 2 + 1 + s + 1 ;
//            }
//            return s;
//        } else {
//            throw new Exception("byte2Int时数组越界");
//        }
//    }
    /**
     * 大端模式《数据低位在数组高字节》
     * 无符号short类型转换成2位byte数组
@@ -280,7 +363,7 @@
            throw new Exception("bytes2Short时数组越界");
        }
    }
    /**
     * 1位字节数组转换为短整型
@@ -292,7 +375,7 @@
        if (bs.length - 1 < index) {
            throw new Exception("byte2Short(byte[] bs, int index)时数组越界");
        } else {
            byte bv = (byte)(bs[index] & 0xff) ;
            byte bv = (byte)(bs[index] & 0xff) ;
            short s = 0 ;
            if(bv < 0){
                s = (short)(Byte.MAX_VALUE * 2 + 1 + bv + 1) ;
@@ -322,7 +405,7 @@
            bs[index] = Integer.valueOf(value & 0xff).byteValue() ;
        }
    }
    /**
     * 判断所有字节是否为0xFF
     * @param bs  字节数组
@@ -343,7 +426,7 @@
    /**
     * 判断数组下标是否越界
     *
     *
     * @value bsLength 数组总长度
     * @value toSite 数组偏移量
     * @return 结果
@@ -355,27 +438,34 @@
            return true;
        }
    }
    /*
    public static void main(String[] args) throws Exception{
//        int d = 123456;
//        byte[] bs = new byte[4] ;
//        int2Bytes_BE(bs, d, 0) ;
//        System.out.println(ByteUtil.bytes2Hex(bs, false));
//        long dd = bytes2Int_BE(bs, 0) ;
//        System.out.println(dd);
//
//        byte[] bb = new byte[1] ;
//        bb[0] = (byte)255 ;
//        short s = byte2Byte(bb, 0);
//        System.out.println(s);
        byte[] bs = new byte[]{(byte)0x00, (byte)0x00, (byte)0x3A, (byte)0x88} ;
        //byte[] bs = new byte[]{(byte)0xff, (byte)0xff, (byte)0xff, (byte)0xff} ;
        boolean flag = ByteUtilUnsigned.bytesIsAll0xFF(bs, 0, 4) ;
        System.out.println(flag);
        Long s = ByteUtilUnsigned.bytes2Int_BE(bs, 0);
        System.out.println(s);
        byte[] bs = new byte[]{(byte)0x38,(byte)0x1d,(byte)0x00,(byte)0x00,(byte)0x00} ;
        Long lg1 = ByteUtilUnsigned.bytes2Long_LE(bs, 0, 4) ;
        Long lg2 = ByteUtilUnsigned.bytes2Long_BE(bs, 0, 4) ;
        System.out.println(lg1);
        System.out.println(lg2);
    }
    */
//    public static void main(String[] args) throws Exception{
////        int d = 123456;
////        byte[] bs = new byte[4] ;
////        int2Bytes_BE(bs, d, 0) ;
////        System.out.println(ByteUtil.bytes2Hex(bs, false));
////        long dd = bytes2Int_BE(bs, 0) ;
////        System.out.println(dd);
////
////        byte[] bb = new byte[1] ;
////        bb[0] = (byte)255 ;
////        short s = byte2Byte(bb, 0);
////        System.out.println(s);
//
//        byte[] bs = new byte[]{(byte)0x00, (byte)0x00, (byte)0x3A, (byte)0x88} ;
//        //byte[] bs = new byte[]{(byte)0xff, (byte)0xff, (byte)0xff, (byte)0xff} ;
//        boolean flag = ByteUtilUnsigned.bytesIsAll0xFF(bs, 0, 4) ;
//        System.out.println(flag);
//        Long s = ByteUtilUnsigned.bytes2Int_BE(bs, 0);
//        System.out.println(s);
//
//
//    }
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkFindComResponse.java
New file
@@ -0,0 +1,32 @@
package com.dy.rtuMw.server.rtuData.p206V202404;
import com.dy.common.mw.protocol.Data;
import com.dy.rtuMw.server.rtuData.TaskSurpport;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
/**
 * @Author liurunyu
 * @Date 2024/5/8 14:18
 * @Description  识别命令响应上报
 */
public class TkFindComResponse extends TaskSurpport {
    private static final Logger log = LogManager.getLogger(TkFindComResponse.class.getName()) ;
    //类ID,一定与Tree.xml配置文件中配置一致
    public static final String taskId = "TkFindComResponse" ;
    /**
     * 执行节点任务
     * @param data 需要处理的数据
     */
    @Override
    public void execute(Object data) {
        Data d = (Data)data ;
        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/p206V202404/TkRtuDealCommandResponse.java
New file
@@ -0,0 +1,47 @@
package com.dy.rtuMw.server.rtuData.p206V202404;
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.p206V202404.DataV202404;
import com.dy.rtuMw.server.rtuData.TaskSurpport;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
/**
 * @Author liurunyu
 * @Date 2024/5/8 14:18
 * @Description 处理命令响应上报
 */
public class TkRtuDealCommandResponse extends TaskSurpport {
    private static final Logger log = LogManager.getLogger(TkRtuDealCommandResponse.class.getName()) ;
    //类ID,一定与Tree.xml配置文件中配置一致
    public static final String taskId = "TkRtuDealCommandResponse" ;
    /**
     * 执行节点任务:处理命令响应上报
     * @param data 需要处理的数据
     */
    @Override
    public void execute(Object data) {
        Data d = (Data)data ;
        Object protocolData = d.getSubData() ;
        if(protocolData != null){
            DataV202404 dV202404 = (DataV202404)protocolData ;
            if(dV202404 != null) {
//            if (dV1_0_1 != null && dV1_0_1.dataCdC0Vo != null) {
//                Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ;
//                DbSv sv = (DbSv)objs[0] ;
//                PrController controller = (PrController)objs[1] ;
//                try{
//                    this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), dV1_0_1, dV1_0_1.dataCdC0Vo) ;
//                    this.saveHistory(sv, controller, d.getRtuAddr(),dV1_0_1, dV1_0_1.dataCdC0Vo) ;
//                }catch (Exception e){
//                    log.error("保存控制器自报数据时发生异常", e);
//                }
//            }
            }
        }
    }
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/RtuDataDealTree.xml
@@ -39,11 +39,6 @@
                        <!-- 识别非命令应答上行数据 -->
                        <task id="TkFindReport" name="识别非命令应答上行数据" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkFindReport">
                            <task id="TkDealAlarmStatus" name="控制器报警与状态数据" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkDealAlarmStatus" />
                            <task id="TkDealAutoReport" name="控制器自报数据(整点报)" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkDealAutoReport" />
                            <task id="TkDealWorkReport" name="控制器阀开工作上报" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkDealWorkReport" />
                            <task id="TkDealOpenValveReport" name="控制器开阀上报" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkDealOpenValveReport" />
                            <task id="TkDealCloseValveReport" name="控制器关阀上报" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkDealCloseValveReport" />
                            <task id="TkDealLoss" name="控制器漏损统计(待新协议出来后修改实现)" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkDealLoss" />
                        </task>
                        <!-- 识别命令响应数据 -->
                        <task id="TkFindComResponse" name="识别响应命令数据" enable="true" class="com.dy.rtuMw.server.rtuData.p206V202404.TkFindComResponse">