Explorar o código

新建老版本基站项目

zhuoning %!s(int64=2) %!d(string=hai) anos
pai
achega
a65d95b2ca
Modificáronse 26 ficheiros con 1315 adicións e 0 borrados
  1. 158 0
      baseStation-register/baseStation-register.iml
  2. 135 0
      baseStation-register/pom.xml
  3. 22 0
      baseStation-register/src/main/java/com/huimv/register/HuimvRegisterApplication.java
  4. 57 0
      baseStation-register/src/main/java/com/huimv/register/controller/BaseStationController.java
  5. 131 0
      baseStation-register/src/main/java/com/huimv/register/dao/entity/CollectorRegisterEntity.java
  6. 9 0
      baseStation-register/src/main/java/com/huimv/register/dao/repo/CollectorRegisterRepo.java
  7. 58 0
      baseStation-register/src/main/java/com/huimv/register/result/R.java
  8. 77 0
      baseStation-register/src/main/java/com/huimv/register/server/BaseStationServer.java
  9. 487 0
      baseStation-register/src/main/java/com/huimv/register/server/BaseStationServerHandler.java
  10. 82 0
      baseStation-register/src/main/java/com/huimv/register/service/BaseStationServiceImpl.java
  11. 9 0
      baseStation-register/src/main/java/com/huimv/register/service/IBaseStationService.java
  12. 41 0
      baseStation-register/src/main/resources/application-dev.yml
  13. 4 0
      baseStation-register/src/main/resources/application.properties
  14. BIN=BIN
      baseStation-register/target/classes/META-INF/baseStation-register.kotlin_module
  15. 41 0
      baseStation-register/target/classes/application-dev.yml
  16. 4 0
      baseStation-register/target/classes/application.properties
  17. BIN=BIN
      baseStation-register/target/classes/com/huimv/register/HuimvRegisterApplication.class
  18. BIN=BIN
      baseStation-register/target/classes/com/huimv/register/controller/BaseStationController.class
  19. BIN=BIN
      baseStation-register/target/classes/com/huimv/register/dao/entity/CollectorRegisterEntity.class
  20. BIN=BIN
      baseStation-register/target/classes/com/huimv/register/dao/repo/CollectorRegisterRepo.class
  21. BIN=BIN
      baseStation-register/target/classes/com/huimv/register/result/R.class
  22. BIN=BIN
      baseStation-register/target/classes/com/huimv/register/server/BaseStationServer$1.class
  23. BIN=BIN
      baseStation-register/target/classes/com/huimv/register/server/BaseStationServer.class
  24. BIN=BIN
      baseStation-register/target/classes/com/huimv/register/server/BaseStationServerHandler.class
  25. BIN=BIN
      baseStation-register/target/classes/com/huimv/register/service/BaseStationServiceImpl.class
  26. BIN=BIN
      baseStation-register/target/classes/com/huimv/register/service/IBaseStationService.class

+ 158 - 0
baseStation-register/baseStation-register.iml

