zhuoning 2 년 전
부모
커밋
84974c1de8
28개의 변경된 파일1437개의 추가작업 그리고 22개의 파일을 삭제
  1. 69 0
      huimv-eartag2-platform/data-process/pom.xml
  2. 20 0
      huimv-eartag2-platform/data-process/src/main/java/com/huimv/dataprocess/DataProcessApplication.java
  3. 164 0
      huimv-eartag2-platform/data-process/src/main/java/com/huimv/dataprocess/dao/entity/EartagDataEntity.java
  4. 135 0
      huimv-eartag2-platform/data-process/src/main/java/com/huimv/dataprocess/dao/entity/EartagEartagRegister2Entity.java
  5. 9 0
      huimv-eartag2-platform/data-process/src/main/java/com/huimv/dataprocess/dao/repo/EartagDataEntityRepository.java
  6. 9 0
      huimv-eartag2-platform/data-process/src/main/java/com/huimv/dataprocess/dao/repo/EartagEartagRegister2EntityRepository.java
  7. 104 0
      huimv-eartag2-platform/data-process/src/main/resources/application-goldpig.yml
  8. 31 0
      huimv-eartag2-platform/data-process/src/main/resources/application.properties
  9. 62 0
      huimv-eartag2-platform/data-process/src/test/java/com/huimv/dataprocess/data/DataProcessTest.java
  10. 69 0
      huimv-eartag2-platform/data-process2/pom.xml
  11. 27 0
      huimv-eartag2-platform/data-process2/src/main/java/com/huimv/dataprocess2/DataProcess2Application.java
  12. 104 0
      huimv-eartag2-platform/data-process2/src/main/resources/application-eartag.yml
  13. 104 0
      huimv-eartag2-platform/data-process2/src/main/resources/application-eartag2.yml
  14. 31 0
      huimv-eartag2-platform/data-process2/src/main/resources/application.properties
  15. 408 0
      huimv-eartag2-platform/data-process2/src/test/java/com/huimv/dataprocess2/DataProcess2Test.java
  16. 0 1
      huimv-eartag2-platform/huimv-eartag2-admin/src/main/java/com/huimv/eartag2/admin/controller/LoginController.java
  17. 1 1
      huimv-eartag2-platform/huimv-eartag2-admin/src/main/resources/application-dev.yml
  18. 5 0
      huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/dao/repo/EartagDataRepo2.java
  19. 4 0
      huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/dao/repo/EartagEartagRegister2EntityRepo.java
  20. 2 0
      huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/dao/repo/SysBaseConfigEntityRepo.java
  21. 2 0
      huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/service/impl/BaseConfigServiceImpl.java
  22. 14 0
      huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/utils/Const.java
  23. 13 0
      huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/utils/DateUtil.java
  24. 0 5
      huimv-eartag2-platform/huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/listener/EartagListener.java
  25. 12 4
      huimv-eartag2-platform/huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/service/impl/EartagServiceImpl.java
  26. 34 9
      huimv-eartag2-platform/huimv-eartag2-eartag/src/main/resources/application-dev.yml
  27. 1 1
      huimv-eartag2-platform/huimv-eartag2-eartag/src/main/resources/application-test.yml
  28. 3 1
      huimv-eartag2-platform/huimv-eartag2-eartag/src/main/resources/application.properties

+ 69 - 0
huimv-eartag2-platform/data-process/pom.xml

@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>huimv-eartag2-platform</artifactId>
+        <groupId>com.huimv</groupId>
+        <version>0.0.1-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>data-process</artifactId>
+
+    <properties>
+        <java.version>1.8</java.version>
+    </properties>
+    <dependencies>
+        <!-- eartag2-common -->
+        <dependency>
+            <groupId>com.huimv</groupId>
+            <artifactId>huimv-eartag2-common</artifactId>
+            <version>0.0.2-SNAPSHOT</version>
+        </dependency>
+        <!-- 排除Tomcat容器 -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+            <!-- 移除掉默认支持的 Tomcat -->
+            <exclusions>
+                <exclusion>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-starter-tomcat</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <!-- 添加 Undertow 容器 -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-undertow</artifactId>
+        </dependency>
+        <!-- netty -->
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-all</artifactId>
+            <version>4.1.45.Final</version>
+        </dependency>
+        <!--rabbitmq-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-amqp</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <!--  -->
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+            <!--  -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-resources-plugin</artifactId>
+                <version>2.6</version>
+            </plugin>
+        </plugins>
+    </build>
+</project>

+ 20 - 0
huimv-eartag2-platform/data-process/src/main/java/com/huimv/dataprocess/DataProcessApplication.java

@@ -0,0 +1,20 @@
+package com.huimv.dataprocess;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.ApplicationContext;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@SpringBootApplication
+public class DataProcessApplication {
+    public static void main(String[] args) throws InterruptedException {
+        ApplicationContext applicationContext =   SpringApplication.run(DataProcessApplication.class, args);
+    }
+}

+ 164 - 0
huimv-eartag2-platform/data-process/src/main/java/com/huimv/dataprocess/dao/entity/EartagDataEntity.java

@@ -0,0 +1,164 @@
+package com.huimv.dataprocess.dao.entity;
+
+import javax.persistence.Entity;
+import javax.persistence.Column;
+import javax.persistence.GenerationType;
+import lombok.experimental.Accessors;
+import javax.persistence.Table;
+import javax.persistence.GeneratedValue;
+import java.sql.Timestamp;
+import lombok.Data;
+import java.io.Serializable;
+import javax.persistence.Id;
+ 
+@Entity
+@Table(name = "eartag_data")
+@Data
+@Accessors(chain = true)
+public class EartagDataEntity implements Serializable {
+
+private static final long serialVersionUID = 1L;
+
+/**
+ * 记录id(主键)
+ */
+@Id
+@GeneratedValue(strategy = GenerationType.IDENTITY)@Column(name = "id", nullable = false)
+private Integer id;
+
+/**
+ * 组织id
+ */
+@Column(name = "org_id")
+private Long orgId;
+
+/**
+ * 采集器编码
+ */
+@Column(name = "device_code")
+private String deviceCode;
+
+/**
+ * 耳标号
+ */
+@Column(name = "eartag_no")
+private String eartagNo;
+
+/**
+ * 采集时间
+ */
+@Column(name = "time")
+private Timestamp time;
+
+/**
+ * 耳根温度
+ */
+@Column(name = "ear_temp")
+private Double earTemp;
+
+/**
+ * 运动量
+ */
+@Column(name = "exercise")
+private Integer exercise;
+
+/**
+ * 栋舍
+ */
+@Column(name = "pigpen")
+private String pigpen;
+
+/**
+ * 单元ID
+ */
+@Column(name = "unit_id")
+private Integer unitId;
+
+/**
+ * 环境温度
+ */
+@Column(name = "env_temp")
+private Double envTemp;
+
+/**
+ * 电池电量
+ */
+@Column(name = "bat")
+private Integer bat;
+
+/**
+ * 信号强度
+ */
+@Column(name = "rssi")
+private Integer rssi;
+
+/**
+ * 命令头
+ */
+@Column(name = "head")
+private String head;
+
+/**
+ * 指令
+ */
+@Column(name = "command")
+private String command;
+
+/**
+ * 版本号
+ */
+@Column(name = "version")
+private String version;
+
+/**
+ * 耳标帧序号
+ */
+@Column(name = "frame_serial_no")
+private Integer frameSerialNo;
+
+/**
+ * 重启次数
+ */
+@Column(name = "reboot_times")
+private Integer rebootTimes;
+
+/**
+ * 预留字段
+ */
+@Column(name = "prepare_field")
+private String prepareField;
+
+/**
+ * 校验码
+ */
+@Column(name = "chk")
+private String chk;
+
+/**
+ * 命令尾
+ */
+@Column(name = "tail")
+private String tail;
+
+/**
+ * 牧场编码
+ */
+@Column(name = "farm_code")
+private String farmCode;
+
+/**
+ * 阶段
+ */
+@Column(name = "stage")
+private Integer stage;
+
+@Column(name = "sport_gap")
+private Integer sportGap;
+
+/**
+ * 耳标上传运动量
+ */
+@Column(name = "old_exercise")
+private Integer oldExercise;
+
+}

