|
@@ -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);
|