@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
+  <component name="FacetManager">
+    <facet type="Spring" name="Spring">
+      <configuration />
+    </facet>
+    <facet type="web" name="Web">
+      <configuration>
+        <webroots />
+        <sourceRoots>
+          <root url="file://$MODULE_DIR$/src/main/java" />
+          <root url="file://$MODULE_DIR$/src/main/resources" />
+        </sourceRoots>
+      </configuration>
+    </facet>
+    <facet type="jpa" name="JPA">
+      <configuration>
+        <setting name="validation-enabled" value="true" />
+        <setting name="provider-name" value="Hibernate" />
+        <datasource-mapping>
+          <factory-entry name="Entities" value="21abca63-9ca9-4eb2-8fb8-9536339ca907" />
+        </datasource-mapping>
+        <naming-strategy-map />
+      </configuration>
+    </facet>
+  </component>
+  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
+    <output url="file://$MODULE_DIR$/target/classes" />
+    <output-test url="file://$MODULE_DIR$/target/test-classes" />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
+      <excludeFolder url="file://$MODULE_DIR$/target" />
+    </content>
+    <orderEntry type="jdk" jdkName="1.8" jdkType="JavaSDK" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.7.0" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.7.0" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.7.0" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.7.0" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.7.0" level="project" />
+    <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.11" level="project" />
+    <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.11" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.17.2" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.17.2" level="project" />
+    <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.36" level="project" />
+    <orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:1.3.5" level="project" />
+    <orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.30" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.7.0" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.13.3" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.13.3" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.13.3" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.13.3" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.13.3" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.13.3" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.7.0" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:9.0.63" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:9.0.63" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-web:5.3.20" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-beans:5.3.20" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.3.20" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-aop:5.3.20" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-context:5.3.20" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.3.20" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:2.7.0" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:2.7.0" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:2.7.0" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.jayway.jsonpath:json-path:2.7.0" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: net.minidev:json-smart:2.4.8" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: net.minidev:accessors-smart:2.4.8" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.ow2.asm:asm:9.1" level="project" />
+    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.36" level="project" />
+    <orderEntry type="library" name="Maven: jakarta.xml.bind:jakarta.xml.bind-api:2.3.3" level="project" />
+    <orderEntry type="library" name="Maven: jakarta.activation:jakarta.activation-api:1.2.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:3.22.0" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest:2.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter:5.8.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-api:5.8.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.opentest4j:opentest4j:1.2.0" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-commons:1.8.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.apiguardian:apiguardian-api:1.1.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-params:5.8.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-engine:5.8.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-engine:1.8.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:4.5.1" level="project" />
+    <orderEntry type="library" name="Maven: net.bytebuddy:byte-buddy:1.12.10" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy-agent:1.12.10" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.objenesis:objenesis:3.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-junit-jupiter:4.5.1" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.skyscreamer:jsonassert:1.5.0" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-core:5.3.20" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.3.20" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:5.3.20" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.xmlunit:xmlunit-core:2.9.0" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-undertow:2.7.0" level="project" />
+    <orderEntry type="library" name="Maven: io.undertow:undertow-core:2.2.17.Final" level="project" />
+    <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.4.3.Final" level="project" />
+    <orderEntry type="library" name="Maven: org.jboss.xnio:xnio-api:3.8.6.Final" level="project" />
+    <orderEntry type="library" name="Maven: org.wildfly.common:wildfly-common:1.5.4.Final" level="project" />
+    <orderEntry type="library" name="Maven: org.wildfly.client:wildfly-client-config:1.0.1.Final" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: org.jboss.xnio:xnio-nio:3.8.6.Final" level="project" />
+    <orderEntry type="library" name="Maven: org.jboss.threads:jboss-threads:3.1.0.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.undertow:undertow-servlet:2.2.17.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.undertow:undertow-websockets-jsr:2.2.17.Final" level="project" />
+    <orderEntry type="library" name="Maven: jakarta.servlet:jakarta.servlet-api:4.0.4" level="project" />
+    <orderEntry type="library" name="Maven: jakarta.websocket:jakarta.websocket-api:1.1.2" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:9.0.63" level="project" />
+    <orderEntry type="library" name="Maven: com.huimv:huimv-eartag2-common:0.0.1-SNAPSHOT" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-all:4.1.45.Final" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: org.projectlombok:lombok:1.16.18" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.28" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-actuator:2.7.0" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-actuator-autoconfigure:2.7.0" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-actuator:2.7.0" level="project" />
+    <orderEntry type="library" name="Maven: io.micrometer:micrometer-core:1.9.0" level="project" />
+    <orderEntry type="library" name="Maven: org.hdrhistogram:HdrHistogram:2.1.12" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: org.latencyutils:LatencyUtils:2.0.3" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-jpa:2.7.0" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-aop:2.7.0" level="project" />
+    <orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.9.7" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.7.0" level="project" />
+    <orderEntry type="library" name="Maven: com.zaxxer:HikariCP:4.0.3" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.3.20" level="project" />
+    <orderEntry type="library" name="Maven: jakarta.transaction:jakarta.transaction-api:1.3.3" level="project" />
+    <orderEntry type="library" name="Maven: jakarta.persistence:jakarta.persistence-api:2.2.3" level="project" />
+    <orderEntry type="library" name="Maven: org.hibernate:hibernate-core:5.6.9.Final" level="project" />
+    <orderEntry type="library" name="Maven: antlr:antlr:2.7.7" level="project" />
+    <orderEntry type="library" name="Maven: org.jboss:jandex:2.4.2.Final" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml:classmate:1.5.1" level="project" />
+    <orderEntry type="library" name="Maven: org.hibernate.common:hibernate-commons-annotations:5.1.2.Final" level="project" />
+    <orderEntry type="library" name="Maven: org.glassfish.jaxb:jaxb-runtime:2.3.6" level="project" />
+    <orderEntry type="library" name="Maven: org.glassfish.jaxb:txw2:2.3.6" level="project" />
+    <orderEntry type="library" name="Maven: com.sun.istack:istack-commons-runtime:3.0.12" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: com.sun.activation:jakarta.activation:1.2.2" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-jpa:2.7.0" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:2.7.0" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-orm:5.3.20" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-tx:5.3.20" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-aspects:5.3.20" level="project" />
+    <orderEntry type="library" name="Maven: mysql:mysql-connector-java:8.0.29" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-redis:2.7.0" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-redis:2.7.0" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-keyvalue:2.7.0" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-oxm:5.3.20" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-context-support:5.3.20" level="project" />
+    <orderEntry type="library" name="Maven: io.lettuce:lettuce-core:6.1.8.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-common:4.1.77.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.77.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.77.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.77.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-codec:4.1.77.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-transport:4.1.77.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.projectreactor:reactor-core:3.4.18" level="project" />
+    <orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.3" level="project" />
+  </component>
+</module>

+ 135 - 0
baseStation-register/pom.xml

@@ -0,0 +1,135 @@
+<?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">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>2.7.0</version>
+        <relativePath/> <!-- lookup parent from repository -->
+    </parent>
+
+    <groupId>org.example</groupId>
+    <artifactId>baseStation-register</artifactId>
+    <version>1.0-SNAPSHOT</version>
+
+    <properties>
+        <java.version>1.8</java.version>
+    </properties>
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <!-- 添加 Undertow 容器 -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-undertow</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.huimv</groupId>
+            <artifactId>huimv-eartag2-common</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+        </dependency>
+        <!-- netty -->
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-all</artifactId>
+            <version>4.1.45.Final</version>
+        </dependency>
+        <!-- lombok -->
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>1.16.18</version>
+            <scope>provided</scope>
+        </dependency>
+        <!--hutool-->
+<!--        <dependency>-->
+<!--            <groupId>cn.hutool</groupId>-->
+<!--            <artifactId>hutool-all</artifactId>-->
+<!--            <version>5.6.5</version>-->
+<!--        </dependency>-->
+        <!-- httpclient -->
+<!--        <dependency>-->
+<!--            <groupId>org.apache.httpcomponents</groupId>-->
+<!--            <artifactId>httpclient</artifactId>-->
+<!--            <version>4.5.5</version>-->
+<!--        </dependency>-->
+<!--        <dependency>-->
+<!--            <groupId>junit</groupId>-->
+<!--            <artifactId>junit</artifactId>-->
+<!--            <scope>test</scope>-->
+<!--        </dependency>-->
+
+        <!--rabbitmq-->
+        <!--        <dependency>-->
+        <!--            <groupId>org.springframework.boot</groupId>-->
+        <!--            <artifactId>spring-boot-starter-amqp</artifactId>-->
+        <!--        </dependency>-->
+        <!-- fastjson -->
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.28</version>
+        </dependency>
+        <!-- actuator -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-actuator</artifactId>
+        </dependency>
+
+        <!--        &lt;!&ndash; JPA &ndash;&gt;-->
+        <!--        <dependency>-->
+        <!--            <groupId>org.springframework.boot</groupId>-->
+        <!--            <artifactId>spring-boot-starter-data-jpa</artifactId>-->
+        <!--        </dependency>-->
+        <!--        &lt;!&ndash; mysql &ndash;&gt;-->
+        <!--        <dependency>-->
+        <!--            <groupId>mysql</groupId>-->
+        <!--            <artifactId>mysql-connector-java</artifactId>-->
+        <!--        </dependency>-->
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.28</version>
+        </dependency>
+        <!-- JPA -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-jpa</artifactId>
+        </dependency>
+        <!-- mysql -->
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+        </dependency>
+        <!-- redis -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-redis</artifactId>
+        </dependency>
+
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+</project>

