523096025 1 år sedan
förälder
incheckning
82c9ab55d7

+ 7 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/controller/LoginController.java

@@ -9,6 +9,7 @@ import com.huimv.guowei.admin.common.utils.ResultCode;
 import com.huimv.guowei.admin.common.utils.VerifyUtil;
 import com.huimv.guowei.admin.entity.SysAccountMultilevel;
 import com.huimv.guowei.admin.service.ILoginService;
+import com.huimv.guowei.admin.service.IRawDataService;
 import com.huimv.guowei.admin.session.AccessToken;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -115,7 +116,13 @@ public class LoginController {
         String token =  TokenSign.sign("superadmin",1,null);
         return  token;
     }
+    @Autowired
+    IRawDataService rawDataService;
 
+    @PostMapping("/listWeightByDevicCode")
+    public Result listWeightByDevicCode(@RequestBody Map<String, String> paramsMap){
+        return rawDataService.listWeightByDevicCodeAndTime(paramsMap);
+    }
 
 
 }

+ 2 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/service/IRawDataService.java

@@ -21,4 +21,6 @@ public interface IRawDataService extends IService<RawData> {
     Result listWeight(Map<String, String> paramsMap);
 
     Result listWeightByDevicCode(Map<String, String> paramsMap);
+
+    Result listWeightByDevicCodeAndTime(Map<String, String> paramsMap);
 }

+ 35 - 0
huimv-admin/src/main/java/com/huimv/guowei/admin/service/impl/RawDataServiceImpl.java

@@ -226,4 +226,39 @@ public class RawDataServiceImpl extends ServiceImpl<RawDataMapper, RawData> impl
         result.setList(rawDataDetailVos);
         return new Result(ResultCode.SUCCESS,result);
     }
+
+    @Override
+    public Result listWeightByDevicCodeAndTime(Map<String, String> paramsMap) {
+
+        String startDate = paramsMap.get("startDate");
+        String endDate = paramsMap.get("endDate");
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        if (StringUtils.isBlank(startDate) && StringUtils.isBlank(endDate)) {
+            startDate = DateUtil.beginOfDay(new Date()).toString();
+            endDate = DateUtil.endOfDay(new Date()).toString();
+        }
+        String deviceCode = paramsMap.get("deviceCode");
+        if (ObjectUtil.isEmpty(deviceCode)) {
+            return new Result(10001, "请选择笼位!", false);
+        }
+
+        QueryWrapper<RawData> wrapper = new QueryWrapper<>();
+        wrapper.eq("device_code", deviceCode);
+        wrapper.between("create_time", startDate, endDate);
+        wrapper.orderByAsc("id");
+        List<RawData> rawDataList = this.list(wrapper);
+        List list = new ArrayList();
+        for (RawData rawData : rawDataList) {
+            String weightDate = rawData.getData();
+            String[] s1 = weightDate.split(" ");
+            for (int i = 0; i < 60; i++) {
+                String str1 = s1[i * 2 + 11] + s1[i * 2 + 10];
+                BigDecimal weight = new BigDecimal(Integer.parseInt(str1, 16));
+                list.add(weight);
+            }
+        }
+
+        return new Result(ResultCode.SUCCESS, list);
+
+    }
 }

+ 150 - 118
input/src/main/java/com/huimv/input/server/EnvInputServerHandler.java

@@ -171,7 +171,17 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter   {
                             .collect(Collectors.joining());
                     String str1 = "550B02" + getDateX() + timestr + "AA";
 //                for (int i = 0; i < 10; i++) {
-                    ctx.writeAndFlush(Unpooled.copiedBuffer(hexStringToByteArray(str1)));
+
+                    LocalTime now = LocalTime.now();
+                    LocalTime zero = LocalTime.of(0, 45);
+                    LocalTime one = LocalTime.of(1, 5);
+                    if (now.isAfter(zero) && now.isBefore(one)) {
+                        for (int i = 0; i < 120; i++) {
+                            ctx.writeAndFlush(Unpooled.copiedBuffer(hexStringToByteArray(str1)));
+                            Thread.sleep(2000);
+                        }
+                    }
+
 //                    System.out.println(i+" : 下发数据:"+str1);
 //                    Thread.sleep(3000);
                 }