+ 135 - 0
huimv-eartag2-platform/data-process/src/main/java/com/huimv/dataprocess/dao/entity/EartagEartagRegister2Entity.java

@@ -0,0 +1,135 @@
+package com.huimv.dataprocess.dao.entity;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.sql.Date;
+import java.sql.Timestamp;
+
+@Entity
+@Data
+@Table(name = "eartag_eartag_register2")
+@Accessors(chain = true)
+public class EartagEartagRegister2Entity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "id", nullable = false)
+    private Integer id;
+
+    @Column(name = "earmark")
+    private String earmark;
+
+    @Column(name = "first_time")
+    private Timestamp firstTime;
+
+    @Column(name = "last_time")
+    private Timestamp lastTime;
+
+    @Column(name = "first_device")
+    private String firstDevice;
+
+    @Column(name = "belong_device")
+    private String belongDevice;
+
+    @Column(name = "last_device")
+    private String lastDevice;
+
+    @Column(name = "register_time")
+    private Timestamp registerTime;
+
+    @Column(name = "register_type")
+    private Integer registerType;
+
+    @Column(name = "remark")
+    private String remark;
+
+    @Column(name = "farm_id")
+    private String farmId;
+
+    @Column(name = "active_status")
+    private Integer activeStatus;
+
+    @Column(name = "active_time")
+    private Timestamp activeTime;
+
+    @Column(name = "live_status")
+    private Integer liveStatus;
+
+    @Column(name = "create_date")
+    private Date createDate;
+
+    @Column(name = "bat")
+    private Integer bat;
+
+    @Column(name = "reboot_times")
+    private Integer rebootTimes;
+
+    @Column(name = "on_day_age")
+    private Integer onDayAge;
+
+    @Column(name = "day_age")
+    private Integer dayAge;
+
+    @Column(name = "stage_code")
+    private String stageCode;
+
+    @Column(name = "stage_name")
+    private String stageName;
+
+    @Column(name = "pigpen_id")
+    private Integer pigpenId;
+
+    @Column(name = "pigpen_name")
+    private String pigpenName;
+
+    @Column(name = "unit_id")
+    private Integer unitId;
+
+    @Column(name = "unit_name")
+    private String unitName;
+
+    @Column(name = "act_range")
+    private Integer actRange;
+
+    @Column(name = "ear_temp1")
+    private Float earTemp1;
+
+    @Column(name = "env_temp1")
+    private Float envTemp1;
+
+    @Column(name = "act")
+    private Long act;
+
+    @Column(name = "signal1")
+    private Integer signal1;
+
+    @Column(name = "other")
+    private String other;
+
+    @Column(name = "ask_time")
+    private String askTime;
+
+    @Column(name = "env_abnormal")
+    private Integer envAbnormal;
+
+    @Column(name = "ear_abnormal")
+    private Integer earAbnormal;
+
+    /**
+     * 可视码
+     */
+    @Column(name = "view_code")
+    private String viewCode;
+
+    /**
+     * RFID id号
+     */
+    @Column(name = "rfid_id")
+    private String rfidId;
+
+}

+ 9 - 0
huimv-eartag2-platform/data-process/src/main/java/com/huimv/dataprocess/dao/repo/EartagDataEntityRepository.java

@@ -0,0 +1,9 @@
+package com.huimv.dataprocess.dao.repo;
+
+import com.huimv.dataprocess.dao.entity.EartagDataEntity;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+
+public interface EartagDataEntityRepository extends JpaRepository<EartagDataEntity, Integer>, JpaSpecificationExecutor<EartagDataEntity> {
+
+}

+ 9 - 0
huimv-eartag2-platform/data-process/src/main/java/com/huimv/dataprocess/dao/repo/EartagEartagRegister2EntityRepository.java

@@ -0,0 +1,9 @@
+package com.huimv.dataprocess.dao.repo;
+
+import com.huimv.dataprocess.dao.entity.EartagEartagRegister2Entity;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+
+public interface EartagEartagRegister2EntityRepository extends JpaRepository<EartagEartagRegister2Entity, Integer>, JpaSpecificationExecutor<EartagEartagRegister2Entity> {
+
+}

+ 104 - 0
huimv-eartag2-platform/data-process/src/main/resources/application-goldpig.yml

@@ -0,0 +1,104 @@
+server:
+  port: 8090
+
+spring:
+  application:
+    name: huimv-eartag2-input
+
+  datasource:
+    url: jdbc:mysql://192.168.1.7:3306/huimv-goldpig?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
+    username: root
+    password: hm123456
+    driver-class-name: com.mysql.cj.jdbc.Driver
+  jpa:
+    show-sql: true
+    database: mysql
+    hibernate:
+      ddl-auto: update
+    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
+    open-in-view: true
+
+  #配置rabbitMq 服务器
+#  rabbitmq:
+#    host: 10.0.0.4
+#    port: 5672
+#    username: huimv
+#    password: hm123456
+#    #虚拟host 可以不设置,使用server默认host
+#    virtual-host: /
+  rabbitmq:
+    host: 192.168.1.170
+    port: 5672
+    username: admin
+    password: admin
+    #虚拟host 可以不设置,使用server默认host
+    virtual-host: /
+
+    #确认消息已发送到交换机(Exchange)
+#    publisher-confirms: true #(过时、弃用)
+    publisher-confirm-type: correlated
+    #确认消息已发送到队列(Queue)
+    publisher-returns: true
+
+  #redis
+  redis:
+    database: 0
+    host: 192.168.1.68
+    port: 6379
+    password: hm123456
+    timeout: 5000ms
+    jedis:
+      pool:
+        max-active: 20
+        max-wait: -1
+        max-idle: 10
+        min-idle: 0
+    lettuce:
+      pool:
+        max-active: 3
+        min-idle: 2
+        max-idle: 3
+        max-wait: 1
+      shutdown-timeout: 100
+
+  data:
+    redis:
+      repositories:
+        enabled: false
+
+  #是否缓存空值
+  cache:
+    redis:
+      cache-null-values: false
+
+
+
+    #server:
+#  port: 9110
+#spring:
+#  application:
+#    name: huimv-hy-autoGetData
+#
+#  datasource:
+##    url: jdbc:mysql://47.98.175.112:3306/huimv_ql_farm_haiyan?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
+#    #    url: jdbc:mysql://36.22.189.214:3306/huimv_ql_farm?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
+#        url: jdbc:mysql://192.168.1.7:3306/huimv_ql_farm?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
+#    username: root
+#    password: hm123456
+#    driver-class-name: com.mysql.cj.jdbc.Driver
+#  jpa:
+#    properties:
+#      hibernate:
+#        enable_lazy_load_no_trans: true
+#    show-sql: true
+#    database: mysql
+#    hibernate:
+#      ddl-auto: update
+#    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
+#    open-in-view: true
+management:
+  endpoints:
+    web:
+      exposure:
+        include: "*"   # * 在yaml 文件属于关键字,所以需要加引号
+

+ 31 - 0
huimv-eartag2-platform/data-process/src/main/resources/application.properties

