ソースを参照

耳标数据接受的代码

yang 3 年 前
コミット
68b8f8067c
13 ファイル変更535 行追加395 行削除
  1. 1 3
      smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/java/com/huimv/acquisition/HuimvSmartEartagDataAcquisitionApplication.java
  2. 0 1
      smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/java/com/huimv/acquisition/autoconfigure/MybatisPlusConfiguration.java
  3. 6 64
      smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/java/com/huimv/acquisition/entity/CollectorRegisterEntity.java
  4. 3 0
      smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/java/com/huimv/acquisition/entity/DeviceTempEntity.java
  5. 7 89
      smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/java/com/huimv/acquisition/entity/EartagDataEntity.java
  6. 4 0
      smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/java/com/huimv/acquisition/entity/EartagRegisterEntity.java
  7. 150 25
      smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/java/com/huimv/acquisition/entity/MovePigpenEntity.java
  8. 1 6
      smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/java/com/huimv/acquisition/service/impl/EartagDataServiceImpl.java
  9. 26 1
      smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/java/com/huimv/acquisition/socket/Server.java
  10. 9 0
      smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/java/com/huimv/acquisition/socket/eartagrecive/constant/ImportanteConfig.java
  11. 42 61
      smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/java/com/huimv/acquisition/socket/eartagrecive/service/impl/ClientDataPacketServiceImpl.java
  12. 284 144
      smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/java/com/huimv/acquisition/socket/eartagrecive/service/impl/ReceivePackageSerivce.java
  13. 2 1
      smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/resources/application-dev.yml

+ 1 - 3
smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/java/com/huimv/acquisition/HuimvSmartEartagDataAcquisitionApplication.java

@@ -4,7 +4,6 @@ import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.scheduling.annotation.EnableScheduling;
 
-
 /**
  * @Project : huimv.shiwan
  * @Package : com.huimv.biosafety.uface.controller
@@ -13,12 +12,11 @@ import org.springframework.scheduling.annotation.EnableScheduling;
  * @Author : ZhuoNing
  * @Create : 2020-12-25
  **/
-@EnableScheduling     //开启定时任务
+@EnableScheduling    //开启定时任务
 @SpringBootApplication
 public class HuimvSmartEartagDataAcquisitionApplication {
     public static void main(String[] args) {
         SpringApplication.run(HuimvSmartEartagDataAcquisitionApplication.class, args);
     }
 }
-//j+112007239999996+133070300000011+89+0+3174+0+97+20210810105649+1.0#1.0#2528+0+end
 

+ 0 - 1
smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/java/com/huimv/acquisition/autoconfigure/MybatisPlusConfiguration.java

@@ -20,7 +20,6 @@ public class MybatisPlusConfiguration {
         interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
         return interceptor;
     }
-
 //    @Bean
 //    public ConfigurationCustomizer configurationCustomizer() {
 //        return configuration -> configuration.setUseDeprecatedExecutor(false);

+ 6 - 64
smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/java/com/huimv/acquisition/entity/CollectorRegisterEntity.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 
 import java.io.Serializable;
+import java.math.BigInteger;
 import java.util.Date;
 import lombok.Data;
 
@@ -18,83 +19,24 @@ import lombok.Data;
 @TableName("collector_register")
 public class CollectorRegisterEntity implements Serializable {
 	private static final long serialVersionUID = 1L;
-
-	/**
-	 * 记录id(主键)
-	 */
-	@TableId
 	private Integer id;
-	/**
-	 * 设备编码
-	 */
+	private BigInteger orgId;
+	private String orgName;
+	private String countyCode;
 	private String deviceCode;
-	/**
-	 * 盒子的芯片编码
-	 */
 	private String registeCode;
-	/**
-	 * 地县编码
-	 */
-	private String countyCode;
-	/**
-	 * 区县名
-	 */
-	private String countyName;
-	/**
-	 * 牧场编码
-	 */
 	private String farmCode;
-	/**
-	 * 牧场名称
-	 */
 	private String farmName;
-	/**
-	 * 动物种类
-	 */
 	private Integer typeF;
-	/**
-	 * 阶段
-	 */
 	private Integer stage;
-	/**
-	 * 猪舍id
-	 */
 	private Integer pigpenId;
-	/**
-	 * 单元id
-	 */
+	private String penName;
 	private Integer unitId;
-	/**
-	 * 上传服务器地址
-	 */
+	private String unitName;
 	private String serverIp;
-	/**
-	 * 端口
-	 */
 	private Integer port;
-	/**
-	 * 注册时间
-	 */
 	private Date registerTime;
-	/**
-	 * 最后上传时间
-	 */
 	private Date lastTime;
-	/**
-	 * 网络通信状态 1:正常、0:异常
-	 */
-	private Integer networkStatus;
-	/**
-	 * 采集状态 默认值 1  1.正常 2.异常
-	 */
-	private Integer acqStatus;
-	/**
-	 * 注销状态 1:正常、0:注销
-	 */
 	private Integer canStatus;
-	/**
-	 * 删除状态 1:正常、0:注销
-	 */
-	private Integer delStatus;
 
 }

+ 3 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/java/com/huimv/acquisition/entity/DeviceTempEntity.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 
 import java.io.Serializable;
+import java.math.BigInteger;
 import java.util.Date;
 import lombok.Data;
 
@@ -31,6 +32,8 @@ public class DeviceTempEntity implements Serializable {
 	/**
 	 * 
 	 */
+
+	private BigInteger orgId;
 	private String deviceCode;
 	/**
 	 * 

+ 7 - 89
smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/java/com/huimv/acquisition/entity/EartagDataEntity.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
 import java.io.Serializable;
+import java.math.BigInteger;
 import java.util.Date;
 
 @Data
@@ -18,111 +19,28 @@ public class EartagDataEntity implements Serializable {
      */
     @TableId
     private Integer id;
-
-    /**
-     * 采集器编码
-     */
     private String deviceCode;
-
-    /**
-     * 耳标号
-     */
     private String eartagNo;
-
-    /**
-     * 采集时间
-     */
     private Date time;
-
-    /**
-     * 佩标日龄
-     */
-    private Integer dayAge;
-
-    /**
-     * 日龄
-     */
-    private Integer dayAge2;
-
-    /**
-     * 耳根温度
-     */
     private double earTemp;
-
-    /**
-     * 运动量
-     */
     private Integer exercise;
-
-    /**
-     * 栋舍
-     */
     private String pigpen;
-
-    /**
-     * 环境温度
-     */
     private Double envTemp;
-
-    /**
-     * 电池电量
-     */
     private Integer bat;
-
-    /**
-     * 信号强度
-     */
     private Integer rssi;
-
-    /**
-     * 命令头
-     */
     private String head;
-
-    /**
-     * 指令
-     */
     private String command;
-
-    /**
-     * 版本号
-     */
     private String version;
-
-    /**
-     * 耳标帧序号
-     */
     private Integer frameSerialNo;
-
-    /**
-     * 重启次数
-     */
     private Integer rebootTimes;
-
-    /**
-     * 预留字段
-     */
+    private Integer unitId;
     private String prepareField;
-
-    /**
-     * 校验码
-     */
+    private BigInteger orgId;
     private String chk;
-
-    private   String  farmCode;
-
-    /**
-     *阶段
-     */
-    private  Integer stage;
-
-
-    private  Integer sportGap;
-    /**
-     * 命令尾
-     */
+    private String farmCode;
+    private Integer stage;
+    private Integer sportGap;
     private String tail;
 
-    public void setNtc(int parseInt) {
-    }
+
 }