@@ -314,18 +324,22 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter   {
         BigDecimal bigDecimal0 = new BigDecimal(0);
 
         BigDecimal bigDecimal800 = new BigDecimal(-800);
-        BigDecimal bigDecimal2 = new BigDecimal(2);
-        Boolean flag = true;
+//        BigDecimal bigDecimal2 = new BigDecimal(2);
         LocalTime currentTime = LocalTime.now();
+        BigDecimal minWeight = new BigDecimal(99999);
         //检蛋
         if(currentTime.isAfter(jianStartTime) && currentTime.isBefore(jianEndTime)){
             for (int i = 0; i < 60; i++) {
                 String str1 = s[i * 2 + 11] + s[i * 2 + 10];
                 BigDecimal weight = new BigDecimal(Integer.parseInt(str1, 16));
-
-                BigDecimal subtract = lastWeight.subtract(weight);
+                int i2 = weight.intValue();
+                if (i2 <2000){
+                    continue;
+                }
+//                BigDecimal subtract = lastWeight.subtract(weight);
+                BigDecimal subtract = weight.subtract(lastWeight);
                 int i1 = subtract.intValue();
-                if(i1<-400) {
+                if(i1>500) {
                     EnvRegularCallEgg envRegularCallEgg = new EnvRegularCallEgg();
                     envRegularCallEgg.setBattery(bat);
                     envRegularCallEgg.setCallDate(new Date());
@@ -339,11 +353,13 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter   {
                     envRegularCallEgg.setChiNum(baseDuckInfo.getChiNum());
                     envRegularCallEgg.setJiaoNum(baseDuckInfo.getJiaoNum());
                     envRegularCallEgg.setBatchNum(baseDuckInfo.getBatchNum());
-                    if (  i1 >-800) {
+                    if (  i1 <700) {
                         envRegularCallEgg.setEggNum(1);
-                    } if (i1 <-800) {
+                    } else if (i1 >1100 && i1 <1400 ) {
                         envRegularCallEgg.setEggNum(2);
-                     }
+                     }else {
+                        continue;
+                    }
                     if (weight.compareTo(bigDecimal0) == 0) {
                         envRegularCallEgg.setDuckFeedingOriginal(bigDecimal0);
                     } else {
@@ -352,142 +368,152 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter   {
                     if (subtract.compareTo(bigDecimal0) == 0) {
                         envRegularCallEgg.setDuckWeight(bigDecimal0);
                     } else {
-                        envRegularCallEgg.setDuckWeight(subtract.divide(bigDecimal10, 1, BigDecimal.ROUND_HALF_UP));
+                        BigDecimal divide = subtract.divide(bigDecimal10, 1, BigDecimal.ROUND_HALF_UP);
+                        envRegularCallEgg.setDuckWeight(divide);
                     }
                     envRegularCallEggMapper.insert(envRegularCallEgg);
-                    lastWeight = weight;
-                }
 
+                }
+                if(weight.compareTo(minWeight) <0){
+                    minWeight = weight;
+                }
+//                lastWeight = weight;
+            }
 
+            //吃料
+            EnvRegularCallFeeding envRegularCallFeeding = new EnvRegularCallFeeding();
+            envRegularCallFeeding.setBattery(batStr);
+            envRegularCallFeeding.setCallDate(new Date());
+            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());
+            envRegularCallFeeding.setChiNum(baseDuckInfo.getChiNum());
+            envRegularCallFeeding.setJiaoNum(baseDuckInfo.getJiaoNum());
+            envRegularCallFeeding.setBatchNum(baseDuckInfo.getBatchNum());
+            if (minWeight.compareTo(bigDecimal0 )==0){
+                envRegularCallFeeding.setDuckFeedingOriginal(bigDecimal0);
+            }else {
+                envRegularCallFeeding.setDuckFeedingOriginal(minWeight.divide(bigDecimal10, 1, BigDecimal.ROUND_HALF_UP) );
             }
+            BigDecimal subtract = lastWeight.subtract(minWeight);
+            BigDecimal divide = subtract.divide(bigDecimal10, 1, BigDecimal.ROUND_HALF_UP);
+            if (subtract.compareTo(bigDecimal0 )==0){
+                envRegularCallFeeding.setDuckWeight(bigDecimal0);
+            }else  if(divide.compareTo(new BigDecimal(500 ) )> 0 ){
+                return;
+            }else {
+                envRegularCallFeeding.setDuckWeight( divide);
+            }
+            rawData.setLastWeight(minWeight);
+            rawDataMapper.updateById(rawData);
+
+
         }
 
         //上料
      else  if(currentTime.isAfter(liaoStartTime) && currentTime.isBefore(liaoEndTime)){
+            BigDecimal lastWeight2 = lastWeight;
+            BigDecimal maxWeight = null;
             for (int i = 0; i < 60; i++) {
                 String str1 = s[i * 2 + 11] + s[i * 2 + 10];
                 BigDecimal weight = new BigDecimal(Integer.parseInt(str1,16));
-                if (flag){
-                    //当时时间
-                    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;
-                        }
-                    }
-
-                    BigDecimal subtract = lastWeight.subtract(weight);
-
-
-                    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;
-                    }
-
-                    if (subtract.compareTo(bigDecimal0)<0){
-                        System.out.println("波动小于0.3g,舍弃");
-                        continue;
-                    }
+                int i2 = weight.intValue();
+                if (i2 <2000){
+                    continue;
+                }
+               BigDecimal subtract = lastWeight.subtract(weight);
+                int i1 = subtract.intValue();
+                if(weight.compareTo(minWeight) <0 && -800<i1&& i1<800){
+                    minWeight = weight;
+                }
 
-                    int compare = subtract.compareTo(new BigDecimal(1500));
-                    System.out.println(subtract +"------>"+weight+"----------->"+lastWeight);
-                    EnvRegularCallFeeding envRegularCallFeeding = new EnvRegularCallFeeding();
-                    envRegularCallFeeding.setBattery(batStr);
-                    envRegularCallFeeding.setCallDate(new Date());
-                    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);
+                if(i1 <-3000){
+                    //加料
+                     maxWeight = weight;
+                    EnvRegularCallFeedingCopy envRegularCallFeedingCopy = new EnvRegularCallFeedingCopy();
+                    envRegularCallFeedingCopy.setBattery(new BigDecimal(Integer.parseInt(bat, 16)).divide(bigDecimal10, 1, BigDecimal.ROUND_HALF_UP).toString());
+                    envRegularCallFeedingCopy.setCallDate(new Date());
+                    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 {
-                        envRegularCallFeeding.setDuckFeedingOriginal(weight.divide(bigDecimal10, 1, BigDecimal.ROUND_HALF_UP) );
+                        envRegularCallFeedingCopy.setDuckFeedingOriginal(weight.divide(bigDecimal10, 1, BigDecimal.ROUND_HALF_UP) );
                     }
                     if (subtract.compareTo(bigDecimal0 )==0){
-                        envRegularCallFeeding.setDuckWeight(bigDecimal0);
+                        envRegularCallFeedingCopy.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(new Date());
-                        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 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.setDuckWeight(subtract.divide(bigDecimal10, 1, BigDecimal.ROUND_HALF_UP) );
                     }
 
+                    envRegularCallFeedingCopy.setEventType(1);
+                    envRegularCallFeedingCopyMapper.insert(envRegularCallFeedingCopy);
+                    lastWeight =weight;
                     continue;
                 }
-                lastWeight  = weight;
-                flag = true;
+                lastWeight = weight;
+            }
+            EnvRegularCallFeeding envRegularCallFeeding = new EnvRegularCallFeeding();
+            envRegularCallFeeding.setBattery(batStr);
+            envRegularCallFeeding.setCallDate(new Date());
+            envRegularCallFeeding.setCallCode(decId+"");
+            envRegularCallFeeding.setCallName(envDevice.getDeviceName());
+            envRegularCallFeeding.setDuckId(baseDuckInfo.getId());
+            envRegularCallFeeding.setDuckNum(baseDuckInfo.getDuckNum());
+            envRegularCallFeeding.setFarmId(baseDuckInfo.getFarmId());
+            envRegularCallFeeding.setUnitId(baseDuckInfo.getUnitId());
+            envRegularCallFeeding.setChiNum(baseDuckInfo.getChiNum());
+            envRegularCallFeeding.setJiaoNum(baseDuckInfo.getJiaoNum());
+            envRegularCallFeeding.setBatchNum(baseDuckInfo.getBatchNum());
+            envRegularCallFeeding.setUnitName(baseDuckInfo.getUnitName());
+
+            if (lastWeight.compareTo(bigDecimal0 )==0){
+                envRegularCallFeeding.setDuckFeedingOriginal(bigDecimal0);
+            }else {
+                envRegularCallFeeding.setDuckFeedingOriginal(lastWeight.divide(bigDecimal10, 1, BigDecimal.ROUND_HALF_UP) );
+            }
+
+            BigDecimal subtract = lastWeight2.subtract(minWeight);
+            if (maxWeight!= null){
+                BigDecimal subtract1 = maxWeight.subtract(lastWeight);
+                subtract =     subtract.add(subtract1);
             }
 
+            if (subtract.compareTo(bigDecimal0 )==0){
+                envRegularCallFeeding.setDuckFeedingOriginal(bigDecimal0);
+            }else {
+                envRegularCallFeeding.setDuckWeight(subtract.divide(bigDecimal10, 1, BigDecimal.ROUND_HALF_UP) );
+            }
+            if (subtract.intValue()>0){
+                envRegularCallFeedingMapper.insert(envRegularCallFeeding);
+            }
+            rawData.setLastWeight(lastWeight);
+            rawDataMapper.updateById(rawData);
         }
      else {
-            BigDecimal minweight = lastWeight;
+//            BigDecimal minweight = lastWeight;
             for (int i = 0; i < 60; i++) {
                 String str1 = s[i * 2 + 11] + s[i * 2 + 10];
                 BigDecimal weight = new BigDecimal(Integer.parseInt(str1, 16));
 
-                if (weight.compareTo(lastWeight) <0) {
-                    minweight = weight;
+                int i2 = weight.intValue();
+                if (i2 <2000){
+                    continue;
+                }
+                if (weight.compareTo(minWeight) <0) {
+                    minWeight = weight;
                 }
-
             }
-            BigDecimal subtract = lastWeight.subtract(minweight);
+            BigDecimal subtract = lastWeight.subtract(minWeight);
             if (subtract.compareTo(bigDecimal0)<0){
                 System.out.println("波动小于0.3g,舍弃");
                 return;
@@ -505,25 +531,31 @@ public class EnvInputServerHandler extends ChannelInboundHandlerAdapter   {
             envRegularCallFeeding.setChiNum(baseDuckInfo.getChiNum());
             envRegularCallFeeding.setJiaoNum(baseDuckInfo.getJiaoNum());
             envRegularCallFeeding.setBatchNum(baseDuckInfo.getBatchNum());
-            if (minweight.compareTo(bigDecimal0 )==0){
+            if (minWeight.compareTo(bigDecimal0 )==0){
                 envRegularCallFeeding.setDuckFeedingOriginal(bigDecimal0);
             }else {
-                envRegularCallFeeding.setDuckFeedingOriginal(minweight.divide(bigDecimal10, 1, BigDecimal.ROUND_HALF_UP) );
+                envRegularCallFeeding.setDuckFeedingOriginal(minWeight.divide(bigDecimal10, 1, BigDecimal.ROUND_HALF_UP) );
             }
+            BigDecimal divide = subtract.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) );
+            }else  if(divide.compareTo(new BigDecimal(500 ) )> 0 ){
+                return;
+             }else {
+                envRegularCallFeeding.setDuckWeight( divide);
             }
 
             envRegularCallFeeding.setEventType(0);
             envRegularCallFeedingMapper.insert(envRegularCallFeeding);
+            rawData.setLastWeight(minWeight);
+            rawDataMapper.updateById(rawData);
 
         }
 
 
 
 
+
 //        try {
 //            BigDecimal bigDecimal3 = new BigDecimal(3);
 //            BigDecimal bigDecimala3 = new BigDecimal(-3);