+ 22 - 0
baseStation-register/src/main/java/com/huimv/register/HuimvRegisterApplication.java

@@ -0,0 +1,22 @@
+package com.huimv.register;
+
+import com.huimv.register.server.BaseStationServer;
+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 HuimvRegisterApplication {
+    public static void main(String[] args) throws InterruptedException {
+        ApplicationContext applicationContext = SpringApplication.run(HuimvRegisterApplication.class, args);
+        applicationContext.getBean(BaseStationServer.class).run();
+    }
+}

+ 57 - 0
baseStation-register/src/main/java/com/huimv/register/controller/BaseStationController.java

@@ -0,0 +1,57 @@
+package com.huimv.register.controller;
+
+import com.huimv.eartag2.common.utils.Result;
+import com.huimv.eartag2.common.utils.ResultCode;
+import com.huimv.register.dao.entity.CollectorRegisterEntity;
+import com.huimv.register.result.R;
+import com.huimv.register.service.IBaseStationService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.web.bind.annotation.*;
+
+import javax.persistence.criteria.Order;
+import javax.persistence.criteria.Predicate;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@RestController
+@RequestMapping("/management/collectorregister")
+@CrossOrigin
+public class BaseStationController {
+    @Autowired
+    private IBaseStationService iBaseStationService;
+
+    @PostMapping("/list")
+    public Result list(@RequestBody Map<String,Object> paramsMap){
+        String deviceCode = paramsMap.get("deviceCode")+"";
+        String registeCode = paramsMap.get("registeCode")+"";
+        String farmCode = paramsMap.get("farmCode")+"";
+        String farmName = paramsMap.get("farmName")+"";
+        String pageNo= paramsMap.get("pageNo")+"";
+        if(pageNo == null){
+            pageNo = "0";
+        }
+        String pageSize= paramsMap.get("pageSize")+"";
+        if(pageSize == null){
+            pageSize = "10";
+        }
+        return iBaseStationService.list(deviceCode,registeCode,farmCode,farmName,null,null,Integer.parseInt(pageNo),Integer.parseInt(pageSize));
+    }
+
+    @RequestMapping("/addFromClient")
+    public R save(@RequestBody Map<String,Object> paramsMap){
+
+        return R.ok().put("sds",0);
+    }
+}

+ 131 - 0
baseStation-register/src/main/java/com/huimv/register/dao/entity/CollectorRegisterEntity.java

@@ -0,0 +1,131 @@
+package com.huimv.register.dao.entity;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.sql.Timestamp;
+
+@Entity
+@Table(name = "collector_register")
+@Data
+@Accessors(chain = true)
+public class CollectorRegisterEntity 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 = "org_name")
+    private String orgName;
+
+    @Column(name = "county_code")
+    private String countyCode;
+
+    /**
+     * 设备编码
+     */
+    @Column(name = "device_code")
+    private String deviceCode;
+
+    /**
+     * 盒子的芯片编码
+     */
+    @Column(name = "registe_code")
+    private String registeCode;
+
+    /**
+     * 牧场编码
+     */
+    @Column(name = "farm_code")
+    private String farmCode;
+
+    /**
+     * 牧场名称
+     */
+    @Column(name = "farm_name")
+    private String farmName;
+
+    /**
+     * 动物种类
+     */
+    @Column(name = "type_f")
+    private Integer typeF;
+
+    /**
+     * 阶段
+     */
+    @Column(name = "stage")
+    private Integer stage;
+
+    /**
+     * 猪舍id
+     */
+    @Column(name = "pigpen_id")
+    private Integer pigpenId;
+
+    /**
+     * 栋舍名称
+     */
+    @Column(name = "pen_name")
+    private String penName;
+
+    /**
+     * 单元id
+     */
+    @Column(name = "unit_id")
+    private Integer unitId;
+
+    /**
+     * 单元名称
+     */
+    @Column(name = "unit_name")
+    private String unitName;
+
+    /**
+     * 上传服务器地址
+     */
+    @Column(name = "server_ip")
+    private String serverIp;
+
+    /**
+     * 端口
+     */
+    @Column(name = "port")
+    private Integer port;
+
+    /**
+     * 注册时间
+     */
+    @Column(name = "register_time")
+    private Timestamp registerTime;
+
+    /**
+     * 最后上传时间
+     */
+    @Column(name = "last_time")
+    private Timestamp lastTime;
+
+    /**
+     * 0:正常,1:网络异常,2:采集异常,3:注销
+     */
+    @Column(name = "can_status")
+    private Integer canStatus;
+
+}

+ 9 - 0
baseStation-register/src/main/java/com/huimv/register/dao/repo/CollectorRegisterRepo.java

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

+ 58 - 0
baseStation-register/src/main/java/com/huimv/register/result/R.java