+ 4 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/java/com/huimv/acquisition/entity/EartagRegisterEntity.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 
 import java.io.Serializable;
+import java.math.BigInteger;
 import java.util.Date;
 import lombok.Data;
 
@@ -40,6 +41,9 @@ public class EartagRegisterEntity implements Serializable {
 	 * 
 	 */
 	private String deviceCode;
+
+	private BigInteger orgId;
+
 	/**
 	 * 
 	 */

+ 150 - 25
smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/java/com/huimv/acquisition/entity/MovePigpenEntity.java

@@ -1,44 +1,169 @@
+//
+// Source code recreated from a .class file by IntelliJ IDEA
+// (powered by Fernflower decompiler)
+//
+
 package com.huimv.acquisition.entity;
 
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
 
 import java.io.Serializable;
+import java.math.BigInteger;
 import java.util.Date;
-import lombok.Data;
-
-/**
- * 
- * 
- * @author yinhao
- * @version ${version}
- * @date 2021-07-28 09:57:42
- */
 @Data
 @TableName("move_pigpen")
 public class MovePigpenEntity implements Serializable {
 	private static final long serialVersionUID = 1L;
-
-	/**
-	 * 主键
-	 */
 	@TableId
 	private Integer id;
-	/**
-	 * 耳标号
-	 */
 	private String eartagNo;
-	/**
-	 * 转舍日期
-	 */
 	private Date moveDate;
-	/**
-	 * 当前阶段
-	 */
 	private Integer stage;
-	/**
-	 * 设备编码
-	 */
 	private String deviceCode;
+	private BigInteger orgId;
+
+	public MovePigpenEntity() {
+	}
+
+	public Integer getId() {
+		return this.id;
+	}
+
+	public String getEartagNo() {
+		return this.eartagNo;
+	}
+
+	public Date getMoveDate() {
+		return this.moveDate;
+	}
+
+	public Integer getStage() {
+		return this.stage;
+	}
+
+	public String getDeviceCode() {
+		return this.deviceCode;
+	}
+
+	public BigInteger getOrgId() {
+		return this.orgId;
+	}
+
+	public void setId(final Integer id) {
+		this.id = id;
+	}
+
+	public void setEartagNo(final String eartagNo) {
+		this.eartagNo = eartagNo;
+	}
+
+	public void setMoveDate(final Date moveDate) {
+		this.moveDate = moveDate;
+	}
+
+	public void setStage(final Integer stage) {
+		this.stage = stage;
+	}
+
+	public void setDeviceCode(final String deviceCode) {
+		this.deviceCode = deviceCode;
+	}
+
+	public void setOrgId(final BigInteger orgId) {
+		this.orgId = orgId;
+	}
+
+	public boolean equals(final Object o) {
+		if (o == this) {
+			return true;
+		} else if (!(o instanceof MovePigpenEntity)) {
+			return false;
+		} else {
+			MovePigpenEntity other = (MovePigpenEntity)o;
+			if (!other.canEqual(this)) {
+				return false;
+			} else {
+				Object this$id = this.getId();
+				Object other$id = other.getId();
+				if (this$id == null) {
+					if (other$id != null) {
+						return false;
+					}
+				} else if (!this$id.equals(other$id)) {
+					return false;
+				}
+
+				Object this$stage = this.getStage();
+				Object other$stage = other.getStage();
+				if (this$stage == null) {
+					if (other$stage != null) {
+						return false;
+					}
+				} else if (!this$stage.equals(other$stage)) {
+					return false;
+				}
+
+				Object this$eartagNo = this.getEartagNo();
+				Object other$eartagNo = other.getEartagNo();
+				if (this$eartagNo == null) {
+					if (other$eartagNo != null) {
+						return false;
+					}
+				} else if (!this$eartagNo.equals(other$eartagNo)) {
+					return false;
+				}
+
+				label62: {
+					Object this$moveDate = this.getMoveDate();
+					Object other$moveDate = other.getMoveDate();
+					if (this$moveDate == null) {
+						if (other$moveDate == null) {
+							break label62;
+						}
+					} else if (this$moveDate.equals(other$moveDate)) {
+						break label62;
+					}
+
+					return false;
+				}
+
+				label55: {
+					Object this$deviceCode = this.getDeviceCode();
+					Object other$deviceCode = other.getDeviceCode();
+					if (this$deviceCode == null) {
+						if (other$deviceCode == null) {
+							break label55;
+						}
+					} else if (this$deviceCode.equals(other$deviceCode)) {
+						break label55;
+					}
+
+					return false;
+				}
+
+				Object this$orgId = this.getOrgId();
+				Object other$orgId = other.getOrgId();
+				if (this$orgId == null) {
+					if (other$orgId != null) {
+						return false;
+					}
+				} else if (!this$orgId.equals(other$orgId)) {
+					return false;
+				}
+
+				return true;
+			}
+		}
+	}
+
+	protected boolean canEqual(final Object other) {
+		return other instanceof MovePigpenEntity;
+	}
+
 
+	public String toString() {
+		return "MovePigpenEntity(id=" + this.getId() + ", eartagNo=" + this.getEartagNo() + ", moveDate=" + this.getMoveDate() + ", stage=" + this.getStage() + ", deviceCode=" + this.getDeviceCode() + ", orgId=" + this.getOrgId() + ")";
+	}
 }

+ 1 - 6
smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/java/com/huimv/acquisition/service/impl/EartagDataServiceImpl.java

@@ -91,12 +91,7 @@ public class EartagDataServiceImpl extends ServiceImpl<EartagDataDao, EartagData
             //过滤时间
             wrapper.between(EartagDataEntity::getTime, startTime, endTime);
         }
-        if (StringUtilsWork.isNotBlank(dayAge)){
-            wrapper.eq(EartagDataEntity::getDayAge, dayAge );
-        }
-        if (StringUtilsWork.isNotBlank(dayAge)){
-            wrapper.eq(EartagDataEntity::getDayAge2, dayAge2 );
-        }
+
         if (StringUtilsWork.isNotBlank(dayAge)){
             wrapper.eq(EartagDataEntity::getBat, dayAge );
         }