@@ -0,0 +1,31 @@
+spring.profiles.active=goldpig
+
+#开启健康监控
+management.endpoints.web.exposure.include=*
+
+#########################################################
+###             配置undertow取代tomcat                ###
+#########################################################
+# 是否打开 undertow 日志,默认为 false
+server.undertow.accesslog.enabled=false
+# 设置访问日志所在目录
+server.undertow.accesslog.dir=logs
+# 指定工作者线程的 I/0 线程数,默认为 2 或者 CPU 的个数
+server.undertow.io-threads=
+# 指定工作者线程个数,默认为 I/O 线程个数的 8 倍
+server.undertow.worker-threads=
+# 设置 HTTP POST 内容的最大长度,默认不做限制
+server.undertow.max-http-post-size=0
+
+#########################################################
+###   Actuator Monitor  --   Actuator configuration   ###
+#########################################################
+management.security.enabled=false
+
+# 数据处理流程
+data.input.flow=2
+
+# 是否写入测试数据(1:写入 0:不写入)
+data.test.input=0
+
+

+ 62 - 0
huimv-eartag2-platform/data-process/src/test/java/com/huimv/dataprocess/data/DataProcessTest.java

@@ -0,0 +1,62 @@
+package com.huimv.dataprocess.data;
+
+import com.alibaba.fastjson.JSON;
+import com.huimv.dataprocess.dao.entity.EartagDataEntity;
+import com.huimv.dataprocess.dao.repo.EartagDataEntityRepository;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.text.ParseException;
+import java.util.List;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@SpringBootTest
+@RunWith(SpringRunner.class)
+public class DataProcessTest {
+    @Autowired
+    private EartagDataEntityRepository eartagDataEntityRepository;
+
+    @Test
+    public void exportData() throws IOException {
+        System.out.println("开始导出数据...");
+        List<EartagDataEntity> EartagDataEntityList = eartagDataEntityRepository.findAll();
+        System.out.println("EartagDataEntityList.size="+EartagDataEntityList.size());
+        for(EartagDataEntity eartagDataEntity:EartagDataEntityList){
+            System.out.println(""+eartagDataEntity.toString());
+            writeTxt(JSON.toJSONString(eartagDataEntity));
+        }
+        System.out.println("完成导出数据.");
+    }
+
+    @Test
+    public void importData(){
+        System.out.println("importData()");
+    }
+
+    public void writeTxt(String conent) throws IOException {
+        File f = new File("D:/6/goldpig.txt");
+        if (f.exists()) {
+        } else {
+            f.createNewFile();// 不存在则创建
+        }
+        BufferedWriter output = new BufferedWriter(new FileWriter(f, true));//true,则追加写入text文本
+        output.write(conent);
+        output.write("\r\n");//换行
+        output.flush();
+        output.close();
+    }
+}

+ 69 - 0
huimv-eartag2-platform/data-process2/pom.xml

@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>huimv-eartag2-platform</artifactId>
+        <groupId>com.huimv</groupId>
+        <version>0.0.1-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>data-process2</artifactId>
+
+    <properties>
+        <java.version>1.8</java.version>
+    </properties>
+    <dependencies>
+        <!-- eartag2-common -->
+        <dependency>
+            <groupId>com.huimv</groupId>
+            <artifactId>huimv-eartag2-common</artifactId>
+            <version>0.0.2-SNAPSHOT</version>
+        </dependency>
+        <!-- 排除Tomcat容器 -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+            <!-- 移除掉默认支持的 Tomcat -->
+            <exclusions>
+                <exclusion>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-starter-tomcat</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <!-- 添加 Undertow 容器 -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-undertow</artifactId>
+        </dependency>
+        <!-- netty -->
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-all</artifactId>
+            <version>4.1.45.Final</version>
+        </dependency>
+        <!--rabbitmq-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-amqp</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <!--  -->
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+            <!--  -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-resources-plugin</artifactId>
+                <version>2.6</version>
+            </plugin>
+        </plugins>
+    </build>
+</project>

+ 27 - 0
huimv-eartag2-platform/data-process2/src/main/java/com/huimv/dataprocess2/DataProcess2Application.java

@@ -0,0 +1,27 @@
+package com.huimv.dataprocess2;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.domain.EntityScan;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.ComponentScans;
+import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@SpringBootApplication
+@EntityScan(value = "com.huimv.eartag2.common.dao.entity")
+@EnableJpaRepositories(basePackages = "com.huimv.eartag2.common.dao.repo")
+@ComponentScans({@ComponentScan("com.huimv.eartag2.common.service")})
+public class DataProcess2Application {
+    public static void main(String[] args) throws InterruptedException {
+        ApplicationContext applicationContext =   SpringApplication.run(DataProcess2Application.class, args);
+    }
+}

+ 104 - 0
huimv-eartag2-platform/data-process2/src/main/resources/application-eartag.yml

@@ -0,0 +1,104 @@
+server:
+  port: 8090
+
+spring:
+  application:
+    name: huimv-eartag2-input
+
+  datasource:
+    url: jdbc:mysql://192.168.1.7:3306/huimv-demo-eartag20?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
+    username: root
+    password: hm123456
+    driver-class-name: com.mysql.cj.jdbc.Driver
+  jpa:
+    show-sql: true
+    database: mysql
+    hibernate:
+      ddl-auto: update
+    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
+    open-in-view: true
+
+  #配置rabbitMq 服务器
+#  rabbitmq:
+#    host: 10.0.0.4
+#    port: 5672
+#    username: huimv
+#    password: hm123456
+#    #虚拟host 可以不设置,使用server默认host
+#    virtual-host: /
+  rabbitmq:
+    host: 192.168.1.170
+    port: 5672
+    username: admin
+    password: admin
+    #虚拟host 可以不设置,使用server默认host
+    virtual-host: /
+
+    #确认消息已发送到交换机(Exchange)
+#    publisher-confirms: true #(过时、弃用)
+    publisher-confirm-type: correlated
+    #确认消息已发送到队列(Queue)
+    publisher-returns: true
+
+  #redis
+  redis:
+    database: 0
+    host: 192.168.1.68
+    port: 6379
+    password: hm123456
+    timeout: 5000ms
+    jedis:
+      pool:
+        max-active: 20
+        max-wait: -1
+        max-idle: 10
+        min-idle: 0
+    lettuce:
+      pool:
+        max-active: 3
+        min-idle: 2
+        max-idle: 3
+        max-wait: 1
+      shutdown-timeout: 100
+
+  data:
+    redis:
+      repositories:
+        enabled: false
+
+  #是否缓存空值
+  cache:
+    redis:
+      cache-null-values: false
+
+
+
+    #server:
+#  port: 9110
+#spring:
+#  application:
+#    name: huimv-hy-autoGetData
+#
+#  datasource:
+##    url: jdbc:mysql://47.98.175.112:3306/huimv_ql_farm_haiyan?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
+#    #    url: jdbc:mysql://36.22.189.214:3306/huimv_ql_farm?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
+#        url: jdbc:mysql://192.168.1.7:3306/huimv_ql_farm?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
+#    username: root
+#    password: hm123456
+#    driver-class-name: com.mysql.cj.jdbc.Driver
+#  jpa:
+#    properties:
+#      hibernate:
+#        enable_lazy_load_no_trans: true
+#    show-sql: true
+#    database: mysql
+#    hibernate:
+#      ddl-auto: update
+#    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
+#    open-in-view: true
+management:
+  endpoints:
+    web:
+      exposure:
+        include: "*"   # * 在yaml 文件属于关键字,所以需要加引号
+

+ 104 - 0
huimv-eartag2-platform/data-process2/src/main/resources/application-eartag2.yml