@@ -0,0 +1,58 @@
+package com.huimv.register.result;
+
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class R extends HashMap<String, Object> {
+
+    private static final long serialVersionUID = 1L;
+
+    public R() {
+        put("code", 0);
+        put("msg", "success");
+    }
+
+    public static R error() {
+        return error(500, "未知异常,请联系管理员");
+    }
+
+    public static R error(String msg) {
+        return error(500, msg);
+    }
+
+    public static R error(int code, String msg) {
+        R r = new R();
+        r.put("code", code);
+        r.put("msg", msg);
+        return r;
+    }
+
+    public static R ok(String msg) {
+        R r = new R();
+        r.put("msg", msg);
+        return r;
+    }
+
+    public static R ok(Map<String, Object> map) {
+        R r = new R();
+        r.putAll(map);
+        return r;
+    }
+
+    public static R ok() {
+        return new R();
+    }
+
+    @Override
+    public R put(String key, Object value) {
+        super.put(key, value);
+        return this;
+    }
+
+    public static void main(String[] args) {
+        R r = new R();
+        System.out.println(r);
+
+    }
+}

+ 77 - 0
baseStation-register/src/main/java/com/huimv/register/server/BaseStationServer.java

@@ -0,0 +1,77 @@
+package com.huimv.register.server;
+
+import io.netty.bootstrap.ServerBootstrap;
+import io.netty.channel.ChannelFuture;
+import io.netty.channel.ChannelInitializer;
+import io.netty.channel.EventLoopGroup;
+import io.netty.channel.nio.NioEventLoopGroup;
+import io.netty.channel.socket.SocketChannel;
+import io.netty.channel.socket.nio.NioServerSocketChannel;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@Component
+public class BaseStationServer {
+    @Autowired
+    private BaseStationServerHandler serverHandler;
+    //监听端口
+//    private int port = 10023;
+    private int port = 10024;
+    //创建构造方法
+    public BaseStationServer(){
+    }
+
+    public static void main(String[] args) throws InterruptedException {
+        new BaseStationServer().run();
+    }
+/**
+ *
+ * 功能描述: 启动方法前台多个服务  处理多个线程
+ *
+ * @param:
+ * @return:
+ * @auther: LiGang
+ * @date: 2019/3/26 11:31
+ */
+    /**
+     * 启动流程
+     */
+    public void run() throws InterruptedException {
+        //配置服务端线程组
+        EventLoopGroup bossGroup=new NioEventLoopGroup();
+        EventLoopGroup workGroup=new NioEventLoopGroup();
+
+        try{
+            //引导整个server的启动
+            ServerBootstrap serverBootstrap = new ServerBootstrap();
+            serverBootstrap.group(bossGroup,workGroup)
+                    .channel(NioServerSocketChannel.class)    //指定处理的连接类型
+                    .childHandler(new ChannelInitializer<SocketChannel>() {
+                        @Override
+                        protected void initChannel(SocketChannel socketChannel) throws Exception {
+                            socketChannel.pipeline().addLast(serverHandler);
+//                            socketChannel.pipeline().addLast(new IdleStateHandler(1, 0, 0, TimeUnit.MICROSECONDS));
+//                            socketChannel.pipeline().addLast(new HeartBeatServerHandler());
+                        }
+                    });
+            System.out.println("# 耳标及采集器设备数据接收服务器已经启动,监听TCP端口:"+port);
+            System.out.println("# 准备接收数据:");
+            //绑定端口,同步等待成功
+            ChannelFuture cf = serverBootstrap.bind(port).sync();
+            // 等待服务端监听端口关闭
+            cf.channel().closeFuture().sync();
+        }finally {
+            //优雅的退出
+            bossGroup.shutdownGracefully();
+            workGroup.shutdownGracefully();
+        }
+    }
+}

+ 487 - 0
baseStation-register/src/main/java/com/huimv/register/server/BaseStationServerHandler.java