+ 26 - 1
smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/java/com/huimv/acquisition/socket/Server.java

@@ -3,7 +3,8 @@ import com.huimv.acquisition.socket.eartagrecive.service.IClientDataPacketServic
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.CommandLineRunner;
 import org.springframework.stereotype.Component;
-import java.io.IOException;
+
+import java.io.*;
 import java.net.ServerSocket;
 import java.net.Socket;
 
@@ -38,4 +39,28 @@ public class Server implements CommandLineRunner {
             e.printStackTrace();
         }
     }
+//测试发送数据
+    public static void main(String[] args) throws IOException {
+        //建立socket向服务器发送连接请求
+        Socket socket = new Socket("192.168.1.171",8889);
+        InputStream inputStream;
+        inputStream = socket.getInputStream();
+        OutputStream outputStream = socket.getOutputStream();
+        //客户端向socket发送数据
+        PrintWriter printWriter = new PrintWriter(outputStream);
+        //printWriter.println("zj+202007239999888+133070300000006+77+0+0+0+94+20211015092133+1.0#1.0#9440+0+end");    //没有注册
+        printWriter.println("zj+202007239999888+133070300000078+77+0+0+0+96+20211015102133+1.0#1.0#9383+0+end");
+        //printWriter.println("hm+158+4+1+289+20170208152300+6+end");
+        printWriter.flush();
+        //读取数据
+        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
+        String readLine = bufferedReader.readLine();
+        System.out.println(readLine);
+        inputStream.close();
+        outputStream.close();
+        socket.close();
+
+    }
+
+
 }

+ 9 - 0
smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/java/com/huimv/acquisition/socket/eartagrecive/constant/ImportanteConfig.java