@@ -0,0 +1,104 @@
+server:
+  port: 8090
+
+spring:
+  application:
+    name: huimv-eartag2-input
+
+  datasource:
+    url: jdbc:mysql://192.168.1.7:3306/huimv-demo-eartag20_2?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
+    username: root
+    password: hm123456
+    driver-class-name: com.mysql.cj.jdbc.Driver
+  jpa:
+    show-sql: true
+    database: mysql
+    hibernate:
+      ddl-auto: update
+    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
+    open-in-view: true
+
+  #配置rabbitMq 服务器
+#  rabbitmq:
+#    host: 10.0.0.4
+#    port: 5672
+#    username: huimv
+#    password: hm123456
+#    #虚拟host 可以不设置,使用server默认host
+#    virtual-host: /
+  rabbitmq:
+    host: 192.168.1.170
+    port: 5672
+    username: admin
+    password: admin
+    #虚拟host 可以不设置,使用server默认host
+    virtual-host: /
+
+    #确认消息已发送到交换机(Exchange)
+#    publisher-confirms: true #(过时、弃用)
+    publisher-confirm-type: correlated
+    #确认消息已发送到队列(Queue)
+    publisher-returns: true
+
+  #redis
+  redis:
+    database: 0
+    host: 192.168.1.68
+    port: 6379
+    password: hm123456
+    timeout: 5000ms
+    jedis:
+      pool:
+        max-active: 20
+        max-wait: -1
+        max-idle: 10
+        min-idle: 0
+    lettuce:
+      pool:
+        max-active: 3
+        min-idle: 2
+        max-idle: 3
+        max-wait: 1
+      shutdown-timeout: 100
+
+  data:
+    redis:
+      repositories:
+        enabled: false
+
+  #是否缓存空值
+  cache:
+    redis:
+      cache-null-values: false
+
+
+
+    #server:
+#  port: 9110
+#spring:
+#  application:
+#    name: huimv-hy-autoGetData
+#
+#  datasource:
+##    url: jdbc:mysql://47.98.175.112:3306/huimv_ql_farm_haiyan?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
+#    #    url: jdbc:mysql://36.22.189.214:3306/huimv_ql_farm?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
+#        url: jdbc:mysql://192.168.1.7:3306/huimv_ql_farm?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
+#    username: root
+#    password: hm123456
+#    driver-class-name: com.mysql.cj.jdbc.Driver
+#  jpa:
+#    properties:
+#      hibernate:
+#        enable_lazy_load_no_trans: true
+#    show-sql: true
+#    database: mysql
+#    hibernate:
+#      ddl-auto: update
+#    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
+#    open-in-view: true
+management:
+  endpoints:
+    web:
+      exposure:
+        include: "*"   # * 在yaml 文件属于关键字,所以需要加引号
+

+ 31 - 0
huimv-eartag2-platform/data-process2/src/main/resources/application.properties

@@ -0,0 +1,31 @@
+spring.profiles.active=eartag
+
+#开启健康监控
+management.endpoints.web.exposure.include=*
+
+#########################################################
+###             配置undertow取代tomcat                ###
+#########################################################
+# 是否打开 undertow 日志,默认为 false
+server.undertow.accesslog.enabled=false
+# 设置访问日志所在目录
+server.undertow.accesslog.dir=logs
+# 指定工作者线程的 I/0 线程数,默认为 2 或者 CPU 的个数
+server.undertow.io-threads=
+# 指定工作者线程个数,默认为 I/O 线程个数的 8 倍
+server.undertow.worker-threads=
+# 设置 HTTP POST 内容的最大长度,默认不做限制
+server.undertow.max-http-post-size=0
+
+#########################################################
+###   Actuator Monitor  --   Actuator configuration   ###
+#########################################################
+management.security.enabled=false
+
+# 数据处理流程
+data.input.flow=2
+
+# 是否写入测试数据(1:写入 0:不写入)
+data.test.input=0
+
+

+ 408 - 0
huimv-eartag2-platform/data-process2/src/test/java/com/huimv/dataprocess2/DataProcess2Test.java