@@ -0,0 +1,487 @@
+package com.huimv.register.server;
+
+import com.alibaba.fastjson.JSONArray;
+import com.huimv.register.dao.entity.CollectorRegisterEntity;
+import com.huimv.register.dao.repo.CollectorRegisterRepo;
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.Unpooled;
+import io.netty.channel.ChannelHandler;
+import io.netty.channel.ChannelHandlerContext;
+import io.netty.channel.ChannelInboundHandlerAdapter;
+import io.netty.util.CharsetUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Example;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.NoSuchElementException;
+import java.util.Optional;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+//import com.huimv.eartag2.service.IDataService;
+//import com.huimv.eartag2.service.IDeviceService;
+//import com.huimv.eartag2.utils.DateUtil2;
+//import com.huimv.eartag2.utils.RegexUtil;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@ChannelHandler.Sharable
+@Component
+@Slf4j
+public class BaseStationServerHandler extends ChannelInboundHandlerAdapter {
+    //    @Autowired
+//    private IDataService dataService;
+//    @Autowired
+//    private DateUtil2 dateUtil;
+//    @Autowired
+//    private RegexUtil regexUtil;
+//    @Autowired
+//    private IDeviceService deviceService;
+//    @Value("${data.input.flow}")
+//    private Integer dataInputFlow;
+//    @Value("${data.test.input}")
+//    private Integer dataTestInput;
+    private StringBuilder askTextSb = null;
+    private int num = 0;
+    @Autowired
+    private CollectorRegisterRepo collectorRegisterRepo;
+
+    //
+    public void appendClientAsk(String text) {
+        if (this.askTextSb == null) {
+            askTextSb = new StringBuilder();
+        }
+        askTextSb.append(text);
+    }
+
+    @Override
+    public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
+        ByteBuf data = (ByteBuf) msg;
+        String clientAskText = data.toString(CharsetUtil.UTF_8);
+//        System.out.println((++num)+"次, 客户端消息clientAskText>>"+clientAskText);
+        //保存实例内的客户端请求
+//        appendClientAsk(clientAskText);
+        handleAskCmd(clientAskText, ctx);
+    }
+
+    @Override
+    public void channelReadComplete(ChannelHandlerContext ctx) throws Exception {
+//        ctx.writeAndFlush("111");
+
+//        System.out.println("EchoServerHandle channelReadComplete");
+//        if(askTextSb.toString().indexOf("end") != -1){
+//            System.out.println("askTextSb.内容()>>"+askTextSb.toString());
+//            System.out.println("askTextSb.内容长度>>"+askTextSb.length());
+//            System.out.println("输入完成.");
+        // 处理客户端消息
+//            handleClientEartagMessage(askTextSb.toString(),ctx);
+//            System.out.println("askTextSb.toString()>>"+askTextSb.toString());
+//            handleAskCmd( askTextSb.toString(),ctx);
+        //清空重置;
+//            askTextSb.delete(0,askTextSb.length());
+        num = 0;
+//            System.out.println("清空sb实例. 长度>>"+askTextSb.length());
+//        }
+    }
+
+    public void handleAskCmd(String askCmd, ChannelHandlerContext ctx) {
+        JSONArray askJa = getPerData(askCmd);
+        for (int a = 0; a < askJa.size(); a++) {
+            String askText = askJa.getString(a);
+            System.out.println("接收数据>>" + askText);
+            String[] dataArray = askText.split("\\+");
+            String cmdHeader = dataArray[0];
+            //芯片id/设备编码
+            String idCode = dataArray[1];
+            String cmd = dataArray[2];
+            System.out.println(idCode + "," + idCode.length());
+            if (idCode.length() == 12) {
+                System.out.println("WIFI");
+                Map ipAndPortMap = getServerIpAndPort(idCode);
+                System.out.println("ipAndPortMap 11111111111 >>" + ipAndPortMap.toString());
+                if (!ipAndPortMap.isEmpty()) {
+                    String ip = ipAndPortMap.get("ip") + "";
+                    String port = ipAndPortMap.get("port") + "";
+                    String answer = "hm+0+0+" + ip + "+" + port + "+8+end";
+                    ctx.writeAndFlush(Unpooled.copiedBuffer(answer.getBytes()));
+                } else {
+                    System.out.println("该基站(芯片ID:" + idCode + ")为未注册基站设备。");
+                }
+            } else if (idCode.length() == 15) {
+                System.out.println("2G");
+                Map ipAndPortMap = getServerIpAndPort(idCode);
+                System.out.println("ipAndPortMap 222222222 >>" + ipAndPortMap.toString());
+                if (!ipAndPortMap.isEmpty()) {
+                    String ip = ipAndPortMap.get("ip") + "";
+                    String port = ipAndPortMap.get("port") + "";
+                    String answer = "hm+0+0+" + ip + "+" + port + "+8+end";
+                    ctx.writeAndFlush(Unpooled.copiedBuffer(answer.getBytes()));
+                    //关闭通道
+                    closeChannel(ctx);
+                } else {
+                    System.out.println("该基站(芯片ID:" + idCode + ")为未注册基站设备。");
+                }
+            } else {
+                System.out.println("其他。");
+            }
+        }
+    }
+
+    // 读取getServerIpAndPort
+    private Map getServerIpAndPort(String idCode) {
+        System.out.println("idCode>>" + idCode);
+        CollectorRegisterEntity collectorRegisterEntity = new CollectorRegisterEntity();
+        collectorRegisterEntity.setRegisteCode(idCode);
+        Example<CollectorRegisterEntity> example = Example.of(collectorRegisterEntity);
+        Optional<CollectorRegisterEntity> opt = collectorRegisterRepo.findOne(example);
+        Map resultMap = new HashMap();
+//        try {
+            CollectorRegisterEntity entity = opt.get();
+            if (opt.isPresent()) {
+                resultMap.put("ip", entity.getServerIp());
+                resultMap.put("port", entity.getPort());
+            }
+//        } catch (NoSuchElementException e) {
+//            System.out.println("exception>>"+e.getMessage());
+//        }
+        return resultMap;
+    }
+
+    //拆分粘包数据
+//        public JSONArray getPerData(String text) {
+//            String key = "end";
+//            Pattern pattern = Pattern.compile(key);
+//            Matcher matcher = pattern.matcher(text);
+//            int count = 0;
+//            while (matcher.find()) {
+//                count++;
+//            }
+//            JSONArray dataJa = new JSONArray();
+//            if (count == 1) {
+//                dataJa.add(text);
+//            } else {
+//                for (int a = 0; a < count; a++) {
+//                    int p1 = text.indexOf("end");
+//                    dataJa.add(text.substring(0, p1 + 3));
+//                    text = text.substring(p1 + 3, text.length());
+//                }
+//            }
+//            return dataJa;
+//        }
+
+    // 关闭通道
+    public void closeChannel(ChannelHandlerContext ctx) {
+        // ok
+//        ctx.channel().close();
+        // ok
+        ctx.close();
+        System.out.println("关闭这个通道,断开连接");
+    }
+
+    @Override
+    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
+//        System.out.println("cause.getMessage()>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"+cause.getMessage());
+        if (cause.getMessage().indexOf("Connection reset") != -1) {
+            log.info("相关采集器设备正在重启:" + cause.toString());
+        }
+//        cause.printStackTrace();
+        ctx.close();
+    }
+
+    /**
+     * @Method      : handleClientMessage
+     * @Description : 处理请求小心
+     * @Params      : [clientAskText, ctx]
+     * @Return      : void
+     *
+     * @Author      : ZhuoNing
+     * @Date        : 2022/3/28       
+     * @Time        : 17:36
+     */
+//    private void handleClientEartagMessage(String clientAskText,ChannelHandlerContext ctx) throws ParseException {
+////        System.out.println("## clientAskText>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> "+clientAskText);
+//        clientAskText = clientAskText.replaceAll("\r","").replaceAll("\n","");
+//        System.out.println("### 服务端接收数据 >>" + clientAskText);
+//        /////////////////////////////////////////////////////////////
+//        //TEST-saveRawData()
+//        if(dataTestInput == 1){
+//            deviceService.saveRawData(clientAskText);
+//        }
+//        /////////////////////////////////////////////////////////////
+//
+//        //{}
+//        int countPlus = regexUtil.countPlus(clientAskText);
+//        if (countPlus < 4) {
+//            System.out.println("当前数据为不完整数据,故丢弃.>>" + clientAskText);
+//        } else {
+//            //--处理客户端请求数据
+//            //{拆分粘包数据}
+//            JSONArray askJa = getPerData(clientAskText);
+////            System.out.println("askJa.size()="+askJa.size());
+//            for (int a = 0; a < askJa.size(); a++) {
+//                String askText = askJa.getString(a);
+////                System.out.println((a+1)+",askText"+askText);
+//                /////////////////////////////////////////////////////////////
+//                //TEST-saveRawData()
+////                deviceService.saveRawData(askText);
+//                /////////////////////////////////////////////////////////////
+//                if (dataInputFlow == 1) {
+//                    //{处理请求内容}
+//                    handleAskText(askText, ctx);
+//                } else {
+//                    //{处理请求内容2}
+//                    handleAskText2(askText, ctx);
+//                }
+//            }
+//        }
+//    }
+
+    /**
+     * @Method : handleAskText2
+     * @Description :
+     * @Params : [askText, ctx]
+     * @Return : void
+     * @Author : ZhuoNing
+     * @Date : 2022/3/23
+     * @Time : 18:08
+     */
+//    private void handleAskText2(String askText, ChannelHandlerContext ctx) throws ParseException {
+//        String[] dataArray = askText.split("\\+");
+//        String cmdHeader = dataArray[0];
+//        //芯片id/设备编码
+//        String idCode = dataArray[1];
+//        String cmd = dataArray[2];
+//        Map map = new HashMap();
+//        map.put("askText", askText);
+//        if (cmdHeader.trim().equalsIgnoreCase("hm")) {
+//            //采集器应答数据
+//            if (cmd.trim().equalsIgnoreCase("0")) {
+//                //不需要处理
+//                System.out.println("==>命令0");
+//            } else if (cmd.trim().equalsIgnoreCase("1")) {
+//                System.out.println("==>命令1请求 askText>>" + askText.trim());
+//                //处理获取设备编码命令
+//                //{读取设备编码}
+//                String deviceCode = dataService.getDeviceCodeByChipId(idCode);
+//                log.info("获取设备编码结果,芯片id>>" + idCode + " ,deviceCode>>" + deviceCode);
+//                if (deviceCode != null) {
+//                    String answer = "hm+1+0+" + deviceCode + "+123+8+end";
+//                    log.info(">>命令1设备编码-应答数据>>" + answer);
+//                    ctx.writeAndFlush(Unpooled.copiedBuffer(answer.getBytes()));
+//                } else {
+//                    log.error("检测到未注册的采集器设备,已舍弃请求.");
+//                }
+//            } else if (cmd.trim().equalsIgnoreCase("2")) {
+//                System.out.println("==>命令2请求 askText>>" + askText);
+//                if (dataService.isEffectiveDevice(idCode)) {
+//                    //处理服务器时间命令
+//                    String answer = "hm+2+" + dateUtil.getNowText() + "+4+end";
+//                    log.info(">>命令2服务器时间-应答数据>>" + answer);
+//                    ctx.writeAndFlush(Unpooled.copiedBuffer(answer.getBytes()));
+//                }else {
+//                    System.out.println("##获取服务器时间-无效设备编码 idCode=" + idCode);
+//                }
+//            } else if (cmd.trim().equalsIgnoreCase("3")) {
+//                System.out.println("==>命令3请求 askText>>" + askText);
+//                //处理心跳包命令
+//                //{设备心跳应答}
+//                if (dataService.isEffectiveDevice(idCode)) {
+//                    String answer = "hm+3+6+end";
+//                    log.info(">>命令3心跳包-应答数据>>" + answer);
+//                    ctx.writeAndFlush(Unpooled.copiedBuffer(answer.getBytes()));
+//
+//                    //{发送到设备处理消息队列}
+//                    dataService.sendDeviceMQ(map);
+//                    log.info(">>发送设备心跳数据消息到MQ."+map);
+//                } else {
+//                    System.out.println("##心跳包-无效设备编码(" + idCode+"),请求拒绝。");
+//                }
+//            } else if (cmd.trim().equalsIgnoreCase("4")) {
+//                System.out.println("==>命令4请求 askText>>" + askText);
+//                //处理设备环境温度命令
+//                //{设备环境温度应答}
+//                if (dataService.isEffectiveDevice(idCode)) {
+//                    String answer = "hm+4+7+end";
+//                    log.info(">>命令4环境温度-应答数据>>" + answer);
+//                    ctx.writeAndFlush(Unpooled.copiedBuffer(answer.getBytes()));
+//
+//                    //{发送到设备处理消息队列}
+//                    dataService.sendDeviceMQ(map);
+//                    log.info(">>发送设备环境温度数据消息到MQ."+map);
+//                } else {
+//                    System.out.println("##环境温度-无效设备编码(" + idCode+"),请求拒绝。");
+//                }
+//            } else {
+//                System.out.println("==>未知命令");
+//                log.error(">>当前数据为非法数据>>" + askText);
+//            }
+//        } else if (cmdHeader.trim().equalsIgnoreCase("zj")) {
+//            System.out.println("==>耳标命令请求 askText>>"+askText);
+//            //耳标应答数据(不需要应答)
+//            if (checkValidEarmark(cmd)) {
+//                log.error(">>舍弃掉未配置耳标号的耳标," + askText + "");
+//            } else {
+//                //{检查设备是否在处于工作状态或待机状态}
+////                if (dataService.isWorkStatusDevice(idCode)) {
+//                if (dataService.isEffectiveDevice(idCode)) {
+//                    //{发送到耳标处理消息队列}
+//                    dataService.sendEartagMQ(map);
+//                    log.info(">>发送耳标数据消息到MQ."+map);
+//                }else{
+//                    System.out.println("无效设备编码 idCode="+idCode);
+//                }
+//            }
+//        } else {
+//            System.out.println("==>未知命令");
+//            log.error("##当前请求数据为非法数据>>" + askText);
+//        }
+//    }
+
+    //检查无效耳标
+    public boolean checkValidEarmark(String earmark) {
+        if (earmark.trim().equalsIgnoreCase("ffffffffffffffff") || earmark.trim().equalsIgnoreCase("0000000000000000")) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    /**
+     * @Method : handleAskText
+     * @Description : 处理请求内容
+     * @Params : [askText, ctx]
+     * @Return : void
+     * @Author : ZhuoNing
+     * @Date : 2022/3/23
+     * @Time : 17:36
+     */
+//    private void handleAskText(String askText, ChannelHandlerContext ctx) throws ParseException {
+//        String[] dataArray = askText.split("\\+");
+//        String cmdHeader = dataArray[0];
+//        //芯片id/设备编码
+//        String idCode = dataArray[1];
+//        String cmd = dataArray[2];
+//        //{先判断是否已经注册,未注册的非法设备都过滤掉}
+//        boolean validStatus = dataService.isValidDevice(cmdHeader, idCode, cmd);
+//        System.out.println("## validStatus>>" + validStatus);
+//        if (validStatus) {
+//            System.out.println("-->1");
+//            //{处理应答}
+//            String answer = dataService.getDeviceAnswer(cmdHeader, cmd, idCode);
+//            System.out.println("-->2");
+//            if (answer != null) {
+//                System.out.println("-->2.1");
+//                log.info("###应答响应>>" + answer + "\n");
+//                ctx.writeAndFlush(Unpooled.copiedBuffer(answer.getBytes()));
+//                System.out.println("-->2.2");
+//            } else {
+//                System.out.println("-->2.3");
+//                log.info("###应答数据>>" + answer + ",不需要应答。\n");
+//            }
+//            System.out.println("-->3");
+//            //{发送消息异步处理}
+//            dataService.sendBizMQ(cmdHeader, cmd, askText);
+//            System.out.println("-->4");
+//        }
+//    }
+
+    //    @Override
+//    public void channelRead_old2(ChannelHandlerContext ctx, Object msg) throws Exception {
+//        ByteBuf data = (ByteBuf) msg;
+//        String clientAskText = data.toString(CharsetUtil.UTF_8);
+////        clientAskText = clientAskText.replaceAll("\r","").replaceAll("\n","");
+//        System.out.println("### 服务端接收数据 >>" + clientAskText);
+//        //TEST-saveRawData()
+////        deviceService.saveRawData(clientAskText);
+//        //{}
+//        int countPlus = regexUtil.countPlus(clientAskText);
+//        if (countPlus < 4) {
+//            System.out.println("当前数据为不完整数据,故丢弃.>>" + clientAskText);
+//        } else {
+//            //--处理客户端请求数据
+////            System.out.println("000拆分粘包之前数据 clientAskText>>"+clientAskText);
+//            //{拆分粘包数据}
+//            JSONArray askJa = getPerData(clientAskText);
+//            for (int a = 0; a < askJa.size(); a++) {
+//                //先判断是否再所有牧场的集合当中,未登记都过滤掉;
+////                cacheService.isValidDevice(deviceCode);
+//
+//                //{处理客户端请求数据}
+//                String answer = dataService.handleClientAsk(askJa.getString(a));
+//                System.out.println("## 返回应答>>" + answer);
+//                if (answer != null) {
+//                    log.info("###应答响应>>" + answer + "\n");
+//                    ctx.writeAndFlush(Unpooled.copiedBuffer(answer.getBytes()));
+//                } else {
+//                    log.info("###应答数据>>" + answer + ",不需要应答。\n");
+//                }
+//            }
+//        }
+//    }
+
+    //    @Override
+//    public void channelRead_old1(ChannelHandlerContext ctx, Object msg) throws Exception {
+//        ByteBuf data = (ByteBuf) msg;
+//        String clientAskText = data.toString(CharsetUtil.UTF_8);
+//        System.out.println("### 服务端接收数据 >>" + clientAskText);
+//        if (clientAskText.length() <= 18) {
+//            System.out.println("当前数据为不完整数据,故丢弃.>>" + clientAskText);
+//        } else {
+//            //--处理客户端请求数据
+////            String answer = eartagDataService.handleClientAsk(clientAskText, ctx);
+//////            String answer = eartagDataService.handleClientAsk(clientAsk, ctx);
+////            if (answer != null) {
+////                log.info("###应答响应>>" + answer + "\n");
+////                ctx.writeAndFlush(Unpooled.copiedBuffer(answer.getBytes()));
+////            } else {
+////                log.info("###应答数据>>" + answer + ",不需要应答。\n");
+////            }
+////            System.out.println("000拆分粘包之前数据 clientAskText>>"+clientAskText);
+////            --拆分粘包数据
+//            JSONArray askJa = getPerData(clientAskText);
+//            for (int a = 0; a < askJa.size(); a++) {
+//                //--处理客户端请求数据
+//                String answer = dataService.handleClientAsk(askJa.getString(a), ctx);
+////            String answer = eartagDataService.handleClientAsk(clientAsk, ctx);
+//                if (answer != null) {
+//                    log.info("###应答响应>>" + answer + "\n");
+//                    ctx.writeAndFlush(Unpooled.copiedBuffer(answer.getBytes()));
+//                } else {
+//                    log.info("###应答数据>>" + answer + ",不需要应答。\n");
+//                }
+//            }
+//        }
+//    }
+
+    //拆分粘包数据
+    public JSONArray getPerData(String text) {
+        String key = "end";
+        Pattern pattern = Pattern.compile(key);
+        Matcher matcher = pattern.matcher(text);
+        int count = 0;
+        while (matcher.find()) {
+            count++;
+        }
+        JSONArray dataJa = new JSONArray();
+        if (count == 1) {
+            dataJa.add(text);
+        } else {
+            for (int a = 0; a < count; a++) {
+                int p1 = text.indexOf("end");
+                dataJa.add(text.substring(0, p1 + 3));
+                text = text.substring(p1 + 3, text.length());
+            }
+        }
+        return dataJa;
+    }
+
+}