@@ -8,6 +8,15 @@ package com.huimv.acquisition.socket.eartagrecive.constant;
  */
 public class ImportanteConfig {
 
+    //上传的网关心跳时检测,超过一定时间没有心跳包上来就报错-----用来检查网关的上线和下线
+    public static final int CHECK_DEVICE_UNABLE_GAP_TIME = 1000*60*2;    //目前设置为20分钟上传一次
+
+
+    //耳表数据上传时间的间隔计算需要用到牧场耳标数据上传时间
+    public static final int EARTAG_SEND_GAP_TIME = 1000*10;  //目前设置10秒上传一次
+
+
+
 
 
 

+ 42 - 61
smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/java/com/huimv/acquisition/socket/eartagrecive/service/impl/ClientDataPacketServiceImpl.java

@@ -1,78 +1,59 @@
-package com.huimv.acquisition.socket.eartagrecive.service.impl;
+//
+// Source code recreated from a .class file by IntelliJ IDEA
+// (powered by Fernflower decompiler)
+//
 
+package com.huimv.acquisition.socket.eartagrecive.service.impl;
 
 import com.huimv.acquisition.socket.eartagrecive.service.IClientDataPacketService;
-import lombok.extern.slf4j.Slf4j;
+import java.text.ParseException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.text.ParseException;
-
-/**
- * @Project : huimv.ql
- * @Package : com.huimv.biosafety.uface.controller
- * @Description : TODO
- * @Version : 1.0
- * @Author : ZhuoNing
- * @Create : 2020-12-25
- **/
-
 @Service
-@Slf4j
 public class ClientDataPacketServiceImpl implements IClientDataPacketService {
-
+    private static final Logger log = LoggerFactory.getLogger(ClientDataPacketServiceImpl.class);
     @Autowired
     private ReceivePackageSerivce receivePackageSerivce;
-
     @Autowired
     private SendPackageService sendPackageService;
 
-    //现在没有判断了,数据直接处理.上传的数据单一,只有耳标数据
-    @Override
+    public ClientDataPacketServiceImpl() {
+    }
+
     public String handleClientSendPacket(String clientMessageTxt) throws ParseException {
-        if (clientMessageTxt == null || clientMessageTxt.isEmpty()) {
+        if (clientMessageTxt != null && !clientMessageTxt.isEmpty()) {
+            String matcher = "[+]";
+            String[] clientMessageArray = clientMessageTxt.split(matcher);
+            String cmd = clientMessageArray[2];
+            String codHead = clientMessageArray[0];
+            log.info("本次执行命令>>" + cmd);
+            System.out.println(clientMessageTxt.toString());
+            new StringBuilder();
+            if (codHead.equals("zj")) {
+                return this.receivePackageSerivce.handleEartagData(clientMessageArray).toString();
+            } else if (Integer.parseInt(cmd) == 1) {
+                System.out.println("绑定序列号返回的设备id");
+                return this.sendPackageService.getDeviceId(clientMessageArray);
+            } else if (Integer.parseInt(cmd) == 2) {
+                System.out.println("处理获取服务器时间");
+                return this.sendPackageService.getServerDateTime(clientMessageArray);
+            } else if (Integer.parseInt(cmd) == 3) {
+                System.out.println("心跳");
+                return this.sendPackageService.getHeartbeatBag(clientMessageArray);
+            } else if (Integer.parseInt(cmd) == 4) {
+                return this.receivePackageSerivce.handleEartagTemperature(clientMessageArray);
+            } else if (Integer.parseInt(cmd) == 5) {
+                return this.receivePackageSerivce.handleEartagDampness(clientMessageArray);
+            } else {
+                log.error("出错:当前命令cmd>>[" + cmd + "]未做任何处理.");
+                return "null";
+            }
+        } else {
             log.error("本地提交数据包为空.");
-            return  "null"    ;
-        }
-        String matcher = "[+]";
-        String[] clientMessageArray = clientMessageTxt.split(matcher);
-        String cmd = clientMessageArray[2];
-        String  codHead = clientMessageArray[0];  //zj----hm----两种情况
-        log.info("本次执行命令>>" + cmd);
-        System.out.println(clientMessageTxt.toString());
-        StringBuilder echoResultSb = new StringBuilder();
-        // 校验后边再做;
-        //现在加一个判断  分为  hm和 zj
-       if(codHead.equals("zj")){
-           return receivePackageSerivce.handleEartagData(clientMessageArray).toString();
-       }
-
-        if (Integer.parseInt(cmd) == 1) {
-            // 绑定序列号返回的设备id
-            return sendPackageService.getDeviceId(clientMessageArray);
-        } else if (Integer.parseInt(cmd) == 2) {
-            // 处理获取服务器时间
-            return sendPackageService.getServerDateTime(clientMessageArray);
-        } else if (Integer.parseInt(cmd) == 3) {
-            // 处理心跳包
-            return sendPackageService.getHeartbeatBag(clientMessageArray);
-        } else if (Integer.parseInt(cmd) == 4) {
-            // 处理温度上传
-            return receivePackageSerivce.handleEartagTemperature(clientMessageArray);
-        } else if (Integer.parseInt(cmd) == 5) {
-            // 处理湿度上传
-            return receivePackageSerivce.handleEartagDampness(clientMessageArray);
-        } /*else if (Integer.parseInt(cmd) == 6) {     //不会出现等于6了。数据到此为止,为6的换成了zj
-            // 处理耳标数据
-            System.out.println("处理耳标数据");
-            System.out.println(clientMessageTxt);
-            return receivePackageSerivce.handleEartagData(clientMessageArray).toString();
-       }*/
-        else {
-            log.error("出错:当前命令cmd>>[" + cmd + "]未做任何处理.");
-            return  "null";
-        }
+            return "null";
         }
     }
-
-
+}

+ 284 - 144
smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/java/com/huimv/acquisition/socket/eartagrecive/service/impl/ReceivePackageSerivce.java

@@ -1,24 +1,26 @@
 package com.huimv.acquisition.socket.eartagrecive.service.impl;
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.huimv.acquisition.entity.*;
 import com.huimv.acquisition.mapper.CollectorRegisterDao;
 import com.huimv.acquisition.mapper.EartagDataDao;
 import com.huimv.acquisition.mapper.EartagRegisterDao;
 import com.huimv.acquisition.service.*;
+import com.huimv.acquisition.socket.eartagrecive.constant.ImportanteConfig;
 import com.huimv.acquisition.socket.eartagrecive.util.DateUtil;
 import com.huimv.acquisition.socket.eartagrecive.util.DateUtilsPublic;
-import com.huimv.acquisition.socket.eartagrecive.util.StringUtilsWork;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.math.BigDecimal;
-import java.text.*;
+import java.text.DecimalFormat;
+import java.text.NumberFormat;
+import java.text.ParseException;
 import java.util.Date;
 
-import static org.apache.commons.lang.StringUtils.split;
+;
 
 /**
  * @Project : huimv.ql
@@ -48,14 +50,14 @@ public class ReceivePackageSerivce {
     private EartagRegisterService  eartagRegisterService ;
 
     @Autowired
-    private DeviceTempService  deviceTempService;
+    private DeviceTempService deviceTempService;
 
     @Autowired
-    private CollectorRegisterService  collectorRegisterService;
+    private CollectorRegisterService collectorRegisterService;
 
 
     public String handleEartagData(String[] clientMessageArray) throws ParseException {
-        log.info("开始添加耳标数据......");
+        log.info("开始添加耳标数据......"+clientMessageArray);
         String  head = clientMessageArray[0];           //命令头
         String device_code = clientMessageArray[1];      //采集器ID
         String eartag_no  = clientMessageArray[2];         //版本号
@@ -65,184 +67,112 @@ public class ReceivePackageSerivce {
         int exercise = Integer.parseInt(clientMessageArray[6]);         //运动量
         //重启次数
         String rssi  = clientMessageArray[7];           //信号强度
+
         String  time = clientMessageArray[8];           //采集时间
+        Date sendEartagTime = DateUtilsPublic.parseDateTime(DateUtilsPublic.buildDateTimeString(time));
+
         String prepare_field= clientMessageArray[9];    //耳标温度
 
-        String[] split = prepare_field.split("#");//1.0#1.0#9314   --耳标版本--网关版本--电阻值(用来计算环境温度)
+        String[] split = prepare_field.split("#"); // 1.0#1.0#9314     --耳标版本--网关版本--电阻值(用来计算环境温度)
         String  check = clientMessageArray[10];          //校验码
         String  tail  = clientMessageArray[11];          //命令尾
         EartagDataEntity eartagDataEntity = new EartagDataEntity();
 
         eartagDataEntity.setHead(head);   //命令头
         eartagDataEntity.setDeviceCode(device_code); //采集器ID
-         eartagDataEntity.setVersion(split[0]);  //耳标版本
-         eartagDataEntity.setCommand(split[1]);  //网关版本
+        eartagDataEntity.setVersion(split[0]);  //耳标版本
+        eartagDataEntity.setCommand(split[1]);  //网关版本
 
         eartagDataEntity.setEartagNo(eartag_no);  //耳标号
-       // eartagDataEntity.setFrameSerialNo(Integer.parseInt(frame_serial_no));   //耳标帧序号
         eartagDataEntity.setBat(Integer.parseInt(bat));   //电池 电量
         DecimalFormat df = new DecimalFormat("####0.00");
-        double setEarTemp11 = Double.parseDouble(df.format(ln(Integer.parseInt(split[2]))));
-        eartagDataEntity.setEarTemp(Double.parseDouble( df.format( ln(Integer.parseInt(split[2]))))) ;  //ntc转环境温度
+
+
+        eartagDataEntity.setEarTemp(Double.parseDouble( df.format( ln(Integer.parseInt(split[2]))))) ;  //ntc转耳标温度-----
         eartagDataEntity.setEnvTemp(  Double.parseDouble(new DecimalFormat("#,##0.00").format(( Double.parseDouble(env_temp)/100))));   //环境温度--转doubbo
-        //System.out.println( ln(Integer.parseInt(prepare_field)));//----25.001
         System.out.println(Double.parseDouble(env_temp)/100);
 
+
         eartagDataEntity.setExercise(exercise);//运动量
-       //eartagDataEntity.setRebootTimes(Integer.parseInt(reboot_times));  //重启次数
         eartagDataEntity.setRssi(Integer.parseInt(rssi));//信号强度
-        eartagDataEntity.setTime( DateUtilsPublic.parseDateTime(DateUtilsPublic.buildDateTimeString(time)) ); //采集时间
+        eartagDataEntity.setTime(sendEartagTime); //采集时间
         eartagDataEntity.setPrepareField(prepare_field); //预留字段 4
         eartagDataEntity.setChk(check); //校验码
         eartagDataEntity.setTail(tail);//命令尾
-       //判断年猪表中是否有这一只耳标的数据   //栋舍这个字段在注册表中没有登记,在
+
+        //栋舍这个字段在注册表中没有登记,在
         LambdaQueryWrapper<CollectorRegisterEntity> wrapper1 = Wrappers.lambdaQuery();
         wrapper1.eq(CollectorRegisterEntity::getDeviceCode, device_code );
         CollectorRegisterEntity collectorRegisterEntity = collectorRegisterDao.selectOne(wrapper1);
+
+        System.out.println("设备编码 "+device_code);
         if (collectorRegisterEntity==null){//设备没注册就不让他存,基础信息都没有
             System.out.println("设备登记表中没有此设备信息,请先注册");
             return "设备登记表中没有此设备信息,请先注册";
         }
 
-       //查看这个耳标绑定的基站编码
-        LambdaQueryWrapper<EartagRegisterEntity> wrapper3 = Wrappers.lambdaQuery();
-        wrapper3.eq(EartagRegisterEntity::getEartagNo, eartag_no );
-        EartagRegisterEntity eartagRegisterEntity = eartagRegisterDao.selectOne(wrapper3);
-        System.out.println( "zhece xinxi "+eartagRegisterEntity+"ooo"+eartag_no+"ooo"+device_code);
-
-       // String deviceCode = eartagRegisterEntity.getDeviceCode();//---获取这个基站的编码
-       // System.out.println(deviceCode);
-
-        //wendu cha dayu 8
-      /*  if(Double.parseDouble(env_temp)/100==0){
-            //与注册表不同,,不存
-            System.out.println("丢弃");
-            return "hm+6+0+6+end";
-        }*/
-        System.out.println("存储");
-        //日龄
-        eartagDataEntity.setDayAge2(eartagRegisterEntity.getAge());
-        //上传设备发生了变化,      转舍信息进行存储
-        //在接受数据的时候加一条记录迁移信息的数据到一个新表中,方便查找
-        eartagDataEntity.setStage(collectorRegisterEntity.getStage()); //获取阶段
-        eartagDataEntity.setPigpen(String.valueOf(collectorRegisterEntity.getPigpenId())); //获取猪舍ID
-        eartagDataEntity.setFarmCode(collectorRegisterEntity.getFarmCode());//获取牧场编码
-         //关于两个日龄的处理--不应该是直接增加,应该是判断上一条的“日”和当前是否相同 ,相同不增加,不相同增加
-
 
         LambdaQueryWrapper<EartagDataEntity> wrapper = Wrappers.lambdaQuery();
         wrapper.eq(EartagDataEntity::getEartagNo, eartag_no ).orderByDesc( EartagDataEntity::getId ).last( "limit 1");
         EartagDataEntity   lastEarTagDate = eartagDataDao.selectOne(wrapper);
-        //返回的数据在这里为空--说明这个是第一次上传--需要存储一条device_code 为空的注册表
-       if(lastEarTagDate==null){//上一条为空,存转舍
-           LambdaQueryWrapper<EartagRegisterEntity> wrapper4 = Wrappers.lambdaQuery();
-           wrapper4.eq(EartagRegisterEntity::getEartagNo, eartag_no );
-           EartagRegisterEntity eartagRegisterEntity1 = eartagRegisterDao.selectOne(wrapper4);
-
-           MovePigpenEntity movePigpenEntity = new MovePigpenEntity();
-           movePigpenEntity.setDeviceCode(device_code);
-           movePigpenEntity.setEartagNo(eartag_no);
-           movePigpenEntity.setMoveDate(DateUtilsPublic.parseDateTime(DateUtilsPublic.buildDateTimeString(time)));
-           movePigpenEntity.setStage(collectorRegisterEntity.getStage());
-           movePigpenService.save(movePigpenEntity);
-           if(eartagRegisterEntity1==null){
-             //说明之前没有注册过--现在注册一下--设备ID的设置留给定时任务
-               EartagRegisterEntity eartagRegisterEntity2 = new EartagRegisterEntity();
-               eartagRegisterEntity2.setAge(0);
-               eartagRegisterEntity2.setDeviceCode(null);
-               eartagRegisterEntity2.setEartagNo(eartag_no);
-               eartagRegisterEntity2.setFarmCode(null);//定时任务获取到机器ID后处理
-               eartagRegisterEntity2.setPigpen( null);
-               eartagRegisterEntity2.setRegisterDate(new Date());
-               eartagRegisterEntity2.setStage(null);
-               eartagRegisterService.save(eartagRegisterEntity2);//存储一条还没有处理的数据
-           }
-
-           //第一次上传的数据----注册表肯定没有这只耳标的信息
-         /*  eartagDataEntity.setDayAge (0);  //佩标日龄----默认值,第一次有数据上传就是默认值
-           eartagDataEntity.setDayAge2(50); //日龄----默认第50天佩戴耳标*/
-           eartagDataEntity.setExercise(exercise);
-           eartagDataEntity.setSportGap(2);
-           eartagDataService.save(eartagDataEntity);
-           return "hm+6+0+6+end";
-     }
 
-        if(!eartagRegisterEntity.getDeviceCode().equals(device_code) ){
-            //与注册表不同,,不存
-            System.out.println("丢弃");
-            return "hm+6+0+6+end";
+        if (lastEarTagDate==null){//设备没注册就不让他存,基础信息都没有
+            System.out.println("第一次上传————>存储转舍表转舍信息--存储耳标注册表(猪只基础信息表)");
+            //存储转舍信息
+            MovePigpenEntity movePigpenEntity = new MovePigpenEntity();
+            movePigpenEntity.setDeviceCode(device_code);    //存储一个零
+            movePigpenEntity.setEartagNo(eartag_no);
+            movePigpenEntity.setMoveDate(DateUtilsPublic.parseDateTime(DateUtilsPublic.buildDateTimeString(time)));
+            movePigpenEntity.setStage(collectorRegisterEntity.getStage());
+            movePigpenEntity.setOrgId(collectorRegisterEntity.getOrgId());
+
+            movePigpenService.save(movePigpenEntity);
+
+            //存储注册信息(现在也是猪的基础信息---需要大量冗余,毕竟基础信息)    写定时任务刷新这张表
+            EartagRegisterEntity eartagRegisterEntity = new EartagRegisterEntity();
+            eartagRegisterEntity.setAge(0);
+            eartagRegisterEntity.setDeviceCode(device_code);//给绑定的设备编码死否会改变
+            eartagRegisterEntity.setEartagNo(eartag_no);
+            eartagRegisterEntity.setFarmCode(collectorRegisterEntity.getFarmCode());//定时任务获取到机器ID后处理
+            eartagRegisterEntity.setPigpen( String.valueOf(collectorRegisterEntity.getPigpenId()));
+            eartagRegisterEntity.setRegisterDate(new Date());
+            eartagRegisterEntity.setOrgId( collectorRegisterEntity.getOrgId());
+            eartagRegisterEntity.setStage(collectorRegisterEntity.getStage());
+
+            eartagRegisterService.save(eartagRegisterEntity);//存储一条还没有处理的数据
+
+            //存储这一条数据
+            eartagDataEntity.setFarmCode(collectorRegisterEntity.getFarmCode());
+            eartagDataEntity.setStage(collectorRegisterEntity.getStage());
+            eartagDataEntity.setPigpen((String.valueOf( collectorRegisterEntity.getPigpenId())));
+            eartagDataEntity.setSportGap(0);
+            System.out.println("存储成功------");
+            eartagDataService.save(eartagDataEntity);
 
-        }
-
-
-      if( Double.parseDouble(new DecimalFormat("#,##0.00").format(( Double.parseDouble(env_temp)/100))) <1.0){
-          //与注册表不同,,不存
-          System.out.println("丢弃环境温度为0");
-          return "hm+6+0+6+end";
-      }
-
-
-        if( device_code.equals("112007239999996")){
-            //这个基站的数据不要了
-            System.out.println("丢弃环境温度为0");
             return "hm+6+0+6+end";
         }
 
-//202007239999123
-
-        //上一条不为空---而且判断是存储注册表device-code
-        //存储转舍信息--还要判断新的设备阶段和老的设备阶段是否相同,如果相同就不存储转舍信息
-        if(!lastEarTagDate.getDeviceCode().equals(device_code)){
-           /* LambdaQueryWrapper<EartagRegisterEntity> wrapper4 = Wrappers.lambdaQuery();
-            wrapper4.eq(EartagRegisterEntity::getEartagNo, eartag_no );
-            EartagRegisterEntity eartagRegisterEntity1 = eartagRegisterDao.selectOne(wrapper4);//查到注册信息--有可能为空的
-            String deviceCode = eartagRegisterEntity1.getDeviceCode();
-            if ( StringUtilsWork.isNotBlank(deviceCode) ) {//如果耳标注册表的绑定机器ID为空就不存储转舍信息
-                System.out.println("之前=" + lastEarTagDate.getDeviceCode() + "现在" + device_code);
-                System.out.println(lastEarTagDate.getDeviceCode().equals(device_code));
-                 //上一阶段的
-                if(!lastEarTagDate.getStage().equals(collectorRegisterEntity.getStage())) {  //不相等,---判断阶段是否相同--阶段也不相同--增加转舍信息
-
-                    MovePigpenEntity movePigpenEntity = new MovePigpenEntity();
-                    movePigpenEntity.setDeviceCode(device_code);
-                    movePigpenEntity.setEartagNo(eartag_no);
-                    movePigpenEntity.setMoveDate(DateUtilsPublic.parseDateTime(DateUtilsPublic.buildDateTimeString(time)));
-                    movePigpenEntity.setStage(collectorRegisterEntity.getStage());
-                    movePigpenService.save(movePigpenEntity);
-                }
-            }*/
+        //如果第一条不为空,通过计算时间间隔来判断是否存储
+        long DateGap =sendEartagTime.getTime() - lastEarTagDate.getTime().getTime();
+        if( DateGap < ImportanteConfig.EARTAG_SEND_GAP_TIME){
+            //更改存储形式,通过计算间隔时间来判断数据的存储
+            System.out.println("间隔时间过短,抛弃");
+            return "间隔时间过短,抛弃";
         }
-        Integer exercise1 = lastEarTagDate.getExercise();
-        eartagDataEntity.setSportGap(exercise - exercise1);//存储区间运动量
-        //获取当前时间的 “天”---判断天的情况
-        int dayNow= Integer.parseInt(String.format("%td", DateUtilsPublic.parseDateTime(DateUtilsPublic.buildDateTimeString(time))));   //当前上传数据的天
-        int dayLastData= Integer.parseInt(String.format("%td",lastEarTagDate.getTime()));     //当前的天
-        System.out.println("当天时间="+dayNow+"----上一条时间"+dayLastData);
-
-
+        eartagDataEntity.setFarmCode(collectorRegisterEntity.getFarmCode());
+        eartagDataEntity.setStage(collectorRegisterEntity.getStage());
+        eartagDataEntity.setPigpen((String.valueOf( collectorRegisterEntity.getPigpenId())));
+        eartagDataEntity.setUnitId(collectorRegisterEntity.getUnitId());
 
-
-           if( dayNow == dayLastData){
-               //若相等,沿用上一条的日龄和配标日龄
-               eartagDataEntity.setDayAge (lastEarTagDate.getDayAge());  //佩标日龄
-               eartagDataEntity.setDayAge2(lastEarTagDate.getDayAge2()); //日龄
-            }else {
-               //有数据,若 “日” 不相等是否应该增加一天
-               eartagDataEntity.setDayAge (lastEarTagDate.getDayAge()+1 );  //佩标日龄
-               eartagDataEntity.setDayAge2(lastEarTagDate.getDayAge2()+1 ); //日龄
-           }
-
-           //设置最后一次上传时间
-        collectorRegisterEntity.setLastTime(new Date());
-        collectorRegisterService.updateById(collectorRegisterEntity);
+        eartagDataEntity.setSportGap(0);
+        eartagDataEntity.setOrgId(collectorRegisterEntity.getOrgId());
 
         eartagDataService.save(eartagDataEntity);
+        System.out.println("存储成功-----");
         return "hm+6+0+6+end";
     }
 
 
-
-
     public static void main(String[] args) {
         DecimalFormat df = new DecimalFormat("####0.00");
 
@@ -253,7 +183,6 @@ public class ReceivePackageSerivce {
         DecimalFormat   dFormat = new DecimalFormat("#.00");
         String yearString = dFormat.format(num);
         return  Double.parseDouble(yearString);
-
     }
 
 
@@ -293,6 +222,8 @@ public class ReceivePackageSerivce {
 
 
 
+
+
     //温度转换
     public static double ln(int rv) {
         int R_REF = 10000;
@@ -337,7 +268,9 @@ public class ReceivePackageSerivce {
      */
     public String handleEartagTemperature(String[] clientMessageArray) throws ParseException {
 
-       String header = clientMessageArray[0];
+
+        //设备温度
+        String header = clientMessageArray[0];
         String deviceId = clientMessageArray[1];
         String cmd = clientMessageArray[2];
         String serialNo = clientMessageArray[3];
@@ -345,8 +278,16 @@ public class ReceivePackageSerivce {
         String timestamp = clientMessageArray[5];
         String checkCode = clientMessageArray[6];
         String tail = clientMessageArray[7];
-      //  hm**0 +158**1  +4**2  +1**3  +289**4  +20170208152300**5  +6**6  +end**7
-        DeviceTempEntity  deviceTempEntity = new DeviceTempEntity();
+        //  hm**0 +158**1  +4**2  +1**3  +289**4  +20170208152300**5  +6**6  +end**7
+        LambdaQueryWrapper<CollectorRegisterEntity> wrapper1 = Wrappers.lambdaQuery();
+        wrapper1.eq(CollectorRegisterEntity::getDeviceCode, deviceId );
+        CollectorRegisterEntity collectorRegisterEntity = collectorRegisterDao.selectOne(wrapper1);
+        if (collectorRegisterEntity==null){//设备没注册就不让他存,基础信息都没有
+            System.out.println("设备登记表中没有此设备信息,请先注册");
+            return "设备登记表中没有此设备信息,请先注册";
+        }
+
+        DeviceTempEntity deviceTempEntity = new DeviceTempEntity();
         deviceTempEntity.setHeader(header);
         deviceTempEntity.setDeviceCode(deviceId);
         deviceTempEntity.setCmd(Integer.parseInt(cmd));
@@ -355,8 +296,207 @@ public class ReceivePackageSerivce {
         deviceTempEntity.setCreateDate(DateUtil.parseDateTime(DateUtil.buildDateTimeString(timestamp)));
         deviceTempEntity.setCheckCode(Integer.parseInt(checkCode));
         deviceTempEntity.setTail(tail);
+        deviceTempEntity.setOrgId(collectorRegisterEntity.getOrgId());
         deviceTempService.save(deviceTempEntity);
-//      temperatureService.add(EartagTemperaturePojo);
+        // temperatureService.add(EartagTemperaturePojo);
         return "hm+4+0+7+end";
     }
+
+
+
+
+ /*
+   备份-----数据可能有被需要
+   public String handleEartagData(String[] clientMessageArray) throws ParseException {
+        log.info("开始添加耳标数据......");
+        String  head = clientMessageArray[0];           //命令头
+        String device_code = clientMessageArray[1];      //采集器ID
+        String eartag_no  = clientMessageArray[2];         //版本号
+        String bat = clientMessageArray[3];        //耳标号
+        String ear_temp = clientMessageArray[4];  //耳标帧序号
+        String env_temp = clientMessageArray[5];
+        int exercise = Integer.parseInt(clientMessageArray[6]);         //运动量
+        //重启次数
+        String rssi  = clientMessageArray[7];           //信号强度
+        String  time = clientMessageArray[8];           //采集时间
+        String prepare_field= clientMessageArray[9];    //耳标温度
+
+        String[] split = prepare_field.split("#");//1.0#1.0#9314   --耳标版本--网关版本--电阻值(用来计算环境温度)
+        String  check = clientMessageArray[10];          //校验码
+        String  tail  = clientMessageArray[11];          //命令尾
+        EartagDataEntity eartagDataEntity = new EartagDataEntity();
+
+        eartagDataEntity.setHead(head);   //命令头
+        eartagDataEntity.setDeviceCode(device_code); //采集器ID
+        eartagDataEntity.setVersion(split[0]);  //耳标版本
+        eartagDataEntity.setCommand(split[1]);  //网关版本
+
+        eartagDataEntity.setEartagNo(eartag_no);  //耳标号
+        // eartagDataEntity.setFrameSerialNo(Integer.parseInt(frame_serial_no));   //耳标帧序号
+        eartagDataEntity.setBat(Integer.parseInt(bat));   //电池 电量
+        DecimalFormat df = new DecimalFormat("####0.00");
+        double setEarTemp11 = Double.parseDouble(df.format(ln(Integer.parseInt(split[2]))));
+        eartagDataEntity.setEarTemp(Double.parseDouble( df.format( ln(Integer.parseInt(split[2]))))) ;  //ntc转环境温度
+        eartagDataEntity.setEnvTemp(  Double.parseDouble(new DecimalFormat("#,##0.00").format(( Double.parseDouble(env_temp)/100))));   //环境温度--转doubbo
+        //System.out.println( ln(Integer.parseInt(prepare_field)));//----25.001
+        System.out.println(Double.parseDouble(env_temp)/100);
+
+        eartagDataEntity.setExercise(exercise);//运动量
+        //eartagDataEntity.setRebootTimes(Integer.parseInt(reboot_times));  //重启次数
+        eartagDataEntity.setRssi(Integer.parseInt(rssi));//信号强度
+        eartagDataEntity.setTime( DateUtilsPublic.parseDateTime(DateUtilsPublic.buildDateTimeString(time)) ); //采集时间
+        eartagDataEntity.setPrepareField(prepare_field); //预留字段 4
+        eartagDataEntity.setChk(check); //校验码
+        eartagDataEntity.setTail(tail);//命令尾
+        //判断年猪表中是否有这一只耳标的数据   //栋舍这个字段在注册表中没有登记,在
+        LambdaQueryWrapper<CollectorRegisterEntity> wrapper1 = Wrappers.lambdaQuery();
+        wrapper1.eq(CollectorRegisterEntity::getDeviceCode, device_code );
+        CollectorRegisterEntity collectorRegisterEntity = collectorRegisterDao.selectOne(wrapper1);
+        if (collectorRegisterEntity==null){//设备没注册就不让他存,基础信息都没有
+            System.out.println("设备登记表中没有此设备信息,请先注册");
+            return "设备登记表中没有此设备信息,请先注册";
+        }
+
+        //查看这个耳标绑定的基站编码
+        LambdaQueryWrapper<EartagRegisterEntity> wrapper3 = Wrappers.lambdaQuery();
+        wrapper3.eq(EartagRegisterEntity::getEartagNo, eartag_no );
+        EartagRegisterEntity eartagRegisterEntity = eartagRegisterDao.selectOne(wrapper3);
+        System.out.println( "zhece xinxi "+eartagRegisterEntity+"ooo"+eartag_no+"ooo"+device_code);
+
+        // String deviceCode = eartagRegisterEntity.getDeviceCode();//---获取这个基站的编码
+        // System.out.println(deviceCode);
+
+        //wendu cha dayu 8
+      *//*  if(Double.parseDouble(env_temp)/100==0){
+            //与注册表不同,,不存
+            System.out.println("丢弃");
+            return "hm+6+0+6+end";
+        }*//*
+        System.out.println("存储");
+        //日龄
+        eartagDataEntity.setDayAge2(eartagRegisterEntity.getAge());
+        //上传设备发生了变化,      转舍信息进行存储
+        //在接受数据的时候加一条记录迁移信息的数据到一个新表中,方便查找
+        eartagDataEntity.setStage(collectorRegisterEntity.getStage()); //获取阶段
+        eartagDataEntity.setPigpen(String.valueOf(collectorRegisterEntity.getPigpenId())); //获取猪舍ID
+        eartagDataEntity.setFarmCode(collectorRegisterEntity.getFarmCode());//获取牧场编码
+        //关于两个日龄的处理--不应该是直接增加,应该是判断上一条的“日”和当前是否相同 ,相同不增加,不相同增加
+
+
+        LambdaQueryWrapper<EartagDataEntity> wrapper = Wrappers.lambdaQuery();
+        wrapper.eq(EartagDataEntity::getEartagNo, eartag_no ).orderByDesc( EartagDataEntity::getId ).last( "limit 1");
+        EartagDataEntity   lastEarTagDate = eartagDataDao.selectOne(wrapper);
+        //返回的数据在这里为空--说明这个是第一次上传--需要存储一条device_code 为空的注册表
+        if(lastEarTagDate==null){//上一条为空,存转舍
+            LambdaQueryWrapper<EartagRegisterEntity> wrapper4 = Wrappers.lambdaQuery();
+            wrapper4.eq(EartagRegisterEntity::getEartagNo, eartag_no );
+            EartagRegisterEntity eartagRegisterEntity1 = eartagRegisterDao.selectOne(wrapper4);
+
+            MovePigpenEntity movePigpenEntity = new MovePigpenEntity();
+            movePigpenEntity.setDeviceCode(device_code);
+            movePigpenEntity.setEartagNo(eartag_no);
+            movePigpenEntity.setMoveDate(DateUtilsPublic.parseDateTime(DateUtilsPublic.buildDateTimeString(time)));
+            movePigpenEntity.setStage(collectorRegisterEntity.getStage());
+            movePigpenService.save(movePigpenEntity);
+            if(eartagRegisterEntity1==null){
+                //说明之前没有注册过--现在注册一下--设备ID的设置留给定时任务
+                EartagRegisterEntity eartagRegisterEntity2 = new EartagRegisterEntity();
+                eartagRegisterEntity2.setAge(0);
+                eartagRegisterEntity2.setDeviceCode(null);
+                eartagRegisterEntity2.setEartagNo(eartag_no);
+                eartagRegisterEntity2.setFarmCode(null);//定时任务获取到机器ID后处理
+                eartagRegisterEntity2.setPigpen( null);
+                eartagRegisterEntity2.setRegisterDate(new Date());
+                eartagRegisterEntity2.setStage(null);
+                eartagRegisterService.save(eartagRegisterEntity2);//存储一条还没有处理的数据
+            }
+
+            //第一次上传的数据----注册表肯定没有这只耳标的信息
+         *//*  eartagDataEntity.setDayAge (0);  //佩标日龄----默认值,第一次有数据上传就是默认值
+           eartagDataEntity.setDayAge2(50); //日龄----默认第50天佩戴耳标*//*
+            eartagDataEntity.setExercise(exercise);
+            eartagDataEntity.setSportGap(2);
+            eartagDataService.save(eartagDataEntity);
+            return "hm+6+0+6+end";
+        }
+
+        if(!eartagRegisterEntity.getDeviceCode().equals(device_code) ){
+            //与注册表不同,,不存
+            System.out.println("丢弃");
+            return "hm+6+0+6+end";
+
+        }
+
+
+        if( Double.parseDouble(new DecimalFormat("#,##0.00").format(( Double.parseDouble(env_temp)/100))) <1.0){
+            //与注册表不同,,不存
+            System.out.println("丢弃环境温度为0");
+            return "hm+6+0+6+end";
+        }
+
+
+        if( device_code.equals("112007239999996")){
+            //这个基站的数据不要了
+            System.out.println("丢弃环境温度为0");
+            return "hm+6+0+6+end";
+        }
+
+//202007239999123
+
+        //上一条不为空---而且判断是存储注册表device-code
+        //存储转舍信息--还要判断新的设备阶段和老的设备阶段是否相同,如果相同就不存储转舍信息
+        if(!lastEarTagDate.getDeviceCode().equals(device_code)){
+           *//* LambdaQueryWrapper<EartagRegisterEntity> wrapper4 = Wrappers.lambdaQuery();
+            wrapper4.eq(EartagRegisterEntity::getEartagNo, eartag_no );
+            EartagRegisterEntity eartagRegisterEntity1 = eartagRegisterDao.selectOne(wrapper4);//查到注册信息--有可能为空的
+            String deviceCode = eartagRegisterEntity1.getDeviceCode();
+            if ( StringUtilsWork.isNotBlank(deviceCode) ) {//如果耳标注册表的绑定机器ID为空就不存储转舍信息
+                System.out.println("之前=" + lastEarTagDate.getDeviceCode() + "现在" + device_code);
+                System.out.println(lastEarTagDate.getDeviceCode().equals(device_code));
+                 //上一阶段的
+                if(!lastEarTagDate.getStage().equals(collectorRegisterEntity.getStage())) {  //不相等,---判断阶段是否相同--阶段也不相同--增加转舍信息
+
+                    MovePigpenEntity movePigpenEntity = new MovePigpenEntity();
+                    movePigpenEntity.setDeviceCode(device_code);
+                    movePigpenEntity.setEartagNo(eartag_no);
+                    movePigpenEntity.setMoveDate(DateUtilsPublic.parseDateTime(DateUtilsPublic.buildDateTimeString(time)));
+                    movePigpenEntity.setStage(collectorRegisterEntity.getStage());
+                    movePigpenService.save(movePigpenEntity);
+                }
+            }*//*
+        }
+        Integer exercise1 = lastEarTagDate.getExercise();
+        eartagDataEntity.setSportGap(exercise - exercise1);//存储区间运动量
+        //获取当前时间的 “天”---判断天的情况
+        int dayNow= Integer.parseInt(String.format("%td", DateUtilsPublic.parseDateTime(DateUtilsPublic.buildDateTimeString(time))));   //当前上传数据的天
+        int dayLastData= Integer.parseInt(String.format("%td",lastEarTagDate.getTime()));     //当前的天
+        System.out.println("当天时间="+dayNow+"----上一条时间"+dayLastData);
+
+
+        if( dayNow == dayLastData){
+            //若相等,沿用上一条的日龄和配标日龄
+            eartagDataEntity.setDayAge (lastEarTagDate.getDayAge());  //佩标日龄
+            eartagDataEntity.setDayAge2(lastEarTagDate.getDayAge2()); //日龄
+        }else {
+            //有数据,若 “日” 不相等是否应该增加一天
+            eartagDataEntity.setDayAge (lastEarTagDate.getDayAge()+1 );  //佩标日龄
+            eartagDataEntity.setDayAge2(lastEarTagDate.getDayAge2()+1 ); //日龄
+        }
+        //设置最后一次上传时间
+        collectorRegisterEntity.setLastTime(new Date());
+        collectorRegisterService.updateById(collectorRegisterEntity);
+
+        eartagDataService.save(eartagDataEntity);
+        return "hm+6+0+6+end";
+    }*/
+
+
+
+
+
+
+
+
+
+
 }

+ 2 - 1
smart.eartag.data.platform/huimv-smart-eartag-data-acquisition/src/main/resources/application-dev.yml

@@ -1,9 +1,10 @@
 server:
   port: 9500
 
+
 spring:
   datasource:
-    url: jdbc:mysql://115.238.57.190:3306/smart_eartag_data_platform?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
+    url: jdbc:mysql://122.112.250.26:3306/cloud-platform-pub?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
     username: root
     password: hm123456
     driver-class-name: com.mysql.cj.jdbc.Driver