@@ -0,0 +1,408 @@
+package com.huimv.dataprocess2;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.huimv.eartag2.common.dao.entity.*;
+import com.huimv.eartag2.common.dao.repo.*;
+import com.huimv.eartag2.common.service.IBaseConfigService;
+import com.huimv.eartag2.common.utils.DateUtil;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.data.domain.Example;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.io.*;
+import java.sql.Array;
+import java.sql.Date;
+import java.sql.Timestamp;
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@SpringBootTest
+@RunWith(SpringRunner.class)
+public class DataProcess2Test {
+    @Autowired
+    private EartagDataRepo2 eartagDataRepo2;
+    private static String eartagFile = "D:/6/goldpig.txt";
+    @Autowired
+    private IBaseConfigService iBaseConfigService;
+    @Autowired
+    private EartagHourActEntityRepo eartagHourActEntityRepo;
+    @Autowired
+    private EartagResetEntityRepo eartagResetEntityRepo;
+    @Autowired
+    private EartagResetCountEntityRepo eartagResetCountEntityRepo;
+    @Autowired
+    private EartagEartagRegister2EntityRepo eartagEartagRegister2EntityRepo;
+
+//    @Test
+//    public void exportData() throws IOException {
+//        System.out.println("开始导出数据...");
+//        List<EartagDataEntity2> EartagDataEntityList = eartagDataRepo2.findAll();
+//        System.out.println("EartagDataEntityList.size=" + EartagDataEntityList.size());
+//        for (EartagDataEntity2 eartagDataEntity : EartagDataEntityList) {
+//            System.out.println("" + eartagDataEntity.toString());
+//            writeTxt(JSON.toJSONString(eartagDataEntity));
+//        }
+//        System.out.println("完成导出数据.");
+//    }
+
+    // 导入耳标注册表
+    @Test
+    public void buildEartagRegisterData() throws IOException, ParseException {
+        List<EartagDataEntity2> EartagDataEntityList = eartagDataRepo2.findAllByGoldPig();
+        System.out.println("EartagDataEntityList.size="+EartagDataEntityList.size());
+        String farmCode = "330112004";
+        List<EartagEartagRegister2Entity> eartagRegisterList = eartagEartagRegister2EntityRepo.getEartagRegisterByFarmCode(farmCode);
+        System.out.println("eartagRegisterList.size="+eartagRegisterList.size());
+        List<EartagDataEntity2> newList = new ArrayList();
+        for(EartagDataEntity2 eartagDataEntity2:EartagDataEntityList) {
+//            System.out.println(a+" "+eartagDataEntity2.getEarmark()+","+eartagDataEntity2.getAddTime());
+            if (eartagDataEntity2.getEarmark().length() == 15 && (eartagDataEntity2.getEarmark().indexOf("1332022109003") != -1 || eartagDataEntity2.getEarmark().indexOf("1332022109004") != -1) && !judgeContainsStr(eartagDataEntity2.getEarmark())) {
+//                String earmark = eartagDataEntity2.getEarmark();
+                boolean isExist = false;
+                for(EartagDataEntity2 lastEartagDataEntity2:newList){
+                    if(eartagDataEntity2.getEarmark().trim().equalsIgnoreCase(lastEartagDataEntity2.getEarmark())){
+                        newList.remove(lastEartagDataEntity2);
+                        isExist = true;
+                        break;
+                    }
+                }
+                if(!isExist){
+                    newList.add(eartagDataEntity2);
+                }
+            }
+        }
+        System.out.println("newList.size="+newList.size());
+        List<EartagDataEntity2> newList2 = new ArrayList();
+        for(EartagDataEntity2 eartagDataEntity2:newList){
+            boolean isExist = false;
+            for(EartagEartagRegister2Entity eartagEartagRegister2Entity:eartagRegisterList){
+                if(eartagEartagRegister2Entity.getEarmark().trim().equalsIgnoreCase(eartagDataEntity2.getEarmark())){
+                    isExist = true;
+                    break;
+                }
+            }
+            if(!isExist){
+                newList2.add(eartagDataEntity2);
+            }
+        }
+        System.out.println("newList2.size="+newList2.size());
+        // 迁移之后未上传数据的耳标(未注册的耳标)
+        List<EartagEartagRegister2Entity> unregisterEartagList = new ArrayList();
+        for(EartagDataEntity2 uneartagDataEntity2:newList2){
+            System.out.println(""+uneartagDataEntity2.toString());
+            EartagEartagRegister2Entity newEartagEartagRegister2Entity = new EartagEartagRegister2Entity();
+            unregisterEartagList.add(newEartagEartagRegister2Entity);
+//            System.out.println("newEartagEartagRegister2Entity.getEarmark="+newEartagEartagRegister2Entity.getEarmark());
+//            if(newEartagEartagRegister2Entity.getEarmark() == null){
+//                System.out.println("==null");
+//            }else{
+//                System.out.println("!=null");
+//            }
+            for(EartagDataEntity2 eartagDataEntity2:EartagDataEntityList) {
+                if(uneartagDataEntity2.getEarmark().trim().equalsIgnoreCase(eartagDataEntity2.getEarmark())){
+                    if(newEartagEartagRegister2Entity.getEarmark() == null){
+                        newEartagEartagRegister2Entity.setEarmark(uneartagDataEntity2.getEarmark());
+                        newEartagEartagRegister2Entity.setFirstTime(eartagDataEntity2.getAddTime());
+                        newEartagEartagRegister2Entity.setFirstDevice(eartagDataEntity2.getDevice());
+                        newEartagEartagRegister2Entity.setRegisterTime(eartagDataEntity2.getAddTime());
+                        newEartagEartagRegister2Entity.setFarmId(farmCode);
+                        newEartagEartagRegister2Entity.setActiveStatus(1);
+                        newEartagEartagRegister2Entity.setActiveTime(eartagDataEntity2.getAddTime());
+                        newEartagEartagRegister2Entity.setLiveStatus(1);
+                        newEartagEartagRegister2Entity.setCreateDate(eartagDataEntity2.getCreateDate());
+                        newEartagEartagRegister2Entity.setBat(eartagDataEntity2.getBat());
+                        newEartagEartagRegister2Entity.setEarTemp1(eartagDataEntity2.getEarTemp1());
+                        newEartagEartagRegister2Entity.setEnvTemp1(eartagDataEntity2.getEnvTemp1());
+                        newEartagEartagRegister2Entity.setAct(new Long(eartagDataEntity2.getAct()));
+                        newEartagEartagRegister2Entity.setSignal1(eartagDataEntity2.getSignal1());
+                        newEartagEartagRegister2Entity.setOther(eartagDataEntity2.getOther());
+                        newEartagEartagRegister2Entity.setAskTime(eartagDataEntity2.getAskTime());
+                        newEartagEartagRegister2Entity.setPigpenId(51);
+                        newEartagEartagRegister2Entity.setPigpenName("测试一栋");
+                        newEartagEartagRegister2Entity.setUnitId(52);
+                        newEartagEartagRegister2Entity.setUnitName("测试一单元");
+                        newEartagEartagRegister2Entity.setStageCode("4");
+                        newEartagEartagRegister2Entity.setStageName("育成育肥");
+                    }else{
+                        newEartagEartagRegister2Entity.setLastTime(eartagDataEntity2.getAddTime());
+                        newEartagEartagRegister2Entity.setBelongDevice(eartagDataEntity2.getDevice());
+                        newEartagEartagRegister2Entity.setLastDevice(eartagDataEntity2.getDevice());
+                        newEartagEartagRegister2Entity.setActiveStatus(1);
+                        newEartagEartagRegister2Entity.setActiveTime(eartagDataEntity2.getAddTime());
+                        newEartagEartagRegister2Entity.setLiveStatus(1);
+                        newEartagEartagRegister2Entity.setBat(eartagDataEntity2.getBat());
+                        newEartagEartagRegister2Entity.setEarTemp1(eartagDataEntity2.getEarTemp1());
+                        newEartagEartagRegister2Entity.setEnvTemp1(eartagDataEntity2.getEnvTemp1());
+                        newEartagEartagRegister2Entity.setAct(new Long(eartagDataEntity2.getAct()));
+                        newEartagEartagRegister2Entity.setSignal1(eartagDataEntity2.getSignal1());
+                        newEartagEartagRegister2Entity.setOther(eartagDataEntity2.getOther());
+                        newEartagEartagRegister2Entity.setAskTime(eartagDataEntity2.getAskTime());
+                    }
+                }
+            }
+        }
+        int b=0;
+        for(EartagEartagRegister2Entity eartagEartagRegister2Entity:unregisterEartagList){
+            System.out.println((++b)+","+eartagEartagRegister2Entity.toString());
+            eartagEartagRegister2EntityRepo.saveAndFlush(eartagEartagRegister2Entity);
+        }
+    }
+
+    @Test
+    public void testList(){
+
+//        List<String> newList = new ArrayList();
+//        newList.add("1");
+//        newList.add("2");
+//        newList.add("3");
+//        newList.add("4");
+//
+//        for(int a=0;a<newList.size();a++){
+//            if(newList.get(a).trim().equalsIgnoreCase("3")){
+//                newList.remove(a);
+//                newList.add("5");
+//            }
+//        }
+
+//            System.out.println("newList.toString()="+newList.toString());
+
+        System.out.println("133202210900369a="+judgeContainsStr("133202210900369a"));
+    }
+
+    // 生成小时运动量数据
+    @Test
+    public void buildHourActData() throws IOException, ParseException {
+        DateUtil du = new DateUtil();
+//        int nowHour = du.getNowHour();
+        String farmId = "330112004";
+        // 小时
+        int eartagOfflineTime = 24;
+//        Optional<SysBaseConfigEntity> optionalConfig = sysBaseConfigEntityRepo.getConfigValue("dropDataEartagOffLineTime");
+//        if (optionalConfig.isPresent()) {
+//            eartagOfflineTime = Integer.parseInt(optionalConfig.get().getConfigValue());
+//            log.info("耳标离线过程丢弃数据时长=" + eartagOfflineTime);
+//        } else {
+//            log.error("耳标离线过程丢弃数据时长属性未配置.");
+//        }
+        Map configMap = iBaseConfigService.getConfigValue("dropDataEartagOffLineTime",farmId,"0");
+        System.out.println("configMap >>>>>>>>>>>>>>>>>>>>> "+configMap.toString());
+        if(configMap == null){
+            System.out.println("耳标离线过程丢弃数据时长属性未配置.采用默认配置参数 eartagOfflineTime="+eartagOfflineTime);
+        }else{
+            eartagOfflineTime = Integer.parseInt(configMap.get("configValue")+"");
+            System.out.println("eartagOfflineTime >>>>>>>>>>>> "+eartagOfflineTime);
+        }
+
+        List<EartagDataEntity2> EartagDataEntityList = eartagDataRepo2.findAllByGoldPig();
+        System.out.println("EartagDataEntityList.size="+EartagDataEntityList.size());
+        int a=0;
+//        String todayDateText = new DateUtil().getTodayDateText();
+//        java.sql.Date todayDate = new java.sql.Date(new java.util.Date().getTime());
+//        Timestamp nowTimestamp = new Timestamp(new java.util.Date().getTime());
+        List<EartagDataEntity2> newList = new ArrayList();
+        for(EartagDataEntity2 eartagDataEntity2:EartagDataEntityList){
+//            System.out.println(a+" "+eartagDataEntity2.getEarmark()+","+eartagDataEntity2.getAddTime());
+            if(eartagDataEntity2.getEarmark().length() == 15 && (eartagDataEntity2.getEarmark().indexOf("1332022109003") != -1 || eartagDataEntity2.getEarmark().indexOf("1332022109004") != -1) && !judgeContainsStr(eartagDataEntity2.getEarmark())){
+                String earmark = eartagDataEntity2.getEarmark();
+                Integer act = eartagDataEntity2.getAct();
+                System.out.println("earmark=" + earmark);
+                System.out.println("本次运动量=" + act);
+                System.out.println("farmId=" + farmId);
+                Timestamp nowTimestamp = eartagDataEntity2.getAddTime();
+                Date date = eartagDataEntity2.getCreateDate();
+                int nowHour = du.setCalendarNewTime(eartagDataEntity2.getAddTime());
+                System.out.println("nowHour=" + nowHour);
+
+                //生成运动量
+                for(EartagDataEntity2 lastEartagDataEntity2:newList){
+                    if(eartagDataEntity2.getEarmark().trim().equalsIgnoreCase(lastEartagDataEntity2.getEarmark())){
+                        Integer lastAct = lastEartagDataEntity2.getAct();
+                        System.out.println("上次运动量=" + lastAct);
+                        Timestamp lastAddTime = lastEartagDataEntity2.getAddTime();
+                        long timeDiff = nowTimestamp.getTime() - lastAddTime.getTime();
+                        if (timeDiff / (1000 * 60 * 60) < eartagOfflineTime) {
+                            long act1 = 0;
+                            boolean resetStatus = false;
+                            if (act < lastAct) {
+                                act1 = act;
+                                resetStatus = true;
+                            } else {
+                                act1 = act - lastAct;
+                            }
+                            System.out.println("本次运动量增量=" + act1);
+                            //{保存耳标小时运动量}
+                            saveEartagHourAct(farmId, earmark, act1, nowHour, date);
+                            //{保存耳标复位记录}
+                            saveEartagReset(resetStatus, farmId, earmark, nowTimestamp, date, null, lastAct, act);
+                        }
+
+                        //删除上一次数据
+                        newList.remove(lastEartagDataEntity2);
+                        break;
+                    }
+                }
+                newList.add(eartagDataEntity2);
+
+//            if(a==100){
+//                break;
+//            }
+                a++;
+            }
+        }
+
+        System.out.println("newList.size="+newList.size());
+        for(EartagDataEntity2 newEartagDataEntity2:newList){
+            System.out.println(""+newEartagDataEntity2.toString());
+        }
+    }
+
+    //{保存耳标复位记录}
+    private void saveEartagReset(boolean resetStatus, String farmId, String earmark, Timestamp nowTimestamp, java.sql.Date todayDate, Integer lastId, int lastAct, int act) {
+        if (resetStatus) {
+            // 保存复位记录
+            EartagResetEntity eartagResetEntity = new EartagResetEntity();
+            eartagResetEntity.setEarmark(earmark);
+            eartagResetEntity.setAddDate(todayDate);
+            eartagResetEntity.setResetTime(nowTimestamp);
+            eartagResetEntity.setFarmCode(farmId);
+            eartagResetEntity.setLastId(lastId);
+            eartagResetEntity.setLastAct(new Long(lastAct));
+            eartagResetEntity.setAct(new Long(act));
+            System.out.println("saveEartagReset:1 "+eartagResetEntity.toString());
+            eartagResetEntityRepo.save(eartagResetEntity);
+
+            // 复位统计次数
+            EartagResetCountEntity eartagResetCountEntity = new EartagResetCountEntity();
+            eartagResetCountEntity.setEarmark(earmark);
+            eartagResetCountEntity.setFarmCode(farmId);
+            eartagResetCountEntity.setAddDate(todayDate);
+            Example<EartagResetCountEntity> example = Example.of(eartagResetCountEntity);
+            Optional<EartagResetCountEntity> optionEartagResetCountEntity = eartagResetCountEntityRepo.findOne(example);
+            if (!optionEartagResetCountEntity.isPresent()) {
+                eartagResetCountEntity.setTimes(1);
+                System.out.println("saveEartagReset:2 "+eartagResetCountEntity.toString());
+                eartagResetCountEntityRepo.save(eartagResetCountEntity);
+            } else {
+                EartagResetCountEntity existEartagResetCountEntity = optionEartagResetCountEntity.get();
+                existEartagResetCountEntity.setTimes(existEartagResetCountEntity.getTimes() + 1);
+                System.out.println("saveEartagReset:3 "+existEartagResetCountEntity.toString());
+                eartagResetCountEntityRepo.save(existEartagResetCountEntity);
+            }
+        }
+    }
+
+    // {保存耳标小时运动量}
+    private void saveEartagHourAct(String farmId, String earmark, long act1, int nowHour, java.sql.Date todayDate) {
+        Optional<EartagHourActEntity> optionalHourAct = eartagHourActEntityRepo.findByFarmIdAndEarmarkAndHourAndDate(farmId, earmark, nowHour, todayDate);
+        if (!optionalHourAct.isPresent()) {
+            EartagHourActEntity newEartagHourActEntity = new EartagHourActEntity();
+            newEartagHourActEntity.setFarmCode(farmId);
+            newEartagHourActEntity.setEarmark(earmark);
+            newEartagHourActEntity.setAddDate(todayDate);
+            newEartagHourActEntity.setHour(nowHour);
+            newEartagHourActEntity.setAct(act1);
+            System.out.println("saveEartagHourAct:1 "+newEartagHourActEntity.toString());
+            eartagHourActEntityRepo.save(newEartagHourActEntity);
+        } else {
+            EartagHourActEntity eartagHourActEntity = optionalHourAct.get();
+            eartagHourActEntity.setAct(eartagHourActEntity.getAct() + act1);
+            System.out.println("saveEartagHourAct:2 "+eartagHourActEntity.toString());
+            eartagHourActEntityRepo.save(eartagHourActEntity);
+        }
+    }
+
+    public boolean judgeContainsStr(String str) {
+        String regex=".*[a-zA-Z]+.*";
+        Matcher m= Pattern.compile(regex).matcher(str);
+        return m.matches();
+    }
+
+    @Test
+    public void importData() throws IOException, ParseException {
+        System.out.println("开始导入数据>>");
+        JSONArray eartagJa = readLineTxt();
+        System.out.println("eartagJa.size=" + eartagJa.size());
+        for(int a=0;a<eartagJa.size();a++){
+            JSONObject dataJo =eartagJa.getJSONObject(a);
+//            System.out.println("time="+dataJo.getString("time"));
+            DateUtil du = new DateUtil();
+            String datetime = du.formatLongToDate(dataJo.getLong("time"));
+//            System.out.println("datetime="+datetime);
+            String date = du.formatDateText(datetime);
+//            System.out.println("date="+date);
+//            du.parseDate(date);
+//            System.out.println("time2 = "+new Date(dataJo.getLong("time")));
+//            if(a == 5){
+//                break;
+//            }
+            System.out.println(""+dataJo.toString());
+            EartagDataEntity2 eartagDataEntity2 = new EartagDataEntity2();
+            eartagDataEntity2.setAct(dataJo.getInteger("oldExercise"));
+            eartagDataEntity2.setAct1(dataJo.getInteger("exercise"));
+            eartagDataEntity2.setAddTime(new Timestamp(du.parseDateTime(datetime).getTime()));
+            eartagDataEntity2.setCreateDate(new Date(dataJo.getLong("time")));
+            eartagDataEntity2.setAskTime(datetime);
+            eartagDataEntity2.setAskDate(new Date(dataJo.getLong("time")));
+            eartagDataEntity2.setBat(dataJo.getInteger("bat"));
+            eartagDataEntity2.setCmdHeader(dataJo.getString("head"));
+
+            eartagDataEntity2.setDevice(dataJo.getString("deviceCode"));
+            eartagDataEntity2.setEarmark(dataJo.getString("eartagNo"));
+            eartagDataEntity2.setEarTemp(1);
+            eartagDataEntity2.setEarTemp1(dataJo.getFloat("earTemp"));
+//            eartagDataEntity2.setEnvTemp();
+            eartagDataEntity2.setEnvTemp1(dataJo.getFloat("envTemp"));
+            eartagDataEntity2.setFarmId("330112004");
+            eartagDataEntity2.setOther(dataJo.getString("prepareField"));
+            eartagDataEntity2.setSignal1(dataJo.getInteger("rssi"));
+//            eartagDataRepo2.saveAndFlush(eartagDataEntity2);
+        }
+        System.out.println("完成导出数据<<");
+    }
+
+    public JSONArray readLineTxt() throws IOException {
+        String s = "";
+        InputStreamReader in = new InputStreamReader(new FileInputStream(new File(eartagFile)), "UTF-8");
+        BufferedReader br = new BufferedReader(in);
+        StringBuffer content = new StringBuffer();
+        JSONArray eartaJa = new JSONArray();
+        while ((s = br.readLine()) != null) {
+//            content = content.append(s);
+//            System.out.println("content=" + s);
+            JSONObject dataJo = JSON.parseObject(s);
+            eartaJa.add(dataJo);
+        }
+        return eartaJa;
+    }
+
+    public void writeTxt(String conent) throws IOException {
+        File f = new File(eartagFile);
+        if (f.exists()) {
+        } else {
+            f.createNewFile();// 不存在则创建
+        }
+        BufferedWriter output = new BufferedWriter(new FileWriter(f, true));//true,则追加写入text文本
+        output.write(conent);
+        output.write("\r\n");//换行
+        output.flush();
+        output.close();
+    }
+}

