CZT
2023-10-08 091c89cd56ad6dac4a2cb6767b00693058e0fbed
优化贝博粮情协议-星仓补点问题
已修改1个文件
117 ■■■■■ 文件已修改
igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/analysis/AnalysisService.java 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/analysis/AnalysisService.java
@@ -65,8 +65,39 @@
    public static double MAX_TEMP = -50.0;
    public static double MIN_TEMP = 50.0;
    /*
    * 00000000FFEB90FEAA41D821DD21DB21DE21DE21DA21DD21DE21DC21DC21DC21DC21DB21D821D721CE21D121DD21DC21DF21DE21DE21DD21DA21DD21D921DD21DC21DA21D921D921D721D521D321DD21DE21DF21DC21DF21DC21DA21DD21DD21DD21DC21DC21DC21DB21D821D721D121DC21DF21DF21DD21DD21DA21DE21DD21DC21DE21DB21D821DA21DB21D821D721D321DE21E021DD21DF21DF21DE21DB21DC21DF21DF21DD21DF21DB21DC21DB21FFFFFFFFDA21DC21D721DB21DB21DA21DB21D421DB21D921DC21D821D921D621D321FFFFFFFFDF21E021DE21DE21DB21DD21DC21E021DF21DD21DD21DC21DC21DC21DA21FFFFFFFFD921DD21DD21DE21DB21DD21DA21DB21DF21DD21DC21DB21DB21DB21D921FFFFFFFFDD21DC21DE21DD21DE21DC21DB21DC21DE21DE21DC21DC21DB21D921D921FFFFFFFFE021DD21DB21E021DF21DB21DB21D821DE21DE21DD21DD21DB21DB21DB21FFFFFFFFE021E021E021E221DC21DE21DF21DD21DD21DF21DF21DB21DC21DD21DC21FFFFFFFFE221E321E321E521E421DF21E321E321E321E521E321E121D921DE21FFFFFFFFFFFFE321E421E321E621E521E321E621E021E521E321E221E321DF21DE21FFFFFFFFFFFFE421E621E521E521E621E321E521E121E621E121E321E421E121DE21FFFFFFFFFFFFE621E421E521E521E521E321E521E421E121E321E521E321DF21E021FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40013D10101039014110101010101010101000000000000000E5113500031A4C
    *
    * 00000000FFEB90FEAA
    * 41
    * D821DD21DB21DE21DE21DA21DD21DE21DC21DC21DC21DC21DB21D821D721CE21D121
    * DD21DC21DF21DE21DE21DD21DA21DD21D921DD21DC21DA21D921D921D721D521D321
    * DD21DE21DF21DC21DF21DC21DA21DD21DD21DD21DC21DC21DC21DB21D821D721D121
    * DC21DF21DF21DD21DD21DA21DE21DD21DC21DE21DB21D821DA21DB21D821D721D321
    * DE21E021DD21DF21DF21DE21DB21DC21DF21DF21DD21DF21DB21DC21DB21FFFFFFFF
    * DA21DC21D721DB21DB21DA21DB21D421DB21D921DC21D821D921D621D321FFFFFFFF
    * DF21E021DE21DE21DB21DD21DC21E021DF21DD21DD21DC21DC21DC21DA21FFFFFFFF
    * D921DD21DD21DE21DB21DD21DA21DB21DF21DD21DC21DB21DB21DB21D921FFFFFFFF
    * DD21DC21DE21DD21DE21DC21DB21DC21DE21DE21DC21DC21DB21D921D921FFFFFFFF
    * E021DD21DB21E021DF21DB21DB21D821DE21DE21DD21DD21DB21DB21DB21FFFFFFFF
    * E021E021E021E221DC21DE21DF21DD21DD21DF21DF21DB21DC21DD21DC21FFFFFFFF
    *
    * E221E321E321E521E421DF21E321E321E321E521E321E121D921DE21FFFFFFFFFFFF
    * E321E421E321E621E521E321E621E021E521E321E221E321DF21DE21FFFFFFFFFFFF
    * E421E621E521E521E621E321E521E121E621E121E321E421E121DE21FFFFFFFFFFFF
    * E621E421E521E521E521E321E521E421E121E321E521E321DF21E021FFFFFFFFFFFF
    * FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    * 40013D 101010 390141 101010101010101010
    * 00000000000000E51135
    * 00031A4C
    *
    *
    *
    *
    *
    * */
    /**
     * 00000000FFEB90FEAA41E821EC21EA21EC21ED21EC21E921E221E921E921E921EC21E921ED21F021E521E521E221E421E321E321E121DE21D721E021DD21DC21DF21FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
     *
     *
     * @param hexStr
     */
@@ -228,14 +259,17 @@
        log.info("------筒仓粮情报文={}------", strPoints);
        int sumNum = 0, cableZ = 1;// sumNum 共多少根电缆;cableZ 层的最大值,锥形仓补齐最大层
        int sumNum = 0, cableZ = 1;  // sumNum 共多少根电缆;cableZ 层的最大值,锥形仓补齐最大层
        for (int i = 0; i < cableCirAtt.length; i++) {
            if (Integer.valueOf(cableCirAtt[i]) > cableZ) {
                cableZ = Integer.valueOf(cableCirAtt[i]);
            }
            sumNum += Integer.valueOf(cableRuleAtt[i]);
        }
        int cableZTemp = 1;// 当前仓的最大层
        cableZTemp = cableZ;
        //判断最大层跟分机的层数是否一致
        if(cableZ < ser.getCableZ()){
            cableZ = ser.getCableZ();
        }
