523096025 1 год назад
Родитель
Сommit
083395549e
1 измененных файлов с 167 добавлено и 110 удалено
  1. 167 110
      input/src/main/java/com/huimv/input/server/EnvInputServerHandler.java

+ 167 - 110
input/src/main/java/com/huimv/input/server/EnvInputServerHandler.java

@@ -88,8 +88,10 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
         int decId = Integer.parseInt(hexId, 16);
         System.out.println("十进制id"+decId);
         long l = System.currentTimeMillis();
-
+        BigDecimal bigDecimal10 = new BigDecimal(10);
         String bat = s[8] + s[7] ;
+        String batStr = new BigDecimal(Integer.parseInt(bat, 16)).divide(bigDecimal10, 1, BigDecimal.ROUND_HALF_UP).toString();
+
 
         //获取上次一次数据
         RawData lastRawData = rawDataMapper.selectOne(new QueryWrapper<RawData>().eq("device_code", decId).orderByDesc("id").last("limit 1"));
@@ -104,6 +106,7 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
         rawData.setData(str);
         rawData.setCreateTime(new Date(l));
         rawData.setLastWeight(new BigDecimal(Integer.parseInt(s[sLength -2]+s[sLength-3], 16)));
+        rawData.setBattery(batStr);
         rawDataMapper.insert(rawData);
         //获取设备
         EnvDevice envDevice = envDeviceMapper.selectOne(new QueryWrapper<EnvDevice>().eq("device_code", decId).eq("device_type", 3));
@@ -123,52 +126,172 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
             BigDecimal bigDecimal3 = new BigDecimal(3);
             BigDecimal bigDecimala3 = new BigDecimal(-3);
             BigDecimal bigDecimal0 = new BigDecimal(0);
-            BigDecimal bigDecimal10 = new BigDecimal(10);
+
             BigDecimal bigDecimal800 = new BigDecimal(-800);
+            BigDecimal bigDecimal1600 = new BigDecimal(1600);
             BigDecimal bigDecimal2 = new BigDecimal(2);