+ 82 - 0
baseStation-register/src/main/java/com/huimv/register/service/BaseStationServiceImpl.java

@@ -0,0 +1,82 @@
+package com.huimv.register.service;
+
+import com.huimv.eartag2.common.utils.Result;
+import com.huimv.eartag2.common.utils.ResultCode;
+import com.huimv.register.dao.entity.CollectorRegisterEntity;
+import com.huimv.register.dao.repo.CollectorRegisterRepo;
+import com.huimv.register.result.R;
+//import org.springframework.data.domain.PageRequest;
+//import org.springframework.data.domain.Pageable;
+//import org.springframework.data.jpa.domain.Specification;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.*;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Service;
+import javax.persistence.criteria.*;
+
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Optional;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@Service
+public class BaseStationServiceImpl implements IBaseStationService {
+    @Autowired
+    private CollectorRegisterRepo collectorRegisterRepo;
+
+    @Override
+    public Result list(String deviceCode, String registeCode, String farmCode, String farmName, Date startDate, Date endDate, Integer pageNo, Integer pageSize){
+        Specification<CollectorRegisterEntity> sf = (Specification<CollectorRegisterEntity>) (root, criteriaQuery, criteriaBuilder) -> {
+            //
+            List<Predicate> predList = new ArrayList<>();
+            if (null != deviceCode) {
+                predList.add(criteriaBuilder.equal(root.get("deviceCode").as(String.class), deviceCode));
+            }
+            //
+            if (null != registeCode) {
+                predList.add(criteriaBuilder.equal(root.get("registeCode").as(String.class), registeCode));
+            }
+            //
+            if (null != farmCode) {
+                predList.add(criteriaBuilder.equal(root.get("farmCode").as(String.class), farmCode));
+            }
+            //
+            if (null != farmName) {
+                predList.add(criteriaBuilder.like(root.get("farmName").as(String.class), farmName));
+            }
+//            if (null != startDate) {
+//                predList.add(criteriaBuilder.greaterThanOrEqualTo(root.get("startDate").as(Date.class), startDate));
+//            }
+//            if (null != endDate) {
+//                predList.add(criteriaBuilder.lessThanOrEqualTo(root.get("endDate").as(Date.class), endDate));
+//            }
+//            if (null != returnState) {
+//                predList.add(criteriaBuilder.equal(root.get("returnState").as(Integer.class), returnState));
+//            }
+//            if (null != deliverState) {
+//                predList.add(criteriaBuilder.equal(root.get("deliverState").as(Integer.class), deliverState));
+//            }
+            //
+            Predicate[] pred = new Predicate[predList.size()];
+            Predicate and = criteriaBuilder.and(predList.toArray(pred));
+            criteriaQuery.where(and);
+            //
+            List<Order> orders = new ArrayList<>();
+            orders.add(criteriaBuilder.desc(root.get("lastTime")));
+            return criteriaQuery.orderBy(orders).getRestriction();
+        };
+        Pageable pageable = PageRequest.of( pageNo - 1, pageSize);
+        return new Result(ResultCode.SUCCESS, collectorRegisterRepo.findAll(sf, pageable));
+    }
+}