+ 0 - 1
huimv-eartag2-platform/huimv-eartag2-admin/src/main/java/com/huimv/eartag2/admin/controller/LoginController.java

@@ -98,7 +98,6 @@ public class LoginController {
             SysAccountMultilevel accountEntity = (SysAccountMultilevel) result.getData();
             Integer id = accountEntity.getId();
 
-
             AccessToken accessToken = new AccessToken();
             accessToken.setCreated(new Date());
             accessToken.setAccountName(accountName);

+ 1 - 1
huimv-eartag2-platform/huimv-eartag2-admin/src/main/resources/application-dev.yml

@@ -2,7 +2,7 @@ server:
   port: 8098
 spring:
   application:
-    name: huimv-eartag2-process
+    name: huimv-eartag2-admin
 
   datasource:
     url: jdbc:mysql://192.168.1.7:3306/huimv-demo-eartag20?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai

+ 5 - 0
huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/dao/repo/EartagDataRepo2.java

@@ -6,6 +6,8 @@ import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Query;
 
+import java.util.List;
+
 /**
  * @Description: TODO
  * @Author: 静静
@@ -17,4 +19,7 @@ public interface EartagDataRepo2 extends JpaRepository<EartagDataEntity2, Intege
     //
     @Query(nativeQuery = true,value = "SELECT * FROM eartag_data2 WHERE earmark=?1 AND add_time BETWEEN add_time(now(),interval - 5 minute)")
     EartagDataEntity2 getEartagFlowByEarmark(String earmark);
+
+    @Query(nativeQuery = true,value = "SELECT * FROM eartag_data2 WHERE ear_temp=1")
+    List<EartagDataEntity2> findAllByGoldPig();
 }

+ 4 - 0
huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/dao/repo/EartagEartagRegister2EntityRepo.java

@@ -5,6 +5,7 @@ import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Query;
 
+import java.util.List;
 import java.util.Optional;
 
 public interface EartagEartagRegister2EntityRepo extends JpaRepository<EartagEartagRegister2Entity, Integer>, JpaSpecificationExecutor<EartagEartagRegister2Entity> {
@@ -14,4 +15,7 @@ public interface EartagEartagRegister2EntityRepo extends JpaRepository<EartagEar
 
     @Query(nativeQuery=true, value="SELECT * FROM eartag_eartag_register2 WHERE earmark=?1")
     EartagEartagRegister2Entity getOneByEarmark2(String earmark);
+
+    @Query(nativeQuery=true, value="SELECT * FROM eartag_eartag_register2 WHERE farm_id='330112004'")
+    List<EartagEartagRegister2Entity> getEartagRegisterByFarmCode(String farmCode);
 }

+ 2 - 0
huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/dao/repo/SysBaseConfigEntityRepo.java

@@ -20,5 +20,7 @@ public interface SysBaseConfigEntityRepo extends JpaRepository<SysBaseConfigEnti
     List<Object[]> getConfigValue(String eartagMaxTem, String farmCode,String defaultFarmCode);
 //    Optional<List<SysBaseConfigEntity>> getConfigValue(String eartagMaxTem, String farmCode,String defaultFarmCode);
 
+    @Query(nativeQuery = true,value = "SELECT b.*,a.config_value farm_code FROM sys_base_config a LEFT JOIN sys_base_config b ON a.row_id=b.row_id WHERE a.config_value=?2 AND b.config_key=?1")
+    List<Object[]> getConfigValue2(String eartagMaxTem, String farmCode);
 
 }

+ 2 - 0
huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/service/impl/BaseConfigServiceImpl.java

@@ -23,6 +23,8 @@ public class BaseConfigServiceImpl implements IBaseConfigService {
     @Override
     public Map getConfigValue(String keyName, String farmId, String defaultFarmId) {
         List<Object[]> objectList = sysBaseConfigEntityRepo.getConfigValue(keyName, farmId, defaultFarmId);
+//        List<Object[]> objectList = sysBaseConfigEntityRepo.getConfigValue2(keyName, farmId);
+        System.out.println("============== objectList.size="+objectList.size());
         if (objectList.size() == 0) {
             return null;
         } else {

+ 14 - 0
huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/utils/Const.java

@@ -0,0 +1,14 @@
+package com.huimv.eartag2.common.utils;
+
+/**
+ * @Project : huimv-eartag2-platform
+ * @Package : ${}
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2022/10/15
+ **/
+public class Const {
+    public final static Integer ERR_EMPTY_CODE = 10051;
+    public final static String ERR_EMPTY_INFO = "暂无数据.";
+}

+ 13 - 0
huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/utils/DateUtil.java

@@ -29,6 +29,19 @@ public class DateUtil {
         return cal.get(Calendar.HOUR_OF_DAY);
     }
 
+    public int setCalendarNewTime(String newTime) throws ParseException {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(sdf.parse(newTime));
+        return cal.get(Calendar.HOUR_OF_DAY);
+    }
+
+    public int setCalendarNewTime(Timestamp newTime) throws ParseException {
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(newTime);
+        return cal.get(Calendar.HOUR_OF_DAY);
+    }
+
     //格式化日期(Long --> Date)
     public String formatLongToDate(Long longDate){
         SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

+ 0 - 5
huimv-eartag2-platform/huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/listener/EartagListener.java

@@ -69,12 +69,7 @@ public class EartagListener {
         String type = askMap.get("type").toString();
         JSONObject dataJo = (JSONObject) askMap.get("data");
         System.out.println("######## eartagJo="+dataJo);
-        //
-        String earmark = dataJo.getString("earmark");
-
-        //正式代码
         if (type.trim().equalsIgnoreCase("eartag")) {
-            System.out.println("askText>>" + askText);
             //{处理耳标数据}
             eartagService.handleEartag(dataJo);
         }

+ 12 - 4
huimv-eartag2-platform/huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/service/impl/EartagServiceImpl.java

@@ -344,9 +344,11 @@ public class EartagServiceImpl implements IEartagService {
     //处理异常耳标温度警报和统计;
     private void handleEartempAlarmAndCount(JSONObject dataJo, java.sql.Date todayDate, Timestamp nowTimestamp, String farmCode) {
         String earmark = dataJo.getString("earmark");
+        System.out.println("farmCode================"+farmCode);
         // {获取异常耳标阈值最大值或最小值}
 //        Map maxAndMinMap = getMaxAndMinEartemp(farmCode);
         Map maxAndMinMap = getMaxAndMin2(farmCode, "eartagMaxTem", "eartagMinTem");
+        System.out.println("maxAndMinMap>>>>>>>>>>>>>>>>>>>>>>>>>>>"+maxAndMinMap.toString());
         BigDecimal configMaxTempBd = new BigDecimal(maxAndMinMap.get("eartagMaxTem").toString());
         BigDecimal configMinTempBd = new BigDecimal(maxAndMinMap.get("eartagMinTem").toString());
         BigDecimal earTemp1Bd = new BigDecimal(dataJo.getString("earTemp1"));
@@ -495,8 +497,10 @@ public class EartagServiceImpl implements IEartagService {
 //            configMap.put(maxKeyName, maxTemp);
 //        } else {
         // 从属性配置表取值
+        System.out.println("aa farmCode="+farmCode);
+        System.out.println("bb maxKeyName="+maxKeyName);
         String confMaxTem = getConfigValue(farmCode, maxKeyName);
-//        System.out.println("配置属性 confMaxTem=" + confMaxTem);
+        System.out.println("配置属性 confMaxTem=" + confMaxTem);
         if (confMaxTem == null) {
 //            confMaxTem = defaultMaxTemp;
 //            System.out.println("默认属性 defaultMaxTemp=" + defaultMaxTemp);
@@ -536,8 +540,10 @@ public class EartagServiceImpl implements IEartagService {
 //        } else {
 //            return null;
 //        }
+        System.out.println(">> ================ configKey="+configKey);
+        System.out.println(">> ================ farmCode="+farmCode);
         Map configMap = iBaseConfigService.getConfigValue(configKey,farmCode,"0");
-//        System.out.println("configMap >>>>>>>>>>>>>>>>>>>>> "+configMap.toString());
+        System.out.println("configMap >>>>>>>>>>>>>>>>>>>>> "+configMap);
         if(configMap == null){
             log.error("耳标离线过程丢弃数据时长属性未配置.采用默认配置参数 configKey="+configKey);
             return null;
@@ -560,13 +566,14 @@ public class EartagServiceImpl implements IEartagService {
 //            log.error("耳标离线过程丢弃数据时长属性未配置.");
 //        }
         Map configMap = iBaseConfigService.getConfigValue("dropDataEartagOffLineTime",farmId,"0");
-        System.out.println("configMap >>>>>>>>>>>>>>>>>>>>> "+configMap.toString());
+        System.out.println("configMap 11111 >>>>>>>>>>>>>>>>>>>>> "+configMap);
         if(configMap == null){
             log.error("耳标离线过程丢弃数据时长属性未配置.采用默认配置参数 eartagOfflineTime="+eartagOfflineTime);
         }else{
             eartagOfflineTime = Integer.parseInt(configMap.get("configValue")+"");
             System.out.println("eartagOfflineTime >>>>>>>>>>>> "+eartagOfflineTime);
         }
+        System.out.println("2222222222222222222222222");
         String earmark = eartagJo.getString("earmark");
         Long act = Long.parseLong(eartagJo.getString("act"));
         System.out.println("本次运动量=" + act);
@@ -738,13 +745,14 @@ public class EartagServiceImpl implements IEartagService {
 //                log.error("耳标数据过滤时间差属性未配置.");
 //            }
             Map configMap = iBaseConfigService.getConfigValue("timeDifference",farmId,"0");
-            System.out.println("configMap >>>>>>>>>>>>>>>>>>>>> "+configMap.toString());
+            System.out.println("configMap 33 >>>>>>>>>>>>>>>>>>>>> "+configMap);
             if(configMap == null){
                 log.error("耳标离线过程丢弃数据时长属性未配置.采用默认配置参数 setTimeDiff="+setTimeDiff);
             }else{
                 setTimeDiff = Integer.parseInt(configMap.get("configValue")+"");
                 System.out.println("eartagOfflineTime >>>>>>>>>>>> "+setTimeDiff);
             }
+            System.out.println("333333333333333333333333333333333333333");
             countMap.put("fisrtStatus", false);
             if (timeDifference / 1000 < setTimeDiff) {
                 // 同一耳标数据距上一次上传数据时间<5秒,视为被其他基站上传。

+ 34 - 9
huimv-eartag2-platform/huimv-eartag2-eartag/src/main/resources/application-dev.yml

@@ -17,16 +17,8 @@ spring:
     database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
     open-in-view: true
 
-  #配置rabbitMq 服务器
-#  rabbitmq:
-#    host: 10.0.0.4
-#    port: 5672
-#    username: huimv
-#    password: hm123456
-#    #虚拟host 可以不设置,使用server默认host
-#    virtual-host: /
   rabbitmq:
-    host: 192.168.1.170
+    host: 192.168.1.82
     port: 5672
     username: admin
     password: admin
@@ -50,6 +42,39 @@ spring:
         max-idle: 10
         min-idle: 0
 
+  #配置rabbitMq 服务器
+#  rabbitmq:
+#    host: 10.0.0.4
+#    port: 5672
+#    username: huimv
+#    password: hm123456
+#    #虚拟host 可以不设置,使用server默认host
+#    virtual-host: /
+#  rabbitmq:
+#    host: 192.168.1.170
+#    port: 5672
+#    username: admin
+#    password: admin
+#    #虚拟host 可以不设置,使用server默认host
+#    virtual-host: /
+#    listener:
+#      simple:
+#        acknowledge-mode: none  #消费端不需要确认
+#
+#  #redis
+#  redis:
+#    database: 0
+#    host: 192.168.1.68
+#    port: 6379
+#    password: hm123456
+#    timeout: 5000ms
+#    jedis:
+#      pool:
+#        max-active: 20
+#        max-wait: -1
+#        max-idle: 10
+#        min-idle: 0
+
   #redis
 #  redis:
 #    database: 0

+ 1 - 1
huimv-eartag2-platform/huimv-eartag2-eartag/src/main/resources/application-test.yml

@@ -5,7 +5,7 @@ spring:
     name: huimv-eartag2-eartag
 
   datasource:
-    url: jdbc:mysql://192.168.1.7:3306/huimv-demo-eartag20?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
+    url: jdbc:mysql://122.112.224.199:3306/huimv_cattle?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
     username: root
     password: hm123456
     driver-class-name: com.mysql.cj.jdbc.Driver

+ 3 - 1
huimv-eartag2-platform/huimv-eartag2-eartag/src/main/resources/application.properties

@@ -1,5 +1,7 @@
-spring.profiles.active=test
+#spring.profiles.active=test
 #spring.profiles.active=local
+spring.profiles.active=dev
+
 device.register.prefix=device_register_
 redis.expire.eartag_online_set=25