+            Boolean flag = true;
             //循环获取体重
         for (int i = 0; i < 60; i++) {
-            //当时时间
-            Date thenTime = new Date(l - ((60-i)*10000));
-            //
             String str1 = s[i * 2 + 11] + s[i * 2 + 10];
             BigDecimal weight = new BigDecimal(Integer.parseInt(str1,16));
-            BigDecimal subtract = weight.subtract(lastWeight);
-           /* if (subtract.compareTo(bigDecimal3)<0&& subtract.compareTo(bigDecimal0)>0){
-                System.out.println("波动小于0.3g,舍弃");
-                continue;
-            }
-            if (subtract.compareTo(bigDecimala3)>0 && subtract.compareTo(bigDecimal0)<0){
-                System.out.println("波动小于0.3g,舍弃");
-                continue;
-            }*/
-
-            int compare = subtract.compareTo(new BigDecimal(1500));
-            System.out.println(subtract +"------>"+weight+"----------->"+lastWeight);
-            EnvRegularCallFeeding envRegularCallFeeding = new EnvRegularCallFeeding();
-            envRegularCallFeeding.setBattery(new BigDecimal(Integer.parseInt(bat, 16)).divide(bigDecimal10, 1, BigDecimal.ROUND_HALF_UP).toString());
-            envRegularCallFeeding.setCallDate(thenTime);
-            envRegularCallFeeding.setCallCode(decId+"");
-            envRegularCallFeeding.setCallName(envDevice.getDeviceName());
-            envRegularCallFeeding.setDuckId(baseDuckInfo.getId());
-            envRegularCallFeeding.setDuckNum(baseDuckInfo.getDuckNum());
-            envRegularCallFeeding.setFarmId(baseDuckInfo.getFarmId());
-            envRegularCallFeeding.setUnitId(baseDuckInfo.getUnitId());
-            envRegularCallFeeding.setUnitName(baseDuckInfo.getUnitName());
-            if (weight.compareTo(bigDecimal0 )==0){
-                envRegularCallFeeding.setDuckFeedingOriginal(bigDecimal0);
-            }else {
-                envRegularCallFeeding.setDuckFeedingOriginal(weight.divide(bigDecimal10, 1, BigDecimal.ROUND_HALF_UP) );
-            }
-            if (subtract.compareTo(bigDecimal0 )==0){
-                envRegularCallFeeding.setDuckWeight(bigDecimal0);
-            }else {
-                envRegularCallFeeding.setDuckWeight(subtract.divide(bigDecimal10, 1, BigDecimal.ROUND_HALF_UP) );
-            }
+            if (flag){
+                //当时时间
+                Date thenTime = new Date(l - ((60-i)*10000));
+                //
+                String str2 = "";
+                BigDecimal weight2 ;
+                if(i<59){
+                    str2 =  s[(i+1) * 2 + 11] + s[(i+1)  * 2 + 10];
+                    weight2 =  new BigDecimal(Integer.parseInt(str2,16));
+                    BigDecimal subtract2 = weight2.subtract(lastWeight);
+                    if (subtract2.compareTo(bigDecimal800) < 0){
+                        System.out.println("连续两次减重之和小于-80,舍弃");
+                        flag = false;
+                        lastWeight  = weight;
+                        continue;
+                    }
+                }
 
-            //加料
-            if (compare>0){
+                BigDecimal subtract = weight.subtract(lastWeight);
+
+
+                if (subtract.compareTo(bigDecimal3)<0&& subtract.compareTo(bigDecimal0)>0){
+                    System.out.println("波动小于0.3g,舍弃");
+                    continue;
+                }
+                if (subtract.compareTo(bigDecimala3)>0 && subtract.compareTo(bigDecimal0)<0){
+                    System.out.println("波动小于0.3g,舍弃");
+                    continue;
+                }
+
+                int compare = subtract.compareTo(new BigDecimal(1500));
+                System.out.println(subtract +"------>"+weight+"----------->"+lastWeight);
+                EnvRegularCallFeeding envRegularCallFeeding = new EnvRegularCallFeeding();
+                envRegularCallFeeding.setBattery(batStr);
+                envRegularCallFeeding.setCallDate(thenTime);
+                envRegularCallFeeding.setCallCode(decId+"");
+                envRegularCallFeeding.setCallName(envDevice.getDeviceName());
+                envRegularCallFeeding.setDuckId(baseDuckInfo.getId());
+                envRegularCallFeeding.setDuckNum(baseDuckInfo.getDuckNum());
+                envRegularCallFeeding.setFarmId(baseDuckInfo.getFarmId());
+                envRegularCallFeeding.setUnitId(baseDuckInfo.getUnitId());
+                envRegularCallFeeding.setUnitName(baseDuckInfo.getUnitName());
+                if (weight.compareTo(bigDecimal0 )==0){
+                    envRegularCallFeeding.setDuckFeedingOriginal(bigDecimal0);
+                }else {
+                    envRegularCallFeeding.setDuckFeedingOriginal(weight.divide(bigDecimal10, 1, BigDecimal.ROUND_HALF_UP) );
+                }
+                if (subtract.compareTo(bigDecimal0 )==0){
+                    envRegularCallFeeding.setDuckWeight(bigDecimal0);
+                }else {
+                    envRegularCallFeeding.setDuckWeight(subtract.divide(bigDecimal10, 1, BigDecimal.ROUND_HALF_UP) );
+                }
+
+                //加料
+                if (compare>0){
+
+                    EnvRegularCallFeedingCopy envRegularCallFeedingCopy = new EnvRegularCallFeedingCopy();
+                    envRegularCallFeedingCopy.setBattery(new BigDecimal(Integer.parseInt(bat, 16)).divide(bigDecimal10, 1, BigDecimal.ROUND_HALF_UP).toString());
+                    envRegularCallFeedingCopy.setCallDate(thenTime);
+                    envRegularCallFeedingCopy.setCallCode(decId+"");
+                    envRegularCallFeedingCopy.setCallName(envDevice.getDeviceName());
+                    envRegularCallFeedingCopy.setDuckId(baseDuckInfo.getId());
+                    envRegularCallFeedingCopy.setDuckNum(baseDuckInfo.getDuckNum());
+                    envRegularCallFeedingCopy.setFarmId(baseDuckInfo.getFarmId());
+                    envRegularCallFeedingCopy.setUnitId(baseDuckInfo.getUnitId());
+                    envRegularCallFeedingCopy.setUnitName(baseDuckInfo.getUnitName());
+                    if (weight.compareTo(bigDecimal0)==0){
+                        envRegularCallFeedingCopy.setDuckFeedingOriginal(bigDecimal0);
+                    }else {
+                        envRegularCallFeedingCopy.setDuckFeedingOriginal(weight.divide(bigDecimal10, 1, BigDecimal.ROUND_HALF_UP) );
+                    }
+                    if (subtract.compareTo(bigDecimal0 )==0){
+                        envRegularCallFeedingCopy.setDuckWeight(bigDecimal0);
+                    }else {
+                        envRegularCallFeedingCopy.setDuckWeight(subtract.divide(bigDecimal10, 1, BigDecimal.ROUND_HALF_UP) );
+                    }
+
+                    envRegularCallFeedingCopy.setEventType(1);
+                    envRegularCallFeedingCopyMapper.insert(envRegularCallFeedingCopy);
+                    lastWeight =weight;
+                    continue;
+                }
+                int compare50 = subtract.compareTo(new BigDecimal(800));
+                //下蛋
+                if (compare50>0){
+                    EnvRegularCallEgg envRegularCallEgg = new EnvRegularCallEgg();
+                    envRegularCallEgg.setBattery(bat);
+                    envRegularCallEgg.setCallDate(thenTime);
+                    envRegularCallEgg.setCallCode(decId+"");
+                    envRegularCallEgg.setCallName(envDevice.getDeviceName());
+                    envRegularCallEgg.setDuckId(baseDuckInfo.getId());
+                    envRegularCallEgg.setDuckNum(baseDuckInfo.getDuckNum());
+                    envRegularCallEgg.setFarmId(baseDuckInfo.getFarmId());
+                    envRegularCallEgg.setUnitId(baseDuckInfo.getUnitId());
+                    envRegularCallEgg.setUnitName(baseDuckInfo.getUnitName());
+                    envRegularCallEgg.setEggNum(1);
+                    if (weight.compareTo(bigDecimal0)==0){
+                        envRegularCallEgg.setDuckFeedingOriginal(bigDecimal0);
+                    }else {
+                        envRegularCallEgg.setDuckFeedingOriginal(weight.divide(bigDecimal10, 1, BigDecimal.ROUND_HALF_UP) );
+                    }
+                    if (subtract.compareTo(bigDecimal0 )==0){
+                        envRegularCallEgg.setDuckWeight(bigDecimal0);
+                    }else {
+                        envRegularCallEgg.setDuckWeight(subtract.divide(bigDecimal10, 1, BigDecimal.ROUND_HALF_UP) );
+                    }
+                    envRegularCallEggMapper.insert(envRegularCallEgg);
+                    lastWeight =weight;
+                    continue;
+                }
 
+                int compare1600 = subtract.compareTo(bigDecimal1600);
+                //两枚下蛋
+                if (compare1600>0){
+                    EnvRegularCallEgg envRegularCallEgg = new EnvRegularCallEgg();
+                    envRegularCallEgg.setBattery(bat);
+                    envRegularCallEgg.setCallDate(thenTime);
+                    envRegularCallEgg.setCallCode(decId+"");
+                    envRegularCallEgg.setCallName(envDevice.getDeviceName());
+                    envRegularCallEgg.setDuckId(baseDuckInfo.getId());
+                    envRegularCallEgg.setDuckNum(baseDuckInfo.getDuckNum());
+                    envRegularCallEgg.setFarmId(baseDuckInfo.getFarmId());
+                    envRegularCallEgg.setUnitId(baseDuckInfo.getUnitId());
+                    envRegularCallEgg.setUnitName(baseDuckInfo.getUnitName());
+                    envRegularCallEgg.setEggNum(2);
+                    if (weight.compareTo(bigDecimal0)==0){
+                        envRegularCallEgg.setDuckFeedingOriginal(bigDecimal0);
+                    }else {
+                        envRegularCallEgg.setDuckFeedingOriginal(weight.divide(bigDecimal10, 1, BigDecimal.ROUND_HALF_UP) );
+                    }
+                    if (subtract.compareTo(bigDecimal0 )==0){
+                        envRegularCallEgg.setDuckWeight(bigDecimal0);
+                    }else {
+                        envRegularCallEgg.setDuckWeight(subtract.divide(bigDecimal10, 1, BigDecimal.ROUND_HALF_UP) );
+                    }
+                    envRegularCallEggMapper.insert(envRegularCallEgg);
+                    lastWeight =weight;
+                    continue;
+                }
+
+                int compare0 = subtract.compareTo(bigDecimal0);
+                //小于零大于负八十
+                int compare80 = subtract.compareTo(bigDecimal800);
+                //吃料
+                if (compare0<0 && compare80 >=0){
+                    if (subtract.compareTo(bigDecimal0 )==0){
+                        envRegularCallFeeding.setDuckWeight(bigDecimal0);
+                    }else {
+                        envRegularCallFeeding.setDuckWeight(subtract.subtract(subtract.multiply(bigDecimal2)).divide(bigDecimal10, 1, BigDecimal.ROUND_HALF_UP));
+                    }
+                    envRegularCallFeeding.setEventType(0);
+                    envRegularCallFeedingMapper.insert(envRegularCallFeeding);
+                    lastWeight =weight;
+                    continue;
+                }
+
+                //其它
                 EnvRegularCallFeedingCopy envRegularCallFeedingCopy = new EnvRegularCallFeedingCopy();
                 envRegularCallFeedingCopy.setBattery(new BigDecimal(Integer.parseInt(bat, 16)).divide(bigDecimal10, 1, BigDecimal.ROUND_HALF_UP).toString());
                 envRegularCallFeedingCopy.setCallDate(thenTime);
@@ -179,7 +302,7 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
                 envRegularCallFeedingCopy.setFarmId(baseDuckInfo.getFarmId());
                 envRegularCallFeedingCopy.setUnitId(baseDuckInfo.getUnitId());
                 envRegularCallFeedingCopy.setUnitName(baseDuckInfo.getUnitName());
-                if (weight.compareTo(bigDecimal0)==0){
+                if (weight.compareTo(bigDecimal0 )==0){
                     envRegularCallFeedingCopy.setDuckFeedingOriginal(bigDecimal0);
                 }else {
                     envRegularCallFeedingCopy.setDuckFeedingOriginal(weight.divide(bigDecimal10, 1, BigDecimal.ROUND_HALF_UP) );
@@ -190,83 +313,17 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter {
                     envRegularCallFeedingCopy.setDuckWeight(subtract.divide(bigDecimal10, 1, BigDecimal.ROUND_HALF_UP) );
                 }
 
-                envRegularCallFeedingCopy.setEventType(1);
+                envRegularCallFeedingCopy.setEventType(2);
                 envRegularCallFeedingCopyMapper.insert(envRegularCallFeedingCopy);
-                lastWeight =weight;
-                continue;
-            }
-            int compare50 = subtract.compareTo(new BigDecimal(800));
-            //下蛋
-            if (compare50>0){
-                EnvRegularCallEgg envRegularCallEgg = new EnvRegularCallEgg();
-                envRegularCallEgg.setBattery(bat);
-                envRegularCallEgg.setCallDate(thenTime);
-                envRegularCallEgg.setCallCode(decId+"");
-                envRegularCallEgg.setCallName(envDevice.getDeviceName());
-                envRegularCallEgg.setDuckId(baseDuckInfo.getId());
-                envRegularCallEgg.setDuckNum(baseDuckInfo.getDuckNum());
-                envRegularCallEgg.setFarmId(baseDuckInfo.getFarmId());
-                envRegularCallEgg.setUnitId(baseDuckInfo.getUnitId());
-                envRegularCallEgg.setUnitName(baseDuckInfo.getUnitName());
-                envRegularCallEgg.setEggNum(1);
-                if (weight.compareTo(bigDecimal0)==0){
-                    envRegularCallEgg.setDuckFeedingOriginal(bigDecimal0);
-                }else {
-                    envRegularCallEgg.setDuckFeedingOriginal(weight.divide(bigDecimal10, 1, BigDecimal.ROUND_HALF_UP) );
-                }
-                if (subtract.compareTo(bigDecimal0 )==0){
-                    envRegularCallEgg.setDuckWeight(bigDecimal0);
-                }else {
-                    envRegularCallEgg.setDuckWeight(subtract.divide(bigDecimal10, 1, BigDecimal.ROUND_HALF_UP) );
-                }
-                envRegularCallEggMapper.insert(envRegularCallEgg);
-                lastWeight =weight;
                 continue;
             }
-
-            int compare0 = subtract.compareTo(bigDecimal0);
-            //小于零大于负八十
-            int compare80 = subtract.compareTo(bigDecimal800);
-            //吃料
-            if (compare0<0 && compare80 >=0){
-                if (subtract.compareTo(bigDecimal0 )==0){
-                    envRegularCallFeeding.setDuckWeight(bigDecimal0);
-                }else {
-                    envRegularCallFeeding.setDuckWeight(subtract.subtract(subtract.multiply(bigDecimal2)).divide(bigDecimal10, 1, BigDecimal.ROUND_HALF_UP));
-                }
-                envRegularCallFeeding.setEventType(0);
-                envRegularCallFeedingMapper.insert(envRegularCallFeeding);
-                lastWeight =weight;
-                continue;
-            }
-            //其它
-            EnvRegularCallFeedingCopy envRegularCallFeedingCopy = new EnvRegularCallFeedingCopy();
-            envRegularCallFeedingCopy.setBattery(new BigDecimal(Integer.parseInt(bat, 16)).divide(bigDecimal10, 1, BigDecimal.ROUND_HALF_UP).toString());
-            envRegularCallFeedingCopy.setCallDate(thenTime);
-            envRegularCallFeedingCopy.setCallCode(decId+"");
-            envRegularCallFeedingCopy.setCallName(envDevice.getDeviceName());
-            envRegularCallFeedingCopy.setDuckId(baseDuckInfo.getId());
-            envRegularCallFeedingCopy.setDuckNum(baseDuckInfo.getDuckNum());
-            envRegularCallFeedingCopy.setFarmId(baseDuckInfo.getFarmId());
-            envRegularCallFeedingCopy.setUnitId(baseDuckInfo.getUnitId());
-            envRegularCallFeedingCopy.setUnitName(baseDuckInfo.getUnitName());
-            if (weight.compareTo(bigDecimal0 )==0){
-                envRegularCallFeedingCopy.setDuckFeedingOriginal(bigDecimal0);
-            }else {
-                envRegularCallFeedingCopy.setDuckFeedingOriginal(weight.divide(bigDecimal10, 1, BigDecimal.ROUND_HALF_UP) );
-            }
-            if (subtract.compareTo(bigDecimal0 )==0){
-                envRegularCallFeedingCopy.setDuckWeight(bigDecimal0);
-            }else {
-                envRegularCallFeedingCopy.setDuckWeight(subtract.divide(bigDecimal10, 1, BigDecimal.ROUND_HALF_UP) );
-            }
-
-            envRegularCallFeedingCopy.setEventType(2);
-            envRegularCallFeedingCopyMapper.insert(envRegularCallFeedingCopy);
+            lastWeight  = weight;
+            flag = true;
         }
         }catch (Exception e){
             System.out.println(e);
         }
+
     }