+ 9 - 0
baseStation-register/src/main/java/com/huimv/register/service/IBaseStationService.java

@@ -0,0 +1,9 @@
+package com.huimv.register.service;
+
+import com.huimv.eartag2.common.utils.Result;
+
+import java.util.Date;
+
+public interface IBaseStationService {
+    Result list(String deviceCode, String registeCode, String farmCode, String farmName, Date startDate, Date endDate, Integer pageSize, Integer pageNo);
+}

+ 41 - 0
baseStation-register/src/main/resources/application-dev.yml

@@ -0,0 +1,41 @@
+server:
+  port: 9502
+
+spring:
+  application:
+    name: test
+
+  datasource:
+    #url: jdbc:mysql://122.112.224.199:3306/huimv_cattle?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
+    url: jdbc:mysql://122.112.224.199:3306/huimv-eartag-cloud?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
+
+  #redis
+  redis:
+    database: 0
+    host: 121.36.134.218
+    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

+ 4 - 0
baseStation-register/src/main/resources/application.properties

@@ -0,0 +1,4 @@
+#spring.profiles.active=eartag
+spring.profiles.active=dev
+
+

BIN=BIN
baseStation-register/target/classes/META-INF/baseStation-register.kotlin_module


+ 41 - 0
baseStation-register/target/classes/application-dev.yml