@@ -252,39 +286,46 @@
        double tempValue;
        String temp;
        int symbol = 0; //符号位
        int num = 0; //标记解析的层数
        for (int i = 0; i < strPoints.length() / 4; i++) {
            temp = strPoints.substring(i * 4, i * 4 + 4);
            if (temp == null) {
                temp = "0000";
            if(num == cableZ){
                num = 0;
            }
            //高低位转换后转为16位二进制字符串
            temp = BytesUtil.tran_LH(temp);
            if(ERROR_HEX.equals(temp)){
                tempValue = Constant.ERROR_TEMP;
            }else {
                //10进制转16位的2进制
                temp = BytesUtil.hexString2binaryString(temp, 16);
                //符号位
                symbol = Integer.valueOf(temp.substring(0, 1));
                //获取温度值
                tempValue = BytesUtil.biannary2Decimal(temp.substring(6)) * 0.0625;
                //若为负,则补码:取反加1
                if (symbol == 1) {
                    tempValue = ((~BytesUtil.biannary2Decimal(temp.substring(6))) + 1) * 0.0625;
            if(num < cableZTemp){
                temp = strPoints.substring(i * 4, i * 4 + 4);
                if (temp == null) {
                    temp = "0000";
                }
                tempValue = NumberUtil.keepPrecision(tempValue, 1);
            }
                //高低位转换后转为16位二进制字符串
                temp = BytesUtil.tran_LH(temp);
                if(ERROR_HEX.equals(temp)){
                    tempValue = Constant.ERROR_TEMP;
                }else {
                    //10进制转16位的2进制
                    temp = BytesUtil.hexString2binaryString(temp, 16);
                    //符号位
                    symbol = Integer.valueOf(temp.substring(0, 1));
                    //获取温度值
                    tempValue = BytesUtil.biannary2Decimal(temp.substring(6)) * 0.0625;
                    //若为负,则补码:取反加1
                    if (symbol == 1) {
                        tempValue = ((~BytesUtil.biannary2Decimal(temp.substring(6))) + 1) * 0.0625;
                    }
                    tempValue = NumberUtil.keepPrecision(tempValue, 1);
                }
            //非正常值
            if (tempValue > ERROR_CHECK_TAG2) {
                tempValue = Constant.ERROR_TEMP;
            }
                //非正常值
                if (tempValue > ERROR_CHECK_TAG2) {
                    tempValue = Constant.ERROR_TEMP;
                }
            // 故障值处理
            if (tempValue >= FAULT_CHECK_TAG) {
                tempValue = Constant.FAULT_TEMP;
                // 故障值处理
                if (tempValue >= FAULT_CHECK_TAG) {
                    tempValue = Constant.FAULT_TEMP;
                }
                temps.add(tempValue);
            }
            temps.add(tempValue);
            num ++;
        }
        log.debug("-------CheckGrainRequest--={}", exeRequest.toString());
@@ -435,9 +476,9 @@
        grain.setHumidityOut(humidity * 1.0);
        substring = thStr.substring(2);
        tem = BytesUtil.hexToInt(substring);
        grain.setTempOut(tem * 1.0);
        grain.setTempOut(tem * 0.1);
        if(substring.startsWith("1")){
            grain.setTempOut(tem * -1.0);
            grain.setTempOut(tem * -0.1);
        }
        //解析仓内温仓内湿
@@ -452,9 +493,9 @@
        grain.setHumidityIn(humidity * 1.0);
        substring = thStr.substring(2);
        tem = BytesUtil.hexToInt(substring);
        grain.setTempIn(tem * 1.0);
        grain.setTempIn(tem * 0.1);
        if(substring.startsWith("1")){
            grain.setTempIn(tem * -1.0);
            grain.setTempIn(tem * -0.1);
        }
        grain.setReceiveDate(new Date());
@@ -547,9 +588,9 @@
        grain.setHumidityOut(humidity * 1.0);
        substring = thStr.substring(2);
        tem = BytesUtil.hexToInt(substring);
        grain.setTempOut(tem * 1.0);
        grain.setTempOut(tem * 0.1);
        if(substring.startsWith("1")){
            grain.setTempOut(tem * -1.0);
            grain.setTempOut(tem * -0.1);
        }
        //解析仓内温仓内湿
@@ -564,9 +605,9 @@
        grain.setHumidityIn(humidity * 1.0);
        substring = thStr.substring(2);
        tem = BytesUtil.hexToInt(substring);
        grain.setTempIn(tem * 1.0);
        grain.setTempIn(tem * 0.1);
        if(substring.startsWith("1")){
            grain.setTempIn(tem * -1.0);
            grain.setTempIn(tem * -0.1);
        }
        grain.setReceiveDate(new Date());