@@ -0,0 +1,41 @@
+server:
+  port: 9502
+
+spring:
+  application:
+    name: test
+
+  datasource:
+    #url: jdbc:mysql://122.112.224.199:3306/huimv_cattle?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
+    url: jdbc:mysql://122.112.224.199:3306/huimv-eartag-cloud?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
+
+  #redis
+  redis:
+    database: 0
+    host: 121.36.134.218
+    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

+ 4 - 0
baseStation-register/target/classes/application.properties

@@ -0,0 +1,4 @@
+#spring.profiles.active=eartag
+spring.profiles.active=dev
+
+

BIN=BIN
baseStation-register/target/classes/com/huimv/register/HuimvRegisterApplication.class


BIN=BIN
baseStation-register/target/classes/com/huimv/register/controller/BaseStationController.class


BIN=BIN
baseStation-register/target/classes/com/huimv/register/dao/entity/CollectorRegisterEntity.class


BIN=BIN
baseStation-register/target/classes/com/huimv/register/dao/repo/CollectorRegisterRepo.class


BIN=BIN
baseStation-register/target/classes/com/huimv/register/result/R.class


BIN=BIN
baseStation-register/target/classes/com/huimv/register/server/BaseStationServer$1.class


BIN=BIN
baseStation-register/target/classes/com/huimv/register/server/BaseStationServer.class


BIN=BIN
baseStation-register/target/classes/com/huimv/register/server/BaseStationServerHandler.class


BIN=BIN
baseStation-register/target/classes/com/huimv/register/service/BaseStationServiceImpl.class


BIN=BIN
baseStation-register/target/classes/com/huimv/register/service/IBaseStationService.class