diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..74d7bd1
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,123 @@
+
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.1.3.RELEASE
+
+
+ 4.0.0
+
+ com.casic.sensor
+ sensor-transfer
+ 1.0-SNAPSHOT
+ war
+
+
+ UTF-8
+ UTF-8
+ 1.8
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-tomcat
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.1.3.RELEASE
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-jdbc
+ 2.1.3.RELEASE
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+ compile
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+ org.postgresql
+ postgresql
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+
+ com.alibaba
+ druid
+ 1.2.6
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..74d7bd1
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,123 @@
+
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.1.3.RELEASE
+
+
+ 4.0.0
+
+ com.casic.sensor
+ sensor-transfer
+ 1.0-SNAPSHOT
+ war
+
+
+ UTF-8
+ UTF-8
+ 1.8
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-tomcat
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.1.3.RELEASE
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-jdbc
+ 2.1.3.RELEASE
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+ compile
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+ org.postgresql
+ postgresql
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+
+ com.alibaba
+ druid
+ 1.2.6
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/build/package.xml b/src/main/build/package.xml
new file mode 100644
index 0000000..96d895e
--- /dev/null
+++ b/src/main/build/package.xml
@@ -0,0 +1,43 @@
+
+
+ package
+
+ zip
+ tar.gz
+
+ true
+
+
+
+ true
+ true
+ lib
+ runtime
+
+
+
+
+ src/main/build/bin
+
+ start.bat
+ start.sh
+
+ true
+ 0744
+ /
+
+
+ src/main/resources/config
+ true
+
+ *.yml
+ /*/*
+
+ /config
+
+
+ src/main/resources/i18n
+ /
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..74d7bd1
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,123 @@
+
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.1.3.RELEASE
+
+
+ 4.0.0
+
+ com.casic.sensor
+ sensor-transfer
+ 1.0-SNAPSHOT
+ war
+
+
+ UTF-8
+ UTF-8
+ 1.8
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-tomcat
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.1.3.RELEASE
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-jdbc
+ 2.1.3.RELEASE
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+ compile
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+ org.postgresql
+ postgresql
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+
+ com.alibaba
+ druid
+ 1.2.6
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/build/package.xml b/src/main/build/package.xml
new file mode 100644
index 0000000..96d895e
--- /dev/null
+++ b/src/main/build/package.xml
@@ -0,0 +1,43 @@
+
+
+ package
+
+ zip
+ tar.gz
+
+ true
+
+
+
+ true
+ true
+ lib
+ runtime
+
+
+
+
+ src/main/build/bin
+
+ start.bat
+ start.sh
+
+ true
+ 0744
+ /
+
+
+ src/main/resources/config
+ true
+
+ *.yml
+ /*/*
+
+ /config
+
+
+ src/main/resources/i18n
+ /
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..c55e37d
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,25 @@
+package com.casic;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.ServletComponentScan;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.context.annotation.ComponentScan;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author cz
+ * @Date 2022/06/20 14:28
+ */
+
+@Slf4j
+@ComponentScan(basePackages= "com.casic.**")
+@SpringBootApplication
+public class CasicApplication {
+ public static void main(String[] args) {
+ log.info("CasicApplication is success!");
+ SpringApplication.run(CasicApplication.class, args);
+ }
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..74d7bd1
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,123 @@
+
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.1.3.RELEASE
+
+
+ 4.0.0
+
+ com.casic.sensor
+ sensor-transfer
+ 1.0-SNAPSHOT
+ war
+
+
+ UTF-8
+ UTF-8
+ 1.8
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-tomcat
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.1.3.RELEASE
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-jdbc
+ 2.1.3.RELEASE
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+ compile
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+ org.postgresql
+ postgresql
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+
+ com.alibaba
+ druid
+ 1.2.6
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/build/package.xml b/src/main/build/package.xml
new file mode 100644
index 0000000..96d895e
--- /dev/null
+++ b/src/main/build/package.xml
@@ -0,0 +1,43 @@
+
+
+ package
+
+ zip
+ tar.gz
+
+ true
+
+
+
+ true
+ true
+ lib
+ runtime
+
+
+
+
+ src/main/build/bin
+
+ start.bat
+ start.sh
+
+ true
+ 0744
+ /
+
+
+ src/main/resources/config
+ true
+
+ *.yml
+ /*/*
+
+ /config
+
+
+ src/main/resources/i18n
+ /
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..c55e37d
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,25 @@
+package com.casic;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.ServletComponentScan;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.context.annotation.ComponentScan;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author cz
+ * @Date 2022/06/20 14:28
+ */
+
+@Slf4j
+@ComponentScan(basePackages= "com.casic.**")
+@SpringBootApplication
+public class CasicApplication {
+ public static void main(String[] args) {
+ log.info("CasicApplication is success!");
+ SpringApplication.run(CasicApplication.class, args);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java
new file mode 100644
index 0000000..653db64
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceController.java
@@ -0,0 +1,32 @@
+package com.casic.controller;
+
+import com.casic.model.*;
+import com.casic.service.DeviceService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+@RestController
+@RequestMapping("/device")
+public class DeviceController {
+
+
+ private final DeviceService deviceService;
+
+ public DeviceController(DeviceService deviceService) {
+ this.deviceService = deviceService;
+ }
+
+ @RequestMapping("/helloWord")
+ public ResponseData helloWord() {
+ return deviceService.testMysql();
+ }
+
+ @PostMapping("/online")
+ public ResponseData DeviceOnline(@RequestBody DeviceOnlineParam onlineParam) {
+ return deviceService.onlineStatusByImei(onlineParam.getEventType(),onlineParam.getImei());
+ }
+
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..74d7bd1
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,123 @@
+
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.1.3.RELEASE
+
+
+ 4.0.0
+
+ com.casic.sensor
+ sensor-transfer
+ 1.0-SNAPSHOT
+ war
+
+
+ UTF-8
+ UTF-8
+ 1.8
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-tomcat
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.1.3.RELEASE
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-jdbc
+ 2.1.3.RELEASE
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+ compile
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+ org.postgresql
+ postgresql
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+
+ com.alibaba
+ druid
+ 1.2.6
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/build/package.xml b/src/main/build/package.xml
new file mode 100644
index 0000000..96d895e
--- /dev/null
+++ b/src/main/build/package.xml
@@ -0,0 +1,43 @@
+
+
+ package
+
+ zip
+ tar.gz
+
+ true
+
+
+
+ true
+ true
+ lib
+ runtime
+
+
+
+
+ src/main/build/bin
+
+ start.bat
+ start.sh
+
+ true
+ 0744
+ /
+
+
+ src/main/resources/config
+ true
+
+ *.yml
+ /*/*
+
+ /config
+
+
+ src/main/resources/i18n
+ /
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..c55e37d
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,25 @@
+package com.casic;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.ServletComponentScan;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.context.annotation.ComponentScan;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author cz
+ * @Date 2022/06/20 14:28
+ */
+
+@Slf4j
+@ComponentScan(basePackages= "com.casic.**")
+@SpringBootApplication
+public class CasicApplication {
+ public static void main(String[] args) {
+ log.info("CasicApplication is success!");
+ SpringApplication.run(CasicApplication.class, args);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java
new file mode 100644
index 0000000..653db64
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceController.java
@@ -0,0 +1,32 @@
+package com.casic.controller;
+
+import com.casic.model.*;
+import com.casic.service.DeviceService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+@RestController
+@RequestMapping("/device")
+public class DeviceController {
+
+
+ private final DeviceService deviceService;
+
+ public DeviceController(DeviceService deviceService) {
+ this.deviceService = deviceService;
+ }
+
+ @RequestMapping("/helloWord")
+ public ResponseData helloWord() {
+ return deviceService.testMysql();
+ }
+
+ @PostMapping("/online")
+ public ResponseData DeviceOnline(@RequestBody DeviceOnlineParam onlineParam) {
+ return deviceService.onlineStatusByImei(onlineParam.getEventType(),onlineParam.getImei());
+ }
+
+}
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
new file mode 100644
index 0000000..e5351c9
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -0,0 +1,37 @@
+package com.casic.controller;
+
+import com.casic.model.DataReportParam;
+import com.casic.model.HeartbeatParam;
+import com.casic.model.ResponseData;
+import com.casic.service.DeviceDataService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RequestMapping("/data")
+@RestController
+public class DeviceDataController {
+
+ private final DeviceDataService dataService;
+
+ public DeviceDataController(DeviceDataService dataService) {
+ this.dataService = dataService;
+ }
+
+ @PostMapping("/commit")
+ public ResponseData DeviceDataCommit(@RequestBody DataReportParam dataReportParam) {
+ return dataService.DeviceDataCommit(dataReportParam);
+ }
+
+ @PostMapping("/heartbeat")
+ public ResponseData heartBeat(@RequestBody HeartbeatParam heartbeatParam) {
+ return dataService.heartBeatSave(heartbeatParam);
+ }
+
+ @PostMapping("/gas/receiver")
+ public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
+ return dataService.heartBeatSave(heartbeatParam);
+ }
+
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..74d7bd1
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,123 @@
+
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.1.3.RELEASE
+
+
+ 4.0.0
+
+ com.casic.sensor
+ sensor-transfer
+ 1.0-SNAPSHOT
+ war
+
+
+ UTF-8
+ UTF-8
+ 1.8
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-tomcat
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.1.3.RELEASE
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-jdbc
+ 2.1.3.RELEASE
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+ compile
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+ org.postgresql
+ postgresql
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+
+ com.alibaba
+ druid
+ 1.2.6
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/build/package.xml b/src/main/build/package.xml
new file mode 100644
index 0000000..96d895e
--- /dev/null
+++ b/src/main/build/package.xml
@@ -0,0 +1,43 @@
+
+
+ package
+
+ zip
+ tar.gz
+
+ true
+
+
+
+ true
+ true
+ lib
+ runtime
+
+
+
+
+ src/main/build/bin
+
+ start.bat
+ start.sh
+
+ true
+ 0744
+ /
+
+
+ src/main/resources/config
+ true
+
+ *.yml
+ /*/*
+
+ /config
+
+
+ src/main/resources/i18n
+ /
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..c55e37d
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,25 @@
+package com.casic;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.ServletComponentScan;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.context.annotation.ComponentScan;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author cz
+ * @Date 2022/06/20 14:28
+ */
+
+@Slf4j
+@ComponentScan(basePackages= "com.casic.**")
+@SpringBootApplication
+public class CasicApplication {
+ public static void main(String[] args) {
+ log.info("CasicApplication is success!");
+ SpringApplication.run(CasicApplication.class, args);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java
new file mode 100644
index 0000000..653db64
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceController.java
@@ -0,0 +1,32 @@
+package com.casic.controller;
+
+import com.casic.model.*;
+import com.casic.service.DeviceService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+@RestController
+@RequestMapping("/device")
+public class DeviceController {
+
+
+ private final DeviceService deviceService;
+
+ public DeviceController(DeviceService deviceService) {
+ this.deviceService = deviceService;
+ }
+
+ @RequestMapping("/helloWord")
+ public ResponseData helloWord() {
+ return deviceService.testMysql();
+ }
+
+ @PostMapping("/online")
+ public ResponseData DeviceOnline(@RequestBody DeviceOnlineParam onlineParam) {
+ return deviceService.onlineStatusByImei(onlineParam.getEventType(),onlineParam.getImei());
+ }
+
+}
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
new file mode 100644
index 0000000..e5351c9
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -0,0 +1,37 @@
+package com.casic.controller;
+
+import com.casic.model.DataReportParam;
+import com.casic.model.HeartbeatParam;
+import com.casic.model.ResponseData;
+import com.casic.service.DeviceDataService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RequestMapping("/data")
+@RestController
+public class DeviceDataController {
+
+ private final DeviceDataService dataService;
+
+ public DeviceDataController(DeviceDataService dataService) {
+ this.dataService = dataService;
+ }
+
+ @PostMapping("/commit")
+ public ResponseData DeviceDataCommit(@RequestBody DataReportParam dataReportParam) {
+ return dataService.DeviceDataCommit(dataReportParam);
+ }
+
+ @PostMapping("/heartbeat")
+ public ResponseData heartBeat(@RequestBody HeartbeatParam heartbeatParam) {
+ return dataService.heartBeatSave(heartbeatParam);
+ }
+
+ @PostMapping("/gas/receiver")
+ public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
+ return dataService.heartBeatSave(heartbeatParam);
+ }
+
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
new file mode 100644
index 0000000..47e7cce
--- /dev/null
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -0,0 +1,9 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.DataGasReport;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface DataGasMapper extends BaseMapper {
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..74d7bd1
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,123 @@
+
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.1.3.RELEASE
+
+
+ 4.0.0
+
+ com.casic.sensor
+ sensor-transfer
+ 1.0-SNAPSHOT
+ war
+
+
+ UTF-8
+ UTF-8
+ 1.8
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-tomcat
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.1.3.RELEASE
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-jdbc
+ 2.1.3.RELEASE
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+ compile
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+ org.postgresql
+ postgresql
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+
+ com.alibaba
+ druid
+ 1.2.6
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/build/package.xml b/src/main/build/package.xml
new file mode 100644
index 0000000..96d895e
--- /dev/null
+++ b/src/main/build/package.xml
@@ -0,0 +1,43 @@
+
+
+ package
+
+ zip
+ tar.gz
+
+ true
+
+
+
+ true
+ true
+ lib
+ runtime
+
+
+
+
+ src/main/build/bin
+
+ start.bat
+ start.sh
+
+ true
+ 0744
+ /
+
+
+ src/main/resources/config
+ true
+
+ *.yml
+ /*/*
+
+ /config
+
+
+ src/main/resources/i18n
+ /
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..c55e37d
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,25 @@
+package com.casic;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.ServletComponentScan;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.context.annotation.ComponentScan;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author cz
+ * @Date 2022/06/20 14:28
+ */
+
+@Slf4j
+@ComponentScan(basePackages= "com.casic.**")
+@SpringBootApplication
+public class CasicApplication {
+ public static void main(String[] args) {
+ log.info("CasicApplication is success!");
+ SpringApplication.run(CasicApplication.class, args);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java
new file mode 100644
index 0000000..653db64
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceController.java
@@ -0,0 +1,32 @@
+package com.casic.controller;
+
+import com.casic.model.*;
+import com.casic.service.DeviceService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+@RestController
+@RequestMapping("/device")
+public class DeviceController {
+
+
+ private final DeviceService deviceService;
+
+ public DeviceController(DeviceService deviceService) {
+ this.deviceService = deviceService;
+ }
+
+ @RequestMapping("/helloWord")
+ public ResponseData helloWord() {
+ return deviceService.testMysql();
+ }
+
+ @PostMapping("/online")
+ public ResponseData DeviceOnline(@RequestBody DeviceOnlineParam onlineParam) {
+ return deviceService.onlineStatusByImei(onlineParam.getEventType(),onlineParam.getImei());
+ }
+
+}
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
new file mode 100644
index 0000000..e5351c9
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -0,0 +1,37 @@
+package com.casic.controller;
+
+import com.casic.model.DataReportParam;
+import com.casic.model.HeartbeatParam;
+import com.casic.model.ResponseData;
+import com.casic.service.DeviceDataService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RequestMapping("/data")
+@RestController
+public class DeviceDataController {
+
+ private final DeviceDataService dataService;
+
+ public DeviceDataController(DeviceDataService dataService) {
+ this.dataService = dataService;
+ }
+
+ @PostMapping("/commit")
+ public ResponseData DeviceDataCommit(@RequestBody DataReportParam dataReportParam) {
+ return dataService.DeviceDataCommit(dataReportParam);
+ }
+
+ @PostMapping("/heartbeat")
+ public ResponseData heartBeat(@RequestBody HeartbeatParam heartbeatParam) {
+ return dataService.heartBeatSave(heartbeatParam);
+ }
+
+ @PostMapping("/gas/receiver")
+ public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
+ return dataService.heartBeatSave(heartbeatParam);
+ }
+
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
new file mode 100644
index 0000000..47e7cce
--- /dev/null
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -0,0 +1,9 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.DataGasReport;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface DataGasMapper extends BaseMapper {
+}
diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java
new file mode 100644
index 0000000..a550aa3
--- /dev/null
+++ b/src/main/java/com/casic/dao/DeviceMapper.java
@@ -0,0 +1,23 @@
+package com.casic.dao;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.HashMap;
+
+@Mapper
+public interface DeviceMapper {
+
+ /**
+ * @param status 设备在线状态 1-0
+ * @param imei 设备唯一识别编号
+ * @return
+ */
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{status} " +
+ "WHERE DEVCODE=#{imei} ")
+ Integer onlineStatusByImei(@Param("status") String status,
+ @Param("imei") String imei);
+
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..74d7bd1
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,123 @@
+
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.1.3.RELEASE
+
+
+ 4.0.0
+
+ com.casic.sensor
+ sensor-transfer
+ 1.0-SNAPSHOT
+ war
+
+
+ UTF-8
+ UTF-8
+ 1.8
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-tomcat
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.1.3.RELEASE
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-jdbc
+ 2.1.3.RELEASE
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+ compile
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+ org.postgresql
+ postgresql
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+
+ com.alibaba
+ druid
+ 1.2.6
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/build/package.xml b/src/main/build/package.xml
new file mode 100644
index 0000000..96d895e
--- /dev/null
+++ b/src/main/build/package.xml
@@ -0,0 +1,43 @@
+
+
+ package
+
+ zip
+ tar.gz
+
+ true
+
+
+
+ true
+ true
+ lib
+ runtime
+
+
+
+
+ src/main/build/bin
+
+ start.bat
+ start.sh
+
+ true
+ 0744
+ /
+
+
+ src/main/resources/config
+ true
+
+ *.yml
+ /*/*
+
+ /config
+
+
+ src/main/resources/i18n
+ /
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..c55e37d
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,25 @@
+package com.casic;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.ServletComponentScan;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.context.annotation.ComponentScan;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author cz
+ * @Date 2022/06/20 14:28
+ */
+
+@Slf4j
+@ComponentScan(basePackages= "com.casic.**")
+@SpringBootApplication
+public class CasicApplication {
+ public static void main(String[] args) {
+ log.info("CasicApplication is success!");
+ SpringApplication.run(CasicApplication.class, args);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java
new file mode 100644
index 0000000..653db64
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceController.java
@@ -0,0 +1,32 @@
+package com.casic.controller;
+
+import com.casic.model.*;
+import com.casic.service.DeviceService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+@RestController
+@RequestMapping("/device")
+public class DeviceController {
+
+
+ private final DeviceService deviceService;
+
+ public DeviceController(DeviceService deviceService) {
+ this.deviceService = deviceService;
+ }
+
+ @RequestMapping("/helloWord")
+ public ResponseData helloWord() {
+ return deviceService.testMysql();
+ }
+
+ @PostMapping("/online")
+ public ResponseData DeviceOnline(@RequestBody DeviceOnlineParam onlineParam) {
+ return deviceService.onlineStatusByImei(onlineParam.getEventType(),onlineParam.getImei());
+ }
+
+}
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
new file mode 100644
index 0000000..e5351c9
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -0,0 +1,37 @@
+package com.casic.controller;
+
+import com.casic.model.DataReportParam;
+import com.casic.model.HeartbeatParam;
+import com.casic.model.ResponseData;
+import com.casic.service.DeviceDataService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RequestMapping("/data")
+@RestController
+public class DeviceDataController {
+
+ private final DeviceDataService dataService;
+
+ public DeviceDataController(DeviceDataService dataService) {
+ this.dataService = dataService;
+ }
+
+ @PostMapping("/commit")
+ public ResponseData DeviceDataCommit(@RequestBody DataReportParam dataReportParam) {
+ return dataService.DeviceDataCommit(dataReportParam);
+ }
+
+ @PostMapping("/heartbeat")
+ public ResponseData heartBeat(@RequestBody HeartbeatParam heartbeatParam) {
+ return dataService.heartBeatSave(heartbeatParam);
+ }
+
+ @PostMapping("/gas/receiver")
+ public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
+ return dataService.heartBeatSave(heartbeatParam);
+ }
+
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
new file mode 100644
index 0000000..47e7cce
--- /dev/null
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -0,0 +1,9 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.DataGasReport;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface DataGasMapper extends BaseMapper {
+}
diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java
new file mode 100644
index 0000000..a550aa3
--- /dev/null
+++ b/src/main/java/com/casic/dao/DeviceMapper.java
@@ -0,0 +1,23 @@
+package com.casic.dao;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.HashMap;
+
+@Mapper
+public interface DeviceMapper {
+
+ /**
+ * @param status 设备在线状态 1-0
+ * @param imei 设备唯一识别编号
+ * @return
+ */
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{status} " +
+ "WHERE DEVCODE=#{imei} ")
+ Integer onlineStatusByImei(@Param("status") String status,
+ @Param("imei") String imei);
+
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
new file mode 100644
index 0000000..c797e55
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
@@ -0,0 +1,68 @@
+package com.casic.dao.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.casic.dao.DataGasMapper;
+import com.casic.entity.DataGasReport;
+import com.casic.model.DataReportParam;
+import com.casic.model.HeartbeatParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.management.Query;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.DateTimeException;
+import java.util.*;
+
+@Slf4j
+@Component
+public class DeviceDataMapper {
+ @Autowired
+ DataGasMapper dataGasMapper;
+
+ public int addDeviceData(DataReportParam dataReportParam) {
+ DataGasReport dataGasReport = new DataGasReport();
+ dataGasReport.setImei(dataReportParam.getIMEI());
+ dataGasReport.setImsi(dataReportParam.getIMSI());
+ try {
+ dataGasReport.setUptime(new Date(Long.valueOf(dataReportParam.getTimestamp())));
+ } catch (DateTimeException dex) {
+ log.error("主题,日期转换出错,时间戳为{},异常信息为{}", dataReportParam.getTimestamp(), dex);
+ }
+ dataGasReport.setGasSampleValue(dataReportParam.getPayload().get("gas_sensor_state").toString());
+ dataGasReport.setGasSensorState(dataReportParam.getPayload().get("gas_sample_value").toString());
+ dataGasReport.setLogtime(new Date());
+ return dataGasMapper.insert(dataGasReport);
+ }
+
+ public int editDeviceData(HeartbeatParam heartbeatParam) {
+ DataGasReport dataGasReport = new DataGasReport();
+ dataGasReport.setImei(heartbeatParam.getIMEI());
+ dataGasReport.setImsi(heartbeatParam.getIMSI());
+ //电池电压-电池点亮
+ dataGasReport.setBatteryVoltage(heartbeatParam.getBattery_voltage());
+ dataGasReport.setBatteryValue(heartbeatParam.getBattery_value());
+ //
+ dataGasReport.setCellId(heartbeatParam.getCell_id());
+ dataGasReport.setIccid(heartbeatParam.getICCID());
+ //噪音、接收功率、小区标识
+ dataGasReport.setPci(heartbeatParam.getPci());
+ dataGasReport.setRsrp(heartbeatParam.getRsrp());
+ dataGasReport.setSinr(heartbeatParam.getSinr());
+ dataGasReport.setHeartbeatTime(heartbeatParam.getHeartbeat_time());
+ QueryWrapper queryWrapper = new QueryWrapper()
+ .eq("DEVCODE", heartbeatParam.getIMEI())
+ .orderByDesc("LOGTIME").last("limit 1");
+ List dataGasReportList = dataGasMapper.selectList(queryWrapper);
+ if (dataGasReportList.size() == 0) {
+ return 0;
+ } else {
+ dataGasReport.setId(dataGasReportList.get(0).getId());
+ }
+ return dataGasMapper.updateById(dataGasReport);
+ }
+
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..74d7bd1
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,123 @@
+
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.1.3.RELEASE
+
+
+ 4.0.0
+
+ com.casic.sensor
+ sensor-transfer
+ 1.0-SNAPSHOT
+ war
+
+
+ UTF-8
+ UTF-8
+ 1.8
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-tomcat
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.1.3.RELEASE
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-jdbc
+ 2.1.3.RELEASE
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+ compile
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+ org.postgresql
+ postgresql
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+
+ com.alibaba
+ druid
+ 1.2.6
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/build/package.xml b/src/main/build/package.xml
new file mode 100644
index 0000000..96d895e
--- /dev/null
+++ b/src/main/build/package.xml
@@ -0,0 +1,43 @@
+
+
+ package
+
+ zip
+ tar.gz
+
+ true
+
+
+
+ true
+ true
+ lib
+ runtime
+
+
+
+
+ src/main/build/bin
+
+ start.bat
+ start.sh
+
+ true
+ 0744
+ /
+
+
+ src/main/resources/config
+ true
+
+ *.yml
+ /*/*
+
+ /config
+
+
+ src/main/resources/i18n
+ /
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..c55e37d
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,25 @@
+package com.casic;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.ServletComponentScan;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.context.annotation.ComponentScan;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author cz
+ * @Date 2022/06/20 14:28
+ */
+
+@Slf4j
+@ComponentScan(basePackages= "com.casic.**")
+@SpringBootApplication
+public class CasicApplication {
+ public static void main(String[] args) {
+ log.info("CasicApplication is success!");
+ SpringApplication.run(CasicApplication.class, args);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java
new file mode 100644
index 0000000..653db64
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceController.java
@@ -0,0 +1,32 @@
+package com.casic.controller;
+
+import com.casic.model.*;
+import com.casic.service.DeviceService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+@RestController
+@RequestMapping("/device")
+public class DeviceController {
+
+
+ private final DeviceService deviceService;
+
+ public DeviceController(DeviceService deviceService) {
+ this.deviceService = deviceService;
+ }
+
+ @RequestMapping("/helloWord")
+ public ResponseData helloWord() {
+ return deviceService.testMysql();
+ }
+
+ @PostMapping("/online")
+ public ResponseData DeviceOnline(@RequestBody DeviceOnlineParam onlineParam) {
+ return deviceService.onlineStatusByImei(onlineParam.getEventType(),onlineParam.getImei());
+ }
+
+}
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
new file mode 100644
index 0000000..e5351c9
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -0,0 +1,37 @@
+package com.casic.controller;
+
+import com.casic.model.DataReportParam;
+import com.casic.model.HeartbeatParam;
+import com.casic.model.ResponseData;
+import com.casic.service.DeviceDataService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RequestMapping("/data")
+@RestController
+public class DeviceDataController {
+
+ private final DeviceDataService dataService;
+
+ public DeviceDataController(DeviceDataService dataService) {
+ this.dataService = dataService;
+ }
+
+ @PostMapping("/commit")
+ public ResponseData DeviceDataCommit(@RequestBody DataReportParam dataReportParam) {
+ return dataService.DeviceDataCommit(dataReportParam);
+ }
+
+ @PostMapping("/heartbeat")
+ public ResponseData heartBeat(@RequestBody HeartbeatParam heartbeatParam) {
+ return dataService.heartBeatSave(heartbeatParam);
+ }
+
+ @PostMapping("/gas/receiver")
+ public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
+ return dataService.heartBeatSave(heartbeatParam);
+ }
+
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
new file mode 100644
index 0000000..47e7cce
--- /dev/null
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -0,0 +1,9 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.DataGasReport;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface DataGasMapper extends BaseMapper {
+}
diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java
new file mode 100644
index 0000000..a550aa3
--- /dev/null
+++ b/src/main/java/com/casic/dao/DeviceMapper.java
@@ -0,0 +1,23 @@
+package com.casic.dao;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.HashMap;
+
+@Mapper
+public interface DeviceMapper {
+
+ /**
+ * @param status 设备在线状态 1-0
+ * @param imei 设备唯一识别编号
+ * @return
+ */
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{status} " +
+ "WHERE DEVCODE=#{imei} ")
+ Integer onlineStatusByImei(@Param("status") String status,
+ @Param("imei") String imei);
+
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
new file mode 100644
index 0000000..c797e55
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
@@ -0,0 +1,68 @@
+package com.casic.dao.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.casic.dao.DataGasMapper;
+import com.casic.entity.DataGasReport;
+import com.casic.model.DataReportParam;
+import com.casic.model.HeartbeatParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.management.Query;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.DateTimeException;
+import java.util.*;
+
+@Slf4j
+@Component
+public class DeviceDataMapper {
+ @Autowired
+ DataGasMapper dataGasMapper;
+
+ public int addDeviceData(DataReportParam dataReportParam) {
+ DataGasReport dataGasReport = new DataGasReport();
+ dataGasReport.setImei(dataReportParam.getIMEI());
+ dataGasReport.setImsi(dataReportParam.getIMSI());
+ try {
+ dataGasReport.setUptime(new Date(Long.valueOf(dataReportParam.getTimestamp())));
+ } catch (DateTimeException dex) {
+ log.error("主题,日期转换出错,时间戳为{},异常信息为{}", dataReportParam.getTimestamp(), dex);
+ }
+ dataGasReport.setGasSampleValue(dataReportParam.getPayload().get("gas_sensor_state").toString());
+ dataGasReport.setGasSensorState(dataReportParam.getPayload().get("gas_sample_value").toString());
+ dataGasReport.setLogtime(new Date());
+ return dataGasMapper.insert(dataGasReport);
+ }
+
+ public int editDeviceData(HeartbeatParam heartbeatParam) {
+ DataGasReport dataGasReport = new DataGasReport();
+ dataGasReport.setImei(heartbeatParam.getIMEI());
+ dataGasReport.setImsi(heartbeatParam.getIMSI());
+ //电池电压-电池点亮
+ dataGasReport.setBatteryVoltage(heartbeatParam.getBattery_voltage());
+ dataGasReport.setBatteryValue(heartbeatParam.getBattery_value());
+ //
+ dataGasReport.setCellId(heartbeatParam.getCell_id());
+ dataGasReport.setIccid(heartbeatParam.getICCID());
+ //噪音、接收功率、小区标识
+ dataGasReport.setPci(heartbeatParam.getPci());
+ dataGasReport.setRsrp(heartbeatParam.getRsrp());
+ dataGasReport.setSinr(heartbeatParam.getSinr());
+ dataGasReport.setHeartbeatTime(heartbeatParam.getHeartbeat_time());
+ QueryWrapper queryWrapper = new QueryWrapper()
+ .eq("DEVCODE", heartbeatParam.getIMEI())
+ .orderByDesc("LOGTIME").last("limit 1");
+ List dataGasReportList = dataGasMapper.selectList(queryWrapper);
+ if (dataGasReportList.size() == 0) {
+ return 0;
+ } else {
+ dataGasReport.setId(dataGasReportList.get(0).getId());
+ }
+ return dataGasMapper.updateById(dataGasReport);
+ }
+
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
new file mode 100644
index 0000000..c43ccdf
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasReport.java
@@ -0,0 +1,69 @@
+package com.casic.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author cz
+ * @date 2022-7-1
+ */
+@Data
+@TableName("data_gas_dector")
+public class DataGasReport {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @TableField("devcode")
+ private String imei;
+ private String wellcode;
+
+ private String imsi;
+ /**
+ * --事件类型 0正常 1低报 2高报
+ */
+ private String gasSensorState;
+ /**
+ * --浓度值
+ */
+ private String gasSampleValue;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ /**
+ * --心跳周期
+ */
+ private String heartbeatTime;
+
+ /**
+ * --小区位置信息
+ */
+ private String cellId;
+ /**
+ * --电池电压
+ */
+ private String batteryVoltage;
+ /**
+ * --电池电量
+ */
+ private String batteryValue;
+ private String iccid;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..74d7bd1
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,123 @@
+
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.1.3.RELEASE
+
+
+ 4.0.0
+
+ com.casic.sensor
+ sensor-transfer
+ 1.0-SNAPSHOT
+ war
+
+
+ UTF-8
+ UTF-8
+ 1.8
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-tomcat
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.1.3.RELEASE
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-jdbc
+ 2.1.3.RELEASE
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+ compile
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+ org.postgresql
+ postgresql
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+
+ com.alibaba
+ druid
+ 1.2.6
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/build/package.xml b/src/main/build/package.xml
new file mode 100644
index 0000000..96d895e
--- /dev/null
+++ b/src/main/build/package.xml
@@ -0,0 +1,43 @@
+
+
+ package
+
+ zip
+ tar.gz
+
+ true
+
+
+
+ true
+ true
+ lib
+ runtime
+
+
+
+
+ src/main/build/bin
+
+ start.bat
+ start.sh
+
+ true
+ 0744
+ /
+
+
+ src/main/resources/config
+ true
+
+ *.yml
+ /*/*
+
+ /config
+
+
+ src/main/resources/i18n
+ /
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..c55e37d
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,25 @@
+package com.casic;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.ServletComponentScan;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.context.annotation.ComponentScan;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author cz
+ * @Date 2022/06/20 14:28
+ */
+
+@Slf4j
+@ComponentScan(basePackages= "com.casic.**")
+@SpringBootApplication
+public class CasicApplication {
+ public static void main(String[] args) {
+ log.info("CasicApplication is success!");
+ SpringApplication.run(CasicApplication.class, args);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java
new file mode 100644
index 0000000..653db64
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceController.java
@@ -0,0 +1,32 @@
+package com.casic.controller;
+
+import com.casic.model.*;
+import com.casic.service.DeviceService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+@RestController
+@RequestMapping("/device")
+public class DeviceController {
+
+
+ private final DeviceService deviceService;
+
+ public DeviceController(DeviceService deviceService) {
+ this.deviceService = deviceService;
+ }
+
+ @RequestMapping("/helloWord")
+ public ResponseData helloWord() {
+ return deviceService.testMysql();
+ }
+
+ @PostMapping("/online")
+ public ResponseData DeviceOnline(@RequestBody DeviceOnlineParam onlineParam) {
+ return deviceService.onlineStatusByImei(onlineParam.getEventType(),onlineParam.getImei());
+ }
+
+}
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
new file mode 100644
index 0000000..e5351c9
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -0,0 +1,37 @@
+package com.casic.controller;
+
+import com.casic.model.DataReportParam;
+import com.casic.model.HeartbeatParam;
+import com.casic.model.ResponseData;
+import com.casic.service.DeviceDataService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RequestMapping("/data")
+@RestController
+public class DeviceDataController {
+
+ private final DeviceDataService dataService;
+
+ public DeviceDataController(DeviceDataService dataService) {
+ this.dataService = dataService;
+ }
+
+ @PostMapping("/commit")
+ public ResponseData DeviceDataCommit(@RequestBody DataReportParam dataReportParam) {
+ return dataService.DeviceDataCommit(dataReportParam);
+ }
+
+ @PostMapping("/heartbeat")
+ public ResponseData heartBeat(@RequestBody HeartbeatParam heartbeatParam) {
+ return dataService.heartBeatSave(heartbeatParam);
+ }
+
+ @PostMapping("/gas/receiver")
+ public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
+ return dataService.heartBeatSave(heartbeatParam);
+ }
+
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
new file mode 100644
index 0000000..47e7cce
--- /dev/null
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -0,0 +1,9 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.DataGasReport;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface DataGasMapper extends BaseMapper {
+}
diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java
new file mode 100644
index 0000000..a550aa3
--- /dev/null
+++ b/src/main/java/com/casic/dao/DeviceMapper.java
@@ -0,0 +1,23 @@
+package com.casic.dao;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.HashMap;
+
+@Mapper
+public interface DeviceMapper {
+
+ /**
+ * @param status 设备在线状态 1-0
+ * @param imei 设备唯一识别编号
+ * @return
+ */
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{status} " +
+ "WHERE DEVCODE=#{imei} ")
+ Integer onlineStatusByImei(@Param("status") String status,
+ @Param("imei") String imei);
+
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
new file mode 100644
index 0000000..c797e55
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
@@ -0,0 +1,68 @@
+package com.casic.dao.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.casic.dao.DataGasMapper;
+import com.casic.entity.DataGasReport;
+import com.casic.model.DataReportParam;
+import com.casic.model.HeartbeatParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.management.Query;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.DateTimeException;
+import java.util.*;
+
+@Slf4j
+@Component
+public class DeviceDataMapper {
+ @Autowired
+ DataGasMapper dataGasMapper;
+
+ public int addDeviceData(DataReportParam dataReportParam) {
+ DataGasReport dataGasReport = new DataGasReport();
+ dataGasReport.setImei(dataReportParam.getIMEI());
+ dataGasReport.setImsi(dataReportParam.getIMSI());
+ try {
+ dataGasReport.setUptime(new Date(Long.valueOf(dataReportParam.getTimestamp())));
+ } catch (DateTimeException dex) {
+ log.error("主题,日期转换出错,时间戳为{},异常信息为{}", dataReportParam.getTimestamp(), dex);
+ }
+ dataGasReport.setGasSampleValue(dataReportParam.getPayload().get("gas_sensor_state").toString());
+ dataGasReport.setGasSensorState(dataReportParam.getPayload().get("gas_sample_value").toString());
+ dataGasReport.setLogtime(new Date());
+ return dataGasMapper.insert(dataGasReport);
+ }
+
+ public int editDeviceData(HeartbeatParam heartbeatParam) {
+ DataGasReport dataGasReport = new DataGasReport();
+ dataGasReport.setImei(heartbeatParam.getIMEI());
+ dataGasReport.setImsi(heartbeatParam.getIMSI());
+ //电池电压-电池点亮
+ dataGasReport.setBatteryVoltage(heartbeatParam.getBattery_voltage());
+ dataGasReport.setBatteryValue(heartbeatParam.getBattery_value());
+ //
+ dataGasReport.setCellId(heartbeatParam.getCell_id());
+ dataGasReport.setIccid(heartbeatParam.getICCID());
+ //噪音、接收功率、小区标识
+ dataGasReport.setPci(heartbeatParam.getPci());
+ dataGasReport.setRsrp(heartbeatParam.getRsrp());
+ dataGasReport.setSinr(heartbeatParam.getSinr());
+ dataGasReport.setHeartbeatTime(heartbeatParam.getHeartbeat_time());
+ QueryWrapper queryWrapper = new QueryWrapper()
+ .eq("DEVCODE", heartbeatParam.getIMEI())
+ .orderByDesc("LOGTIME").last("limit 1");
+ List dataGasReportList = dataGasMapper.selectList(queryWrapper);
+ if (dataGasReportList.size() == 0) {
+ return 0;
+ } else {
+ dataGasReport.setId(dataGasReportList.get(0).getId());
+ }
+ return dataGasMapper.updateById(dataGasReport);
+ }
+
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
new file mode 100644
index 0000000..c43ccdf
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasReport.java
@@ -0,0 +1,69 @@
+package com.casic.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author cz
+ * @date 2022-7-1
+ */
+@Data
+@TableName("data_gas_dector")
+public class DataGasReport {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @TableField("devcode")
+ private String imei;
+ private String wellcode;
+
+ private String imsi;
+ /**
+ * --事件类型 0正常 1低报 2高报
+ */
+ private String gasSensorState;
+ /**
+ * --浓度值
+ */
+ private String gasSampleValue;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ /**
+ * --心跳周期
+ */
+ private String heartbeatTime;
+
+ /**
+ * --小区位置信息
+ */
+ private String cellId;
+ /**
+ * --电池电压
+ */
+ private String batteryVoltage;
+ /**
+ * --电池电量
+ */
+ private String batteryValue;
+ private String iccid;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/model/DataReportParam.java b/src/main/java/com/casic/model/DataReportParam.java
new file mode 100644
index 0000000..082814c
--- /dev/null
+++ b/src/main/java/com/casic/model/DataReportParam.java
@@ -0,0 +1,35 @@
+package com.casic.model;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.util.Map;
+
+/**
+ * @author cz
+ * @date 2022-7-1
+ */
+@Data
+public class DataReportParam {
+ private String upPacketSN;
+ private String upDataSN;
+ private String topic;
+ private String timestamp;
+ private String tenantId;
+ private String serviceId;
+ private String protocol;
+ private String productId;
+ /**
+ * gas_sensor_state = 1, --事件类型 0 正常 1 低报 2 高报
+ * gas_sample_value = 11-- 浓度值
+ */
+ private Map payload;
+ private String messageType;
+ private String deviceType;
+ private String deviceId;
+ private String assocAssetId;
+ @JsonProperty(value = "IMSI", required = true)
+ private String IMSI;
+ @JsonProperty(value = "IMEI", required = true)
+ private String IMEI;
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..74d7bd1
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,123 @@
+
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.1.3.RELEASE
+
+
+ 4.0.0
+
+ com.casic.sensor
+ sensor-transfer
+ 1.0-SNAPSHOT
+ war
+
+
+ UTF-8
+ UTF-8
+ 1.8
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-tomcat
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.1.3.RELEASE
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-jdbc
+ 2.1.3.RELEASE
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+ compile
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+ org.postgresql
+ postgresql
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+
+ com.alibaba
+ druid
+ 1.2.6
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/build/package.xml b/src/main/build/package.xml
new file mode 100644
index 0000000..96d895e
--- /dev/null
+++ b/src/main/build/package.xml
@@ -0,0 +1,43 @@
+
+
+ package
+
+ zip
+ tar.gz
+
+ true
+
+
+
+ true
+ true
+ lib
+ runtime
+
+
+
+
+ src/main/build/bin
+
+ start.bat
+ start.sh
+
+ true
+ 0744
+ /
+
+
+ src/main/resources/config
+ true
+
+ *.yml
+ /*/*
+
+ /config
+
+
+ src/main/resources/i18n
+ /
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..c55e37d
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,25 @@
+package com.casic;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.ServletComponentScan;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.context.annotation.ComponentScan;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author cz
+ * @Date 2022/06/20 14:28
+ */
+
+@Slf4j
+@ComponentScan(basePackages= "com.casic.**")
+@SpringBootApplication
+public class CasicApplication {
+ public static void main(String[] args) {
+ log.info("CasicApplication is success!");
+ SpringApplication.run(CasicApplication.class, args);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java
new file mode 100644
index 0000000..653db64
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceController.java
@@ -0,0 +1,32 @@
+package com.casic.controller;
+
+import com.casic.model.*;
+import com.casic.service.DeviceService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+@RestController
+@RequestMapping("/device")
+public class DeviceController {
+
+
+ private final DeviceService deviceService;
+
+ public DeviceController(DeviceService deviceService) {
+ this.deviceService = deviceService;
+ }
+
+ @RequestMapping("/helloWord")
+ public ResponseData helloWord() {
+ return deviceService.testMysql();
+ }
+
+ @PostMapping("/online")
+ public ResponseData DeviceOnline(@RequestBody DeviceOnlineParam onlineParam) {
+ return deviceService.onlineStatusByImei(onlineParam.getEventType(),onlineParam.getImei());
+ }
+
+}
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
new file mode 100644
index 0000000..e5351c9
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -0,0 +1,37 @@
+package com.casic.controller;
+
+import com.casic.model.DataReportParam;
+import com.casic.model.HeartbeatParam;
+import com.casic.model.ResponseData;
+import com.casic.service.DeviceDataService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RequestMapping("/data")
+@RestController
+public class DeviceDataController {
+
+ private final DeviceDataService dataService;
+
+ public DeviceDataController(DeviceDataService dataService) {
+ this.dataService = dataService;
+ }
+
+ @PostMapping("/commit")
+ public ResponseData DeviceDataCommit(@RequestBody DataReportParam dataReportParam) {
+ return dataService.DeviceDataCommit(dataReportParam);
+ }
+
+ @PostMapping("/heartbeat")
+ public ResponseData heartBeat(@RequestBody HeartbeatParam heartbeatParam) {
+ return dataService.heartBeatSave(heartbeatParam);
+ }
+
+ @PostMapping("/gas/receiver")
+ public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
+ return dataService.heartBeatSave(heartbeatParam);
+ }
+
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
new file mode 100644
index 0000000..47e7cce
--- /dev/null
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -0,0 +1,9 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.DataGasReport;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface DataGasMapper extends BaseMapper {
+}
diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java
new file mode 100644
index 0000000..a550aa3
--- /dev/null
+++ b/src/main/java/com/casic/dao/DeviceMapper.java
@@ -0,0 +1,23 @@
+package com.casic.dao;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.HashMap;
+
+@Mapper
+public interface DeviceMapper {
+
+ /**
+ * @param status 设备在线状态 1-0
+ * @param imei 设备唯一识别编号
+ * @return
+ */
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{status} " +
+ "WHERE DEVCODE=#{imei} ")
+ Integer onlineStatusByImei(@Param("status") String status,
+ @Param("imei") String imei);
+
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
new file mode 100644
index 0000000..c797e55
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
@@ -0,0 +1,68 @@
+package com.casic.dao.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.casic.dao.DataGasMapper;
+import com.casic.entity.DataGasReport;
+import com.casic.model.DataReportParam;
+import com.casic.model.HeartbeatParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.management.Query;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.DateTimeException;
+import java.util.*;
+
+@Slf4j
+@Component
+public class DeviceDataMapper {
+ @Autowired
+ DataGasMapper dataGasMapper;
+
+ public int addDeviceData(DataReportParam dataReportParam) {
+ DataGasReport dataGasReport = new DataGasReport();
+ dataGasReport.setImei(dataReportParam.getIMEI());
+ dataGasReport.setImsi(dataReportParam.getIMSI());
+ try {
+ dataGasReport.setUptime(new Date(Long.valueOf(dataReportParam.getTimestamp())));
+ } catch (DateTimeException dex) {
+ log.error("主题,日期转换出错,时间戳为{},异常信息为{}", dataReportParam.getTimestamp(), dex);
+ }
+ dataGasReport.setGasSampleValue(dataReportParam.getPayload().get("gas_sensor_state").toString());
+ dataGasReport.setGasSensorState(dataReportParam.getPayload().get("gas_sample_value").toString());
+ dataGasReport.setLogtime(new Date());
+ return dataGasMapper.insert(dataGasReport);
+ }
+
+ public int editDeviceData(HeartbeatParam heartbeatParam) {
+ DataGasReport dataGasReport = new DataGasReport();
+ dataGasReport.setImei(heartbeatParam.getIMEI());
+ dataGasReport.setImsi(heartbeatParam.getIMSI());
+ //电池电压-电池点亮
+ dataGasReport.setBatteryVoltage(heartbeatParam.getBattery_voltage());
+ dataGasReport.setBatteryValue(heartbeatParam.getBattery_value());
+ //
+ dataGasReport.setCellId(heartbeatParam.getCell_id());
+ dataGasReport.setIccid(heartbeatParam.getICCID());
+ //噪音、接收功率、小区标识
+ dataGasReport.setPci(heartbeatParam.getPci());
+ dataGasReport.setRsrp(heartbeatParam.getRsrp());
+ dataGasReport.setSinr(heartbeatParam.getSinr());
+ dataGasReport.setHeartbeatTime(heartbeatParam.getHeartbeat_time());
+ QueryWrapper queryWrapper = new QueryWrapper()
+ .eq("DEVCODE", heartbeatParam.getIMEI())
+ .orderByDesc("LOGTIME").last("limit 1");
+ List dataGasReportList = dataGasMapper.selectList(queryWrapper);
+ if (dataGasReportList.size() == 0) {
+ return 0;
+ } else {
+ dataGasReport.setId(dataGasReportList.get(0).getId());
+ }
+ return dataGasMapper.updateById(dataGasReport);
+ }
+
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
new file mode 100644
index 0000000..c43ccdf
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasReport.java
@@ -0,0 +1,69 @@
+package com.casic.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author cz
+ * @date 2022-7-1
+ */
+@Data
+@TableName("data_gas_dector")
+public class DataGasReport {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @TableField("devcode")
+ private String imei;
+ private String wellcode;
+
+ private String imsi;
+ /**
+ * --事件类型 0正常 1低报 2高报
+ */
+ private String gasSensorState;
+ /**
+ * --浓度值
+ */
+ private String gasSampleValue;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ /**
+ * --心跳周期
+ */
+ private String heartbeatTime;
+
+ /**
+ * --小区位置信息
+ */
+ private String cellId;
+ /**
+ * --电池电压
+ */
+ private String batteryVoltage;
+ /**
+ * --电池电量
+ */
+ private String batteryValue;
+ private String iccid;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/model/DataReportParam.java b/src/main/java/com/casic/model/DataReportParam.java
new file mode 100644
index 0000000..082814c
--- /dev/null
+++ b/src/main/java/com/casic/model/DataReportParam.java
@@ -0,0 +1,35 @@
+package com.casic.model;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.util.Map;
+
+/**
+ * @author cz
+ * @date 2022-7-1
+ */
+@Data
+public class DataReportParam {
+ private String upPacketSN;
+ private String upDataSN;
+ private String topic;
+ private String timestamp;
+ private String tenantId;
+ private String serviceId;
+ private String protocol;
+ private String productId;
+ /**
+ * gas_sensor_state = 1, --事件类型 0 正常 1 低报 2 高报
+ * gas_sample_value = 11-- 浓度值
+ */
+ private Map payload;
+ private String messageType;
+ private String deviceType;
+ private String deviceId;
+ private String assocAssetId;
+ @JsonProperty(value = "IMSI", required = true)
+ private String IMSI;
+ @JsonProperty(value = "IMEI", required = true)
+ private String IMEI;
+}
diff --git a/src/main/java/com/casic/model/DeviceOnlineParam.java b/src/main/java/com/casic/model/DeviceOnlineParam.java
new file mode 100644
index 0000000..b92e44d
--- /dev/null
+++ b/src/main/java/com/casic/model/DeviceOnlineParam.java
@@ -0,0 +1,43 @@
+package com.casic.model;
+
+import lombok.Data;
+
+/**
+ * @author cz
+ * @date 2022-07-01
+ */
+@Data
+public class DeviceOnlineParam {
+ /**
+ * 毫秒值
+ */
+ private String timestamp;
+ /**
+ * Ctwing租户id
+ */
+ private String tenantId;
+ /**
+ * 通信协议
+ */
+ private String protocol;
+ /**
+ * 产品id
+ */
+ private String productId;
+ /**
+ * 消息类型
+ */
+ private String messageType;
+ /**
+ * 事件类型 1上线 0下线
+ */
+ private String eventType;
+ /**
+ * 设备ID
+ */
+ private String deviceId;
+ /**
+ * 设备编号
+ */
+ private String imei;
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..74d7bd1
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,123 @@
+
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.1.3.RELEASE
+
+
+ 4.0.0
+
+ com.casic.sensor
+ sensor-transfer
+ 1.0-SNAPSHOT
+ war
+
+
+ UTF-8
+ UTF-8
+ 1.8
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-tomcat
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.1.3.RELEASE
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-jdbc
+ 2.1.3.RELEASE
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+ compile
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+ org.postgresql
+ postgresql
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+
+ com.alibaba
+ druid
+ 1.2.6
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/build/package.xml b/src/main/build/package.xml
new file mode 100644
index 0000000..96d895e
--- /dev/null
+++ b/src/main/build/package.xml
@@ -0,0 +1,43 @@
+
+
+ package
+
+ zip
+ tar.gz
+
+ true
+
+
+
+ true
+ true
+ lib
+ runtime
+
+
+
+
+ src/main/build/bin
+
+ start.bat
+ start.sh
+
+ true
+ 0744
+ /
+
+
+ src/main/resources/config
+ true
+
+ *.yml
+ /*/*
+
+ /config
+
+
+ src/main/resources/i18n
+ /
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..c55e37d
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,25 @@
+package com.casic;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.ServletComponentScan;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.context.annotation.ComponentScan;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author cz
+ * @Date 2022/06/20 14:28
+ */
+
+@Slf4j
+@ComponentScan(basePackages= "com.casic.**")
+@SpringBootApplication
+public class CasicApplication {
+ public static void main(String[] args) {
+ log.info("CasicApplication is success!");
+ SpringApplication.run(CasicApplication.class, args);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java
new file mode 100644
index 0000000..653db64
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceController.java
@@ -0,0 +1,32 @@
+package com.casic.controller;
+
+import com.casic.model.*;
+import com.casic.service.DeviceService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+@RestController
+@RequestMapping("/device")
+public class DeviceController {
+
+
+ private final DeviceService deviceService;
+
+ public DeviceController(DeviceService deviceService) {
+ this.deviceService = deviceService;
+ }
+
+ @RequestMapping("/helloWord")
+ public ResponseData helloWord() {
+ return deviceService.testMysql();
+ }
+
+ @PostMapping("/online")
+ public ResponseData DeviceOnline(@RequestBody DeviceOnlineParam onlineParam) {
+ return deviceService.onlineStatusByImei(onlineParam.getEventType(),onlineParam.getImei());
+ }
+
+}
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
new file mode 100644
index 0000000..e5351c9
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -0,0 +1,37 @@
+package com.casic.controller;
+
+import com.casic.model.DataReportParam;
+import com.casic.model.HeartbeatParam;
+import com.casic.model.ResponseData;
+import com.casic.service.DeviceDataService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RequestMapping("/data")
+@RestController
+public class DeviceDataController {
+
+ private final DeviceDataService dataService;
+
+ public DeviceDataController(DeviceDataService dataService) {
+ this.dataService = dataService;
+ }
+
+ @PostMapping("/commit")
+ public ResponseData DeviceDataCommit(@RequestBody DataReportParam dataReportParam) {
+ return dataService.DeviceDataCommit(dataReportParam);
+ }
+
+ @PostMapping("/heartbeat")
+ public ResponseData heartBeat(@RequestBody HeartbeatParam heartbeatParam) {
+ return dataService.heartBeatSave(heartbeatParam);
+ }
+
+ @PostMapping("/gas/receiver")
+ public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
+ return dataService.heartBeatSave(heartbeatParam);
+ }
+
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
new file mode 100644
index 0000000..47e7cce
--- /dev/null
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -0,0 +1,9 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.DataGasReport;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface DataGasMapper extends BaseMapper {
+}
diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java
new file mode 100644
index 0000000..a550aa3
--- /dev/null
+++ b/src/main/java/com/casic/dao/DeviceMapper.java
@@ -0,0 +1,23 @@
+package com.casic.dao;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.HashMap;
+
+@Mapper
+public interface DeviceMapper {
+
+ /**
+ * @param status 设备在线状态 1-0
+ * @param imei 设备唯一识别编号
+ * @return
+ */
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{status} " +
+ "WHERE DEVCODE=#{imei} ")
+ Integer onlineStatusByImei(@Param("status") String status,
+ @Param("imei") String imei);
+
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
new file mode 100644
index 0000000..c797e55
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
@@ -0,0 +1,68 @@
+package com.casic.dao.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.casic.dao.DataGasMapper;
+import com.casic.entity.DataGasReport;
+import com.casic.model.DataReportParam;
+import com.casic.model.HeartbeatParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.management.Query;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.DateTimeException;
+import java.util.*;
+
+@Slf4j
+@Component
+public class DeviceDataMapper {
+ @Autowired
+ DataGasMapper dataGasMapper;
+
+ public int addDeviceData(DataReportParam dataReportParam) {
+ DataGasReport dataGasReport = new DataGasReport();
+ dataGasReport.setImei(dataReportParam.getIMEI());
+ dataGasReport.setImsi(dataReportParam.getIMSI());
+ try {
+ dataGasReport.setUptime(new Date(Long.valueOf(dataReportParam.getTimestamp())));
+ } catch (DateTimeException dex) {
+ log.error("主题,日期转换出错,时间戳为{},异常信息为{}", dataReportParam.getTimestamp(), dex);
+ }
+ dataGasReport.setGasSampleValue(dataReportParam.getPayload().get("gas_sensor_state").toString());
+ dataGasReport.setGasSensorState(dataReportParam.getPayload().get("gas_sample_value").toString());
+ dataGasReport.setLogtime(new Date());
+ return dataGasMapper.insert(dataGasReport);
+ }
+
+ public int editDeviceData(HeartbeatParam heartbeatParam) {
+ DataGasReport dataGasReport = new DataGasReport();
+ dataGasReport.setImei(heartbeatParam.getIMEI());
+ dataGasReport.setImsi(heartbeatParam.getIMSI());
+ //电池电压-电池点亮
+ dataGasReport.setBatteryVoltage(heartbeatParam.getBattery_voltage());
+ dataGasReport.setBatteryValue(heartbeatParam.getBattery_value());
+ //
+ dataGasReport.setCellId(heartbeatParam.getCell_id());
+ dataGasReport.setIccid(heartbeatParam.getICCID());
+ //噪音、接收功率、小区标识
+ dataGasReport.setPci(heartbeatParam.getPci());
+ dataGasReport.setRsrp(heartbeatParam.getRsrp());
+ dataGasReport.setSinr(heartbeatParam.getSinr());
+ dataGasReport.setHeartbeatTime(heartbeatParam.getHeartbeat_time());
+ QueryWrapper queryWrapper = new QueryWrapper()
+ .eq("DEVCODE", heartbeatParam.getIMEI())
+ .orderByDesc("LOGTIME").last("limit 1");
+ List dataGasReportList = dataGasMapper.selectList(queryWrapper);
+ if (dataGasReportList.size() == 0) {
+ return 0;
+ } else {
+ dataGasReport.setId(dataGasReportList.get(0).getId());
+ }
+ return dataGasMapper.updateById(dataGasReport);
+ }
+
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
new file mode 100644
index 0000000..c43ccdf
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasReport.java
@@ -0,0 +1,69 @@
+package com.casic.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author cz
+ * @date 2022-7-1
+ */
+@Data
+@TableName("data_gas_dector")
+public class DataGasReport {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @TableField("devcode")
+ private String imei;
+ private String wellcode;
+
+ private String imsi;
+ /**
+ * --事件类型 0正常 1低报 2高报
+ */
+ private String gasSensorState;
+ /**
+ * --浓度值
+ */
+ private String gasSampleValue;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ /**
+ * --心跳周期
+ */
+ private String heartbeatTime;
+
+ /**
+ * --小区位置信息
+ */
+ private String cellId;
+ /**
+ * --电池电压
+ */
+ private String batteryVoltage;
+ /**
+ * --电池电量
+ */
+ private String batteryValue;
+ private String iccid;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/model/DataReportParam.java b/src/main/java/com/casic/model/DataReportParam.java
new file mode 100644
index 0000000..082814c
--- /dev/null
+++ b/src/main/java/com/casic/model/DataReportParam.java
@@ -0,0 +1,35 @@
+package com.casic.model;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.util.Map;
+
+/**
+ * @author cz
+ * @date 2022-7-1
+ */
+@Data
+public class DataReportParam {
+ private String upPacketSN;
+ private String upDataSN;
+ private String topic;
+ private String timestamp;
+ private String tenantId;
+ private String serviceId;
+ private String protocol;
+ private String productId;
+ /**
+ * gas_sensor_state = 1, --事件类型 0 正常 1 低报 2 高报
+ * gas_sample_value = 11-- 浓度值
+ */
+ private Map payload;
+ private String messageType;
+ private String deviceType;
+ private String deviceId;
+ private String assocAssetId;
+ @JsonProperty(value = "IMSI", required = true)
+ private String IMSI;
+ @JsonProperty(value = "IMEI", required = true)
+ private String IMEI;
+}
diff --git a/src/main/java/com/casic/model/DeviceOnlineParam.java b/src/main/java/com/casic/model/DeviceOnlineParam.java
new file mode 100644
index 0000000..b92e44d
--- /dev/null
+++ b/src/main/java/com/casic/model/DeviceOnlineParam.java
@@ -0,0 +1,43 @@
+package com.casic.model;
+
+import lombok.Data;
+
+/**
+ * @author cz
+ * @date 2022-07-01
+ */
+@Data
+public class DeviceOnlineParam {
+ /**
+ * 毫秒值
+ */
+ private String timestamp;
+ /**
+ * Ctwing租户id
+ */
+ private String tenantId;
+ /**
+ * 通信协议
+ */
+ private String protocol;
+ /**
+ * 产品id
+ */
+ private String productId;
+ /**
+ * 消息类型
+ */
+ private String messageType;
+ /**
+ * 事件类型 1上线 0下线
+ */
+ private String eventType;
+ /**
+ * 设备ID
+ */
+ private String deviceId;
+ /**
+ * 设备编号
+ */
+ private String imei;
+}
diff --git a/src/main/java/com/casic/model/HeartbeatParam.java b/src/main/java/com/casic/model/HeartbeatParam.java
new file mode 100644
index 0000000..8ff029d
--- /dev/null
+++ b/src/main/java/com/casic/model/HeartbeatParam.java
@@ -0,0 +1,75 @@
+package com.casic.model;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+/**
+ * @author cz
+ * @date 2022-7-1
+ */
+@Data
+public class HeartbeatParam {
+
+ /**
+ * 终端型号
+ */
+ private String terminal_type;
+ /**
+ * 软件版本
+ */
+ private String software_version;
+ /**
+ * 信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * 参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * 物理小区标识
+ */
+ private String pci;
+ /**
+ * 厂家名称
+ */
+ private String manufacturer_name;
+ /**
+ * 心跳周期
+ */
+ private String heartbeat_time;
+ /**
+ * 硬件版本
+ */
+ private String hardware_version;
+ /**
+ * 无线信号覆盖等级
+ */
+ private String ecl;
+ /**
+ * 小区位置信息
+ */
+ private String cell_id;
+ /**
+ * 电池电压
+ */
+ private String battery_voltage;
+ /**
+ * 电池电量
+ */
+ private String battery_value;
+ /**
+ * IMSI
+ */
+ @JsonProperty(value = "IMSI",required = true)
+ private String IMSI;
+ /**
+ * imei
+ */
+ @JsonProperty(value = "IMEI",required = true)
+ private String IMEI;
+ /**
+ * ICCID
+ */
+ private String ICCID;
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..74d7bd1
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,123 @@
+
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.1.3.RELEASE
+
+
+ 4.0.0
+
+ com.casic.sensor
+ sensor-transfer
+ 1.0-SNAPSHOT
+ war
+
+
+ UTF-8
+ UTF-8
+ 1.8
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-tomcat
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.1.3.RELEASE
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-jdbc
+ 2.1.3.RELEASE
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+ compile
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+ org.postgresql
+ postgresql
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+
+ com.alibaba
+ druid
+ 1.2.6
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/build/package.xml b/src/main/build/package.xml
new file mode 100644
index 0000000..96d895e
--- /dev/null
+++ b/src/main/build/package.xml
@@ -0,0 +1,43 @@
+
+
+ package
+
+ zip
+ tar.gz
+
+ true
+
+
+
+ true
+ true
+ lib
+ runtime
+
+
+
+
+ src/main/build/bin
+
+ start.bat
+ start.sh
+
+ true
+ 0744
+ /
+
+
+ src/main/resources/config
+ true
+
+ *.yml
+ /*/*
+
+ /config
+
+
+ src/main/resources/i18n
+ /
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..c55e37d
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,25 @@
+package com.casic;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.ServletComponentScan;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.context.annotation.ComponentScan;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author cz
+ * @Date 2022/06/20 14:28
+ */
+
+@Slf4j
+@ComponentScan(basePackages= "com.casic.**")
+@SpringBootApplication
+public class CasicApplication {
+ public static void main(String[] args) {
+ log.info("CasicApplication is success!");
+ SpringApplication.run(CasicApplication.class, args);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java
new file mode 100644
index 0000000..653db64
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceController.java
@@ -0,0 +1,32 @@
+package com.casic.controller;
+
+import com.casic.model.*;
+import com.casic.service.DeviceService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+@RestController
+@RequestMapping("/device")
+public class DeviceController {
+
+
+ private final DeviceService deviceService;
+
+ public DeviceController(DeviceService deviceService) {
+ this.deviceService = deviceService;
+ }
+
+ @RequestMapping("/helloWord")
+ public ResponseData helloWord() {
+ return deviceService.testMysql();
+ }
+
+ @PostMapping("/online")
+ public ResponseData DeviceOnline(@RequestBody DeviceOnlineParam onlineParam) {
+ return deviceService.onlineStatusByImei(onlineParam.getEventType(),onlineParam.getImei());
+ }
+
+}
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
new file mode 100644
index 0000000..e5351c9
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -0,0 +1,37 @@
+package com.casic.controller;
+
+import com.casic.model.DataReportParam;
+import com.casic.model.HeartbeatParam;
+import com.casic.model.ResponseData;
+import com.casic.service.DeviceDataService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RequestMapping("/data")
+@RestController
+public class DeviceDataController {
+
+ private final DeviceDataService dataService;
+
+ public DeviceDataController(DeviceDataService dataService) {
+ this.dataService = dataService;
+ }
+
+ @PostMapping("/commit")
+ public ResponseData DeviceDataCommit(@RequestBody DataReportParam dataReportParam) {
+ return dataService.DeviceDataCommit(dataReportParam);
+ }
+
+ @PostMapping("/heartbeat")
+ public ResponseData heartBeat(@RequestBody HeartbeatParam heartbeatParam) {
+ return dataService.heartBeatSave(heartbeatParam);
+ }
+
+ @PostMapping("/gas/receiver")
+ public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
+ return dataService.heartBeatSave(heartbeatParam);
+ }
+
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
new file mode 100644
index 0000000..47e7cce
--- /dev/null
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -0,0 +1,9 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.DataGasReport;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface DataGasMapper extends BaseMapper {
+}
diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java
new file mode 100644
index 0000000..a550aa3
--- /dev/null
+++ b/src/main/java/com/casic/dao/DeviceMapper.java
@@ -0,0 +1,23 @@
+package com.casic.dao;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.HashMap;
+
+@Mapper
+public interface DeviceMapper {
+
+ /**
+ * @param status 设备在线状态 1-0
+ * @param imei 设备唯一识别编号
+ * @return
+ */
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{status} " +
+ "WHERE DEVCODE=#{imei} ")
+ Integer onlineStatusByImei(@Param("status") String status,
+ @Param("imei") String imei);
+
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
new file mode 100644
index 0000000..c797e55
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
@@ -0,0 +1,68 @@
+package com.casic.dao.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.casic.dao.DataGasMapper;
+import com.casic.entity.DataGasReport;
+import com.casic.model.DataReportParam;
+import com.casic.model.HeartbeatParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.management.Query;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.DateTimeException;
+import java.util.*;
+
+@Slf4j
+@Component
+public class DeviceDataMapper {
+ @Autowired
+ DataGasMapper dataGasMapper;
+
+ public int addDeviceData(DataReportParam dataReportParam) {
+ DataGasReport dataGasReport = new DataGasReport();
+ dataGasReport.setImei(dataReportParam.getIMEI());
+ dataGasReport.setImsi(dataReportParam.getIMSI());
+ try {
+ dataGasReport.setUptime(new Date(Long.valueOf(dataReportParam.getTimestamp())));
+ } catch (DateTimeException dex) {
+ log.error("主题,日期转换出错,时间戳为{},异常信息为{}", dataReportParam.getTimestamp(), dex);
+ }
+ dataGasReport.setGasSampleValue(dataReportParam.getPayload().get("gas_sensor_state").toString());
+ dataGasReport.setGasSensorState(dataReportParam.getPayload().get("gas_sample_value").toString());
+ dataGasReport.setLogtime(new Date());
+ return dataGasMapper.insert(dataGasReport);
+ }
+
+ public int editDeviceData(HeartbeatParam heartbeatParam) {
+ DataGasReport dataGasReport = new DataGasReport();
+ dataGasReport.setImei(heartbeatParam.getIMEI());
+ dataGasReport.setImsi(heartbeatParam.getIMSI());
+ //电池电压-电池点亮
+ dataGasReport.setBatteryVoltage(heartbeatParam.getBattery_voltage());
+ dataGasReport.setBatteryValue(heartbeatParam.getBattery_value());
+ //
+ dataGasReport.setCellId(heartbeatParam.getCell_id());
+ dataGasReport.setIccid(heartbeatParam.getICCID());
+ //噪音、接收功率、小区标识
+ dataGasReport.setPci(heartbeatParam.getPci());
+ dataGasReport.setRsrp(heartbeatParam.getRsrp());
+ dataGasReport.setSinr(heartbeatParam.getSinr());
+ dataGasReport.setHeartbeatTime(heartbeatParam.getHeartbeat_time());
+ QueryWrapper queryWrapper = new QueryWrapper()
+ .eq("DEVCODE", heartbeatParam.getIMEI())
+ .orderByDesc("LOGTIME").last("limit 1");
+ List dataGasReportList = dataGasMapper.selectList(queryWrapper);
+ if (dataGasReportList.size() == 0) {
+ return 0;
+ } else {
+ dataGasReport.setId(dataGasReportList.get(0).getId());
+ }
+ return dataGasMapper.updateById(dataGasReport);
+ }
+
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
new file mode 100644
index 0000000..c43ccdf
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasReport.java
@@ -0,0 +1,69 @@
+package com.casic.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author cz
+ * @date 2022-7-1
+ */
+@Data
+@TableName("data_gas_dector")
+public class DataGasReport {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @TableField("devcode")
+ private String imei;
+ private String wellcode;
+
+ private String imsi;
+ /**
+ * --事件类型 0正常 1低报 2高报
+ */
+ private String gasSensorState;
+ /**
+ * --浓度值
+ */
+ private String gasSampleValue;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ /**
+ * --心跳周期
+ */
+ private String heartbeatTime;
+
+ /**
+ * --小区位置信息
+ */
+ private String cellId;
+ /**
+ * --电池电压
+ */
+ private String batteryVoltage;
+ /**
+ * --电池电量
+ */
+ private String batteryValue;
+ private String iccid;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/model/DataReportParam.java b/src/main/java/com/casic/model/DataReportParam.java
new file mode 100644
index 0000000..082814c
--- /dev/null
+++ b/src/main/java/com/casic/model/DataReportParam.java
@@ -0,0 +1,35 @@
+package com.casic.model;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.util.Map;
+
+/**
+ * @author cz
+ * @date 2022-7-1
+ */
+@Data
+public class DataReportParam {
+ private String upPacketSN;
+ private String upDataSN;
+ private String topic;
+ private String timestamp;
+ private String tenantId;
+ private String serviceId;
+ private String protocol;
+ private String productId;
+ /**
+ * gas_sensor_state = 1, --事件类型 0 正常 1 低报 2 高报
+ * gas_sample_value = 11-- 浓度值
+ */
+ private Map payload;
+ private String messageType;
+ private String deviceType;
+ private String deviceId;
+ private String assocAssetId;
+ @JsonProperty(value = "IMSI", required = true)
+ private String IMSI;
+ @JsonProperty(value = "IMEI", required = true)
+ private String IMEI;
+}
diff --git a/src/main/java/com/casic/model/DeviceOnlineParam.java b/src/main/java/com/casic/model/DeviceOnlineParam.java
new file mode 100644
index 0000000..b92e44d
--- /dev/null
+++ b/src/main/java/com/casic/model/DeviceOnlineParam.java
@@ -0,0 +1,43 @@
+package com.casic.model;
+
+import lombok.Data;
+
+/**
+ * @author cz
+ * @date 2022-07-01
+ */
+@Data
+public class DeviceOnlineParam {
+ /**
+ * 毫秒值
+ */
+ private String timestamp;
+ /**
+ * Ctwing租户id
+ */
+ private String tenantId;
+ /**
+ * 通信协议
+ */
+ private String protocol;
+ /**
+ * 产品id
+ */
+ private String productId;
+ /**
+ * 消息类型
+ */
+ private String messageType;
+ /**
+ * 事件类型 1上线 0下线
+ */
+ private String eventType;
+ /**
+ * 设备ID
+ */
+ private String deviceId;
+ /**
+ * 设备编号
+ */
+ private String imei;
+}
diff --git a/src/main/java/com/casic/model/HeartbeatParam.java b/src/main/java/com/casic/model/HeartbeatParam.java
new file mode 100644
index 0000000..8ff029d
--- /dev/null
+++ b/src/main/java/com/casic/model/HeartbeatParam.java
@@ -0,0 +1,75 @@
+package com.casic.model;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+/**
+ * @author cz
+ * @date 2022-7-1
+ */
+@Data
+public class HeartbeatParam {
+
+ /**
+ * 终端型号
+ */
+ private String terminal_type;
+ /**
+ * 软件版本
+ */
+ private String software_version;
+ /**
+ * 信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * 参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * 物理小区标识
+ */
+ private String pci;
+ /**
+ * 厂家名称
+ */
+ private String manufacturer_name;
+ /**
+ * 心跳周期
+ */
+ private String heartbeat_time;
+ /**
+ * 硬件版本
+ */
+ private String hardware_version;
+ /**
+ * 无线信号覆盖等级
+ */
+ private String ecl;
+ /**
+ * 小区位置信息
+ */
+ private String cell_id;
+ /**
+ * 电池电压
+ */
+ private String battery_voltage;
+ /**
+ * 电池电量
+ */
+ private String battery_value;
+ /**
+ * IMSI
+ */
+ @JsonProperty(value = "IMSI",required = true)
+ private String IMSI;
+ /**
+ * imei
+ */
+ @JsonProperty(value = "IMEI",required = true)
+ private String IMEI;
+ /**
+ * ICCID
+ */
+ private String ICCID;
+}
diff --git a/src/main/java/com/casic/model/ResponseData.java b/src/main/java/com/casic/model/ResponseData.java
new file mode 100644
index 0000000..847c9c8
--- /dev/null
+++ b/src/main/java/com/casic/model/ResponseData.java
@@ -0,0 +1,21 @@
+package com.casic.model;
+
+import lombok.Data;
+
+/**
+ * @author cz
+ * @date 2022-6-20
+ */
+@Data
+public class ResponseData {
+
+ public static final String DEFAULT_SUCCESS_MESSAGE = "请求成功";
+ public static final String DEFAULT_ERROR_MESSAGE = "网络异常";
+ public static final Integer DEFAULT_SUCCESS_CODE = 200;
+ public static final Integer DEFAULT_ERROR_CODE = 500;
+ private Boolean success;
+ private Integer code;
+ private String message;
+ private Object data;
+
+}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..74d7bd1
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,123 @@
+
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.1.3.RELEASE
+
+
+ 4.0.0
+
+ com.casic.sensor
+ sensor-transfer
+ 1.0-SNAPSHOT
+ war
+
+
+ UTF-8
+ UTF-8
+ 1.8
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-tomcat
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.1.3.RELEASE
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-jdbc
+ 2.1.3.RELEASE
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+ compile
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+ org.postgresql
+ postgresql
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+
+ com.alibaba
+ druid
+ 1.2.6
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/build/package.xml b/src/main/build/package.xml
new file mode 100644
index 0000000..96d895e
--- /dev/null
+++ b/src/main/build/package.xml
@@ -0,0 +1,43 @@
+
+
+ package
+
+ zip
+ tar.gz
+
+ true
+
+
+
+ true
+ true
+ lib
+ runtime
+
+
+
+
+ src/main/build/bin
+
+ start.bat
+ start.sh
+
+ true
+ 0744
+ /
+
+
+ src/main/resources/config
+ true
+
+ *.yml
+ /*/*
+
+ /config
+
+
+ src/main/resources/i18n
+ /
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..c55e37d
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,25 @@
+package com.casic;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.ServletComponentScan;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.context.annotation.ComponentScan;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author cz
+ * @Date 2022/06/20 14:28
+ */
+
+@Slf4j
+@ComponentScan(basePackages= "com.casic.**")
+@SpringBootApplication
+public class CasicApplication {
+ public static void main(String[] args) {
+ log.info("CasicApplication is success!");
+ SpringApplication.run(CasicApplication.class, args);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java
new file mode 100644
index 0000000..653db64
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceController.java
@@ -0,0 +1,32 @@
+package com.casic.controller;
+
+import com.casic.model.*;
+import com.casic.service.DeviceService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+@RestController
+@RequestMapping("/device")
+public class DeviceController {
+
+
+ private final DeviceService deviceService;
+
+ public DeviceController(DeviceService deviceService) {
+ this.deviceService = deviceService;
+ }
+
+ @RequestMapping("/helloWord")
+ public ResponseData helloWord() {
+ return deviceService.testMysql();
+ }
+
+ @PostMapping("/online")
+ public ResponseData DeviceOnline(@RequestBody DeviceOnlineParam onlineParam) {
+ return deviceService.onlineStatusByImei(onlineParam.getEventType(),onlineParam.getImei());
+ }
+
+}
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
new file mode 100644
index 0000000..e5351c9
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -0,0 +1,37 @@
+package com.casic.controller;
+
+import com.casic.model.DataReportParam;
+import com.casic.model.HeartbeatParam;
+import com.casic.model.ResponseData;
+import com.casic.service.DeviceDataService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RequestMapping("/data")
+@RestController
+public class DeviceDataController {
+
+ private final DeviceDataService dataService;
+
+ public DeviceDataController(DeviceDataService dataService) {
+ this.dataService = dataService;
+ }
+
+ @PostMapping("/commit")
+ public ResponseData DeviceDataCommit(@RequestBody DataReportParam dataReportParam) {
+ return dataService.DeviceDataCommit(dataReportParam);
+ }
+
+ @PostMapping("/heartbeat")
+ public ResponseData heartBeat(@RequestBody HeartbeatParam heartbeatParam) {
+ return dataService.heartBeatSave(heartbeatParam);
+ }
+
+ @PostMapping("/gas/receiver")
+ public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
+ return dataService.heartBeatSave(heartbeatParam);
+ }
+
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
new file mode 100644
index 0000000..47e7cce
--- /dev/null
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -0,0 +1,9 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.DataGasReport;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface DataGasMapper extends BaseMapper {
+}
diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java
new file mode 100644
index 0000000..a550aa3
--- /dev/null
+++ b/src/main/java/com/casic/dao/DeviceMapper.java
@@ -0,0 +1,23 @@
+package com.casic.dao;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.HashMap;
+
+@Mapper
+public interface DeviceMapper {
+
+ /**
+ * @param status 设备在线状态 1-0
+ * @param imei 设备唯一识别编号
+ * @return
+ */
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{status} " +
+ "WHERE DEVCODE=#{imei} ")
+ Integer onlineStatusByImei(@Param("status") String status,
+ @Param("imei") String imei);
+
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
new file mode 100644
index 0000000..c797e55
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
@@ -0,0 +1,68 @@
+package com.casic.dao.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.casic.dao.DataGasMapper;
+import com.casic.entity.DataGasReport;
+import com.casic.model.DataReportParam;
+import com.casic.model.HeartbeatParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.management.Query;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.DateTimeException;
+import java.util.*;
+
+@Slf4j
+@Component
+public class DeviceDataMapper {
+ @Autowired
+ DataGasMapper dataGasMapper;
+
+ public int addDeviceData(DataReportParam dataReportParam) {
+ DataGasReport dataGasReport = new DataGasReport();
+ dataGasReport.setImei(dataReportParam.getIMEI());
+ dataGasReport.setImsi(dataReportParam.getIMSI());
+ try {
+ dataGasReport.setUptime(new Date(Long.valueOf(dataReportParam.getTimestamp())));
+ } catch (DateTimeException dex) {
+ log.error("主题,日期转换出错,时间戳为{},异常信息为{}", dataReportParam.getTimestamp(), dex);
+ }
+ dataGasReport.setGasSampleValue(dataReportParam.getPayload().get("gas_sensor_state").toString());
+ dataGasReport.setGasSensorState(dataReportParam.getPayload().get("gas_sample_value").toString());
+ dataGasReport.setLogtime(new Date());
+ return dataGasMapper.insert(dataGasReport);
+ }
+
+ public int editDeviceData(HeartbeatParam heartbeatParam) {
+ DataGasReport dataGasReport = new DataGasReport();
+ dataGasReport.setImei(heartbeatParam.getIMEI());
+ dataGasReport.setImsi(heartbeatParam.getIMSI());
+ //电池电压-电池点亮
+ dataGasReport.setBatteryVoltage(heartbeatParam.getBattery_voltage());
+ dataGasReport.setBatteryValue(heartbeatParam.getBattery_value());
+ //
+ dataGasReport.setCellId(heartbeatParam.getCell_id());
+ dataGasReport.setIccid(heartbeatParam.getICCID());
+ //噪音、接收功率、小区标识
+ dataGasReport.setPci(heartbeatParam.getPci());
+ dataGasReport.setRsrp(heartbeatParam.getRsrp());
+ dataGasReport.setSinr(heartbeatParam.getSinr());
+ dataGasReport.setHeartbeatTime(heartbeatParam.getHeartbeat_time());
+ QueryWrapper queryWrapper = new QueryWrapper()
+ .eq("DEVCODE", heartbeatParam.getIMEI())
+ .orderByDesc("LOGTIME").last("limit 1");
+ List dataGasReportList = dataGasMapper.selectList(queryWrapper);
+ if (dataGasReportList.size() == 0) {
+ return 0;
+ } else {
+ dataGasReport.setId(dataGasReportList.get(0).getId());
+ }
+ return dataGasMapper.updateById(dataGasReport);
+ }
+
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
new file mode 100644
index 0000000..c43ccdf
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasReport.java
@@ -0,0 +1,69 @@
+package com.casic.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author cz
+ * @date 2022-7-1
+ */
+@Data
+@TableName("data_gas_dector")
+public class DataGasReport {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @TableField("devcode")
+ private String imei;
+ private String wellcode;
+
+ private String imsi;
+ /**
+ * --事件类型 0正常 1低报 2高报
+ */
+ private String gasSensorState;
+ /**
+ * --浓度值
+ */
+ private String gasSampleValue;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ /**
+ * --心跳周期
+ */
+ private String heartbeatTime;
+
+ /**
+ * --小区位置信息
+ */
+ private String cellId;
+ /**
+ * --电池电压
+ */
+ private String batteryVoltage;
+ /**
+ * --电池电量
+ */
+ private String batteryValue;
+ private String iccid;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/model/DataReportParam.java b/src/main/java/com/casic/model/DataReportParam.java
new file mode 100644
index 0000000..082814c
--- /dev/null
+++ b/src/main/java/com/casic/model/DataReportParam.java
@@ -0,0 +1,35 @@
+package com.casic.model;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.util.Map;
+
+/**
+ * @author cz
+ * @date 2022-7-1
+ */
+@Data
+public class DataReportParam {
+ private String upPacketSN;
+ private String upDataSN;
+ private String topic;
+ private String timestamp;
+ private String tenantId;
+ private String serviceId;
+ private String protocol;
+ private String productId;
+ /**
+ * gas_sensor_state = 1, --事件类型 0 正常 1 低报 2 高报
+ * gas_sample_value = 11-- 浓度值
+ */
+ private Map payload;
+ private String messageType;
+ private String deviceType;
+ private String deviceId;
+ private String assocAssetId;
+ @JsonProperty(value = "IMSI", required = true)
+ private String IMSI;
+ @JsonProperty(value = "IMEI", required = true)
+ private String IMEI;
+}
diff --git a/src/main/java/com/casic/model/DeviceOnlineParam.java b/src/main/java/com/casic/model/DeviceOnlineParam.java
new file mode 100644
index 0000000..b92e44d
--- /dev/null
+++ b/src/main/java/com/casic/model/DeviceOnlineParam.java
@@ -0,0 +1,43 @@
+package com.casic.model;
+
+import lombok.Data;
+
+/**
+ * @author cz
+ * @date 2022-07-01
+ */
+@Data
+public class DeviceOnlineParam {
+ /**
+ * 毫秒值
+ */
+ private String timestamp;
+ /**
+ * Ctwing租户id
+ */
+ private String tenantId;
+ /**
+ * 通信协议
+ */
+ private String protocol;
+ /**
+ * 产品id
+ */
+ private String productId;
+ /**
+ * 消息类型
+ */
+ private String messageType;
+ /**
+ * 事件类型 1上线 0下线
+ */
+ private String eventType;
+ /**
+ * 设备ID
+ */
+ private String deviceId;
+ /**
+ * 设备编号
+ */
+ private String imei;
+}
diff --git a/src/main/java/com/casic/model/HeartbeatParam.java b/src/main/java/com/casic/model/HeartbeatParam.java
new file mode 100644
index 0000000..8ff029d
--- /dev/null
+++ b/src/main/java/com/casic/model/HeartbeatParam.java
@@ -0,0 +1,75 @@
+package com.casic.model;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+/**
+ * @author cz
+ * @date 2022-7-1
+ */
+@Data
+public class HeartbeatParam {
+
+ /**
+ * 终端型号
+ */
+ private String terminal_type;
+ /**
+ * 软件版本
+ */
+ private String software_version;
+ /**
+ * 信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * 参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * 物理小区标识
+ */
+ private String pci;
+ /**
+ * 厂家名称
+ */
+ private String manufacturer_name;
+ /**
+ * 心跳周期
+ */
+ private String heartbeat_time;
+ /**
+ * 硬件版本
+ */
+ private String hardware_version;
+ /**
+ * 无线信号覆盖等级
+ */
+ private String ecl;
+ /**
+ * 小区位置信息
+ */
+ private String cell_id;
+ /**
+ * 电池电压
+ */
+ private String battery_voltage;
+ /**
+ * 电池电量
+ */
+ private String battery_value;
+ /**
+ * IMSI
+ */
+ @JsonProperty(value = "IMSI",required = true)
+ private String IMSI;
+ /**
+ * imei
+ */
+ @JsonProperty(value = "IMEI",required = true)
+ private String IMEI;
+ /**
+ * ICCID
+ */
+ private String ICCID;
+}
diff --git a/src/main/java/com/casic/model/ResponseData.java b/src/main/java/com/casic/model/ResponseData.java
new file mode 100644
index 0000000..847c9c8
--- /dev/null
+++ b/src/main/java/com/casic/model/ResponseData.java
@@ -0,0 +1,21 @@
+package com.casic.model;
+
+import lombok.Data;
+
+/**
+ * @author cz
+ * @date 2022-6-20
+ */
+@Data
+public class ResponseData {
+
+ public static final String DEFAULT_SUCCESS_MESSAGE = "请求成功";
+ public static final String DEFAULT_ERROR_MESSAGE = "网络异常";
+ public static final Integer DEFAULT_SUCCESS_CODE = 200;
+ public static final Integer DEFAULT_ERROR_CODE = 500;
+ private Boolean success;
+ private Integer code;
+ private String message;
+ private Object data;
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java
new file mode 100644
index 0000000..d883fe4
--- /dev/null
+++ b/src/main/java/com/casic/service/DeviceDataService.java
@@ -0,0 +1,27 @@
+package com.casic.service;
+
+import com.casic.model.DataReportParam;
+import com.casic.model.HeartbeatParam;
+import com.casic.model.ResponseData;
+
+/**
+ * @author cz
+ * @date 2022
+ */
+public interface DeviceDataService {
+
+ /**
+ *
+ * @param dataReportParam
+ * @return
+ */
+ ResponseData DeviceDataCommit(DataReportParam dataReportParam);
+
+ /**
+ *
+ * @param heartbeatParam
+ * @return
+ */
+ ResponseData heartBeatSave(HeartbeatParam heartbeatParam);
+
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..74d7bd1
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,123 @@
+
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.1.3.RELEASE
+
+
+ 4.0.0
+
+ com.casic.sensor
+ sensor-transfer
+ 1.0-SNAPSHOT
+ war
+
+
+ UTF-8
+ UTF-8
+ 1.8
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-tomcat
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.1.3.RELEASE
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-jdbc
+ 2.1.3.RELEASE
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+ compile
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+ org.postgresql
+ postgresql
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+
+ com.alibaba
+ druid
+ 1.2.6
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/build/package.xml b/src/main/build/package.xml
new file mode 100644
index 0000000..96d895e
--- /dev/null
+++ b/src/main/build/package.xml
@@ -0,0 +1,43 @@
+
+
+ package
+
+ zip
+ tar.gz
+
+ true
+
+
+
+ true
+ true
+ lib
+ runtime
+
+
+
+
+ src/main/build/bin
+
+ start.bat
+ start.sh
+
+ true
+ 0744
+ /
+
+
+ src/main/resources/config
+ true
+
+ *.yml
+ /*/*
+
+ /config
+
+
+ src/main/resources/i18n
+ /
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..c55e37d
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,25 @@
+package com.casic;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.ServletComponentScan;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.context.annotation.ComponentScan;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author cz
+ * @Date 2022/06/20 14:28
+ */
+
+@Slf4j
+@ComponentScan(basePackages= "com.casic.**")
+@SpringBootApplication
+public class CasicApplication {
+ public static void main(String[] args) {
+ log.info("CasicApplication is success!");
+ SpringApplication.run(CasicApplication.class, args);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java
new file mode 100644
index 0000000..653db64
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceController.java
@@ -0,0 +1,32 @@
+package com.casic.controller;
+
+import com.casic.model.*;
+import com.casic.service.DeviceService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+@RestController
+@RequestMapping("/device")
+public class DeviceController {
+
+
+ private final DeviceService deviceService;
+
+ public DeviceController(DeviceService deviceService) {
+ this.deviceService = deviceService;
+ }
+
+ @RequestMapping("/helloWord")
+ public ResponseData helloWord() {
+ return deviceService.testMysql();
+ }
+
+ @PostMapping("/online")
+ public ResponseData DeviceOnline(@RequestBody DeviceOnlineParam onlineParam) {
+ return deviceService.onlineStatusByImei(onlineParam.getEventType(),onlineParam.getImei());
+ }
+
+}
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
new file mode 100644
index 0000000..e5351c9
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -0,0 +1,37 @@
+package com.casic.controller;
+
+import com.casic.model.DataReportParam;
+import com.casic.model.HeartbeatParam;
+import com.casic.model.ResponseData;
+import com.casic.service.DeviceDataService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RequestMapping("/data")
+@RestController
+public class DeviceDataController {
+
+ private final DeviceDataService dataService;
+
+ public DeviceDataController(DeviceDataService dataService) {
+ this.dataService = dataService;
+ }
+
+ @PostMapping("/commit")
+ public ResponseData DeviceDataCommit(@RequestBody DataReportParam dataReportParam) {
+ return dataService.DeviceDataCommit(dataReportParam);
+ }
+
+ @PostMapping("/heartbeat")
+ public ResponseData heartBeat(@RequestBody HeartbeatParam heartbeatParam) {
+ return dataService.heartBeatSave(heartbeatParam);
+ }
+
+ @PostMapping("/gas/receiver")
+ public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
+ return dataService.heartBeatSave(heartbeatParam);
+ }
+
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
new file mode 100644
index 0000000..47e7cce
--- /dev/null
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -0,0 +1,9 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.DataGasReport;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface DataGasMapper extends BaseMapper {
+}
diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java
new file mode 100644
index 0000000..a550aa3
--- /dev/null
+++ b/src/main/java/com/casic/dao/DeviceMapper.java
@@ -0,0 +1,23 @@
+package com.casic.dao;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.HashMap;
+
+@Mapper
+public interface DeviceMapper {
+
+ /**
+ * @param status 设备在线状态 1-0
+ * @param imei 设备唯一识别编号
+ * @return
+ */
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{status} " +
+ "WHERE DEVCODE=#{imei} ")
+ Integer onlineStatusByImei(@Param("status") String status,
+ @Param("imei") String imei);
+
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
new file mode 100644
index 0000000..c797e55
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
@@ -0,0 +1,68 @@
+package com.casic.dao.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.casic.dao.DataGasMapper;
+import com.casic.entity.DataGasReport;
+import com.casic.model.DataReportParam;
+import com.casic.model.HeartbeatParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.management.Query;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.DateTimeException;
+import java.util.*;
+
+@Slf4j
+@Component
+public class DeviceDataMapper {
+ @Autowired
+ DataGasMapper dataGasMapper;
+
+ public int addDeviceData(DataReportParam dataReportParam) {
+ DataGasReport dataGasReport = new DataGasReport();
+ dataGasReport.setImei(dataReportParam.getIMEI());
+ dataGasReport.setImsi(dataReportParam.getIMSI());
+ try {
+ dataGasReport.setUptime(new Date(Long.valueOf(dataReportParam.getTimestamp())));
+ } catch (DateTimeException dex) {
+ log.error("主题,日期转换出错,时间戳为{},异常信息为{}", dataReportParam.getTimestamp(), dex);
+ }
+ dataGasReport.setGasSampleValue(dataReportParam.getPayload().get("gas_sensor_state").toString());
+ dataGasReport.setGasSensorState(dataReportParam.getPayload().get("gas_sample_value").toString());
+ dataGasReport.setLogtime(new Date());
+ return dataGasMapper.insert(dataGasReport);
+ }
+
+ public int editDeviceData(HeartbeatParam heartbeatParam) {
+ DataGasReport dataGasReport = new DataGasReport();
+ dataGasReport.setImei(heartbeatParam.getIMEI());
+ dataGasReport.setImsi(heartbeatParam.getIMSI());
+ //电池电压-电池点亮
+ dataGasReport.setBatteryVoltage(heartbeatParam.getBattery_voltage());
+ dataGasReport.setBatteryValue(heartbeatParam.getBattery_value());
+ //
+ dataGasReport.setCellId(heartbeatParam.getCell_id());
+ dataGasReport.setIccid(heartbeatParam.getICCID());
+ //噪音、接收功率、小区标识
+ dataGasReport.setPci(heartbeatParam.getPci());
+ dataGasReport.setRsrp(heartbeatParam.getRsrp());
+ dataGasReport.setSinr(heartbeatParam.getSinr());
+ dataGasReport.setHeartbeatTime(heartbeatParam.getHeartbeat_time());
+ QueryWrapper queryWrapper = new QueryWrapper()
+ .eq("DEVCODE", heartbeatParam.getIMEI())
+ .orderByDesc("LOGTIME").last("limit 1");
+ List dataGasReportList = dataGasMapper.selectList(queryWrapper);
+ if (dataGasReportList.size() == 0) {
+ return 0;
+ } else {
+ dataGasReport.setId(dataGasReportList.get(0).getId());
+ }
+ return dataGasMapper.updateById(dataGasReport);
+ }
+
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
new file mode 100644
index 0000000..c43ccdf
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasReport.java
@@ -0,0 +1,69 @@
+package com.casic.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author cz
+ * @date 2022-7-1
+ */
+@Data
+@TableName("data_gas_dector")
+public class DataGasReport {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @TableField("devcode")
+ private String imei;
+ private String wellcode;
+
+ private String imsi;
+ /**
+ * --事件类型 0正常 1低报 2高报
+ */
+ private String gasSensorState;
+ /**
+ * --浓度值
+ */
+ private String gasSampleValue;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ /**
+ * --心跳周期
+ */
+ private String heartbeatTime;
+
+ /**
+ * --小区位置信息
+ */
+ private String cellId;
+ /**
+ * --电池电压
+ */
+ private String batteryVoltage;
+ /**
+ * --电池电量
+ */
+ private String batteryValue;
+ private String iccid;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/model/DataReportParam.java b/src/main/java/com/casic/model/DataReportParam.java
new file mode 100644
index 0000000..082814c
--- /dev/null
+++ b/src/main/java/com/casic/model/DataReportParam.java
@@ -0,0 +1,35 @@
+package com.casic.model;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.util.Map;
+
+/**
+ * @author cz
+ * @date 2022-7-1
+ */
+@Data
+public class DataReportParam {
+ private String upPacketSN;
+ private String upDataSN;
+ private String topic;
+ private String timestamp;
+ private String tenantId;
+ private String serviceId;
+ private String protocol;
+ private String productId;
+ /**
+ * gas_sensor_state = 1, --事件类型 0 正常 1 低报 2 高报
+ * gas_sample_value = 11-- 浓度值
+ */
+ private Map payload;
+ private String messageType;
+ private String deviceType;
+ private String deviceId;
+ private String assocAssetId;
+ @JsonProperty(value = "IMSI", required = true)
+ private String IMSI;
+ @JsonProperty(value = "IMEI", required = true)
+ private String IMEI;
+}
diff --git a/src/main/java/com/casic/model/DeviceOnlineParam.java b/src/main/java/com/casic/model/DeviceOnlineParam.java
new file mode 100644
index 0000000..b92e44d
--- /dev/null
+++ b/src/main/java/com/casic/model/DeviceOnlineParam.java
@@ -0,0 +1,43 @@
+package com.casic.model;
+
+import lombok.Data;
+
+/**
+ * @author cz
+ * @date 2022-07-01
+ */
+@Data
+public class DeviceOnlineParam {
+ /**
+ * 毫秒值
+ */
+ private String timestamp;
+ /**
+ * Ctwing租户id
+ */
+ private String tenantId;
+ /**
+ * 通信协议
+ */
+ private String protocol;
+ /**
+ * 产品id
+ */
+ private String productId;
+ /**
+ * 消息类型
+ */
+ private String messageType;
+ /**
+ * 事件类型 1上线 0下线
+ */
+ private String eventType;
+ /**
+ * 设备ID
+ */
+ private String deviceId;
+ /**
+ * 设备编号
+ */
+ private String imei;
+}
diff --git a/src/main/java/com/casic/model/HeartbeatParam.java b/src/main/java/com/casic/model/HeartbeatParam.java
new file mode 100644
index 0000000..8ff029d
--- /dev/null
+++ b/src/main/java/com/casic/model/HeartbeatParam.java
@@ -0,0 +1,75 @@
+package com.casic.model;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+/**
+ * @author cz
+ * @date 2022-7-1
+ */
+@Data
+public class HeartbeatParam {
+
+ /**
+ * 终端型号
+ */
+ private String terminal_type;
+ /**
+ * 软件版本
+ */
+ private String software_version;
+ /**
+ * 信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * 参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * 物理小区标识
+ */
+ private String pci;
+ /**
+ * 厂家名称
+ */
+ private String manufacturer_name;
+ /**
+ * 心跳周期
+ */
+ private String heartbeat_time;
+ /**
+ * 硬件版本
+ */
+ private String hardware_version;
+ /**
+ * 无线信号覆盖等级
+ */
+ private String ecl;
+ /**
+ * 小区位置信息
+ */
+ private String cell_id;
+ /**
+ * 电池电压
+ */
+ private String battery_voltage;
+ /**
+ * 电池电量
+ */
+ private String battery_value;
+ /**
+ * IMSI
+ */
+ @JsonProperty(value = "IMSI",required = true)
+ private String IMSI;
+ /**
+ * imei
+ */
+ @JsonProperty(value = "IMEI",required = true)
+ private String IMEI;
+ /**
+ * ICCID
+ */
+ private String ICCID;
+}
diff --git a/src/main/java/com/casic/model/ResponseData.java b/src/main/java/com/casic/model/ResponseData.java
new file mode 100644
index 0000000..847c9c8
--- /dev/null
+++ b/src/main/java/com/casic/model/ResponseData.java
@@ -0,0 +1,21 @@
+package com.casic.model;
+
+import lombok.Data;
+
+/**
+ * @author cz
+ * @date 2022-6-20
+ */
+@Data
+public class ResponseData {
+
+ public static final String DEFAULT_SUCCESS_MESSAGE = "请求成功";
+ public static final String DEFAULT_ERROR_MESSAGE = "网络异常";
+ public static final Integer DEFAULT_SUCCESS_CODE = 200;
+ public static final Integer DEFAULT_ERROR_CODE = 500;
+ private Boolean success;
+ private Integer code;
+ private String message;
+ private Object data;
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java
new file mode 100644
index 0000000..d883fe4
--- /dev/null
+++ b/src/main/java/com/casic/service/DeviceDataService.java
@@ -0,0 +1,27 @@
+package com.casic.service;
+
+import com.casic.model.DataReportParam;
+import com.casic.model.HeartbeatParam;
+import com.casic.model.ResponseData;
+
+/**
+ * @author cz
+ * @date 2022
+ */
+public interface DeviceDataService {
+
+ /**
+ *
+ * @param dataReportParam
+ * @return
+ */
+ ResponseData DeviceDataCommit(DataReportParam dataReportParam);
+
+ /**
+ *
+ * @param heartbeatParam
+ * @return
+ */
+ ResponseData heartBeatSave(HeartbeatParam heartbeatParam);
+
+}
diff --git a/src/main/java/com/casic/service/DeviceService.java b/src/main/java/com/casic/service/DeviceService.java
new file mode 100644
index 0000000..6d21bf4
--- /dev/null
+++ b/src/main/java/com/casic/service/DeviceService.java
@@ -0,0 +1,16 @@
+package com.casic.service;
+
+import com.casic.model.*;
+
+public interface DeviceService {
+
+ ResponseData testMysql();
+
+ /**
+ * 设备状态更新
+ *
+ * @param
+ * @return
+ */
+ ResponseData onlineStatusByImei(String status,String imei);
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..74d7bd1
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,123 @@
+
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.1.3.RELEASE
+
+
+ 4.0.0
+
+ com.casic.sensor
+ sensor-transfer
+ 1.0-SNAPSHOT
+ war
+
+
+ UTF-8
+ UTF-8
+ 1.8
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-tomcat
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.1.3.RELEASE
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-jdbc
+ 2.1.3.RELEASE
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+ compile
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+ org.postgresql
+ postgresql
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+
+ com.alibaba
+ druid
+ 1.2.6
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/build/package.xml b/src/main/build/package.xml
new file mode 100644
index 0000000..96d895e
--- /dev/null
+++ b/src/main/build/package.xml
@@ -0,0 +1,43 @@
+
+
+ package
+
+ zip
+ tar.gz
+
+ true
+
+
+
+ true
+ true
+ lib
+ runtime
+
+
+
+
+ src/main/build/bin
+
+ start.bat
+ start.sh
+
+ true
+ 0744
+ /
+
+
+ src/main/resources/config
+ true
+
+ *.yml
+ /*/*
+
+ /config
+
+
+ src/main/resources/i18n
+ /
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..c55e37d
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,25 @@
+package com.casic;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.ServletComponentScan;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.context.annotation.ComponentScan;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author cz
+ * @Date 2022/06/20 14:28
+ */
+
+@Slf4j
+@ComponentScan(basePackages= "com.casic.**")
+@SpringBootApplication
+public class CasicApplication {
+ public static void main(String[] args) {
+ log.info("CasicApplication is success!");
+ SpringApplication.run(CasicApplication.class, args);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java
new file mode 100644
index 0000000..653db64
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceController.java
@@ -0,0 +1,32 @@
+package com.casic.controller;
+
+import com.casic.model.*;
+import com.casic.service.DeviceService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+@RestController
+@RequestMapping("/device")
+public class DeviceController {
+
+
+ private final DeviceService deviceService;
+
+ public DeviceController(DeviceService deviceService) {
+ this.deviceService = deviceService;
+ }
+
+ @RequestMapping("/helloWord")
+ public ResponseData helloWord() {
+ return deviceService.testMysql();
+ }
+
+ @PostMapping("/online")
+ public ResponseData DeviceOnline(@RequestBody DeviceOnlineParam onlineParam) {
+ return deviceService.onlineStatusByImei(onlineParam.getEventType(),onlineParam.getImei());
+ }
+
+}
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
new file mode 100644
index 0000000..e5351c9
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -0,0 +1,37 @@
+package com.casic.controller;
+
+import com.casic.model.DataReportParam;
+import com.casic.model.HeartbeatParam;
+import com.casic.model.ResponseData;
+import com.casic.service.DeviceDataService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RequestMapping("/data")
+@RestController
+public class DeviceDataController {
+
+ private final DeviceDataService dataService;
+
+ public DeviceDataController(DeviceDataService dataService) {
+ this.dataService = dataService;
+ }
+
+ @PostMapping("/commit")
+ public ResponseData DeviceDataCommit(@RequestBody DataReportParam dataReportParam) {
+ return dataService.DeviceDataCommit(dataReportParam);
+ }
+
+ @PostMapping("/heartbeat")
+ public ResponseData heartBeat(@RequestBody HeartbeatParam heartbeatParam) {
+ return dataService.heartBeatSave(heartbeatParam);
+ }
+
+ @PostMapping("/gas/receiver")
+ public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
+ return dataService.heartBeatSave(heartbeatParam);
+ }
+
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
new file mode 100644
index 0000000..47e7cce
--- /dev/null
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -0,0 +1,9 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.DataGasReport;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface DataGasMapper extends BaseMapper {
+}
diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java
new file mode 100644
index 0000000..a550aa3
--- /dev/null
+++ b/src/main/java/com/casic/dao/DeviceMapper.java
@@ -0,0 +1,23 @@
+package com.casic.dao;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.HashMap;
+
+@Mapper
+public interface DeviceMapper {
+
+ /**
+ * @param status 设备在线状态 1-0
+ * @param imei 设备唯一识别编号
+ * @return
+ */
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{status} " +
+ "WHERE DEVCODE=#{imei} ")
+ Integer onlineStatusByImei(@Param("status") String status,
+ @Param("imei") String imei);
+
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
new file mode 100644
index 0000000..c797e55
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
@@ -0,0 +1,68 @@
+package com.casic.dao.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.casic.dao.DataGasMapper;
+import com.casic.entity.DataGasReport;
+import com.casic.model.DataReportParam;
+import com.casic.model.HeartbeatParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.management.Query;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.DateTimeException;
+import java.util.*;
+
+@Slf4j
+@Component
+public class DeviceDataMapper {
+ @Autowired
+ DataGasMapper dataGasMapper;
+
+ public int addDeviceData(DataReportParam dataReportParam) {
+ DataGasReport dataGasReport = new DataGasReport();
+ dataGasReport.setImei(dataReportParam.getIMEI());
+ dataGasReport.setImsi(dataReportParam.getIMSI());
+ try {
+ dataGasReport.setUptime(new Date(Long.valueOf(dataReportParam.getTimestamp())));
+ } catch (DateTimeException dex) {
+ log.error("主题,日期转换出错,时间戳为{},异常信息为{}", dataReportParam.getTimestamp(), dex);
+ }
+ dataGasReport.setGasSampleValue(dataReportParam.getPayload().get("gas_sensor_state").toString());
+ dataGasReport.setGasSensorState(dataReportParam.getPayload().get("gas_sample_value").toString());
+ dataGasReport.setLogtime(new Date());
+ return dataGasMapper.insert(dataGasReport);
+ }
+
+ public int editDeviceData(HeartbeatParam heartbeatParam) {
+ DataGasReport dataGasReport = new DataGasReport();
+ dataGasReport.setImei(heartbeatParam.getIMEI());
+ dataGasReport.setImsi(heartbeatParam.getIMSI());
+ //电池电压-电池点亮
+ dataGasReport.setBatteryVoltage(heartbeatParam.getBattery_voltage());
+ dataGasReport.setBatteryValue(heartbeatParam.getBattery_value());
+ //
+ dataGasReport.setCellId(heartbeatParam.getCell_id());
+ dataGasReport.setIccid(heartbeatParam.getICCID());
+ //噪音、接收功率、小区标识
+ dataGasReport.setPci(heartbeatParam.getPci());
+ dataGasReport.setRsrp(heartbeatParam.getRsrp());
+ dataGasReport.setSinr(heartbeatParam.getSinr());
+ dataGasReport.setHeartbeatTime(heartbeatParam.getHeartbeat_time());
+ QueryWrapper queryWrapper = new QueryWrapper()
+ .eq("DEVCODE", heartbeatParam.getIMEI())
+ .orderByDesc("LOGTIME").last("limit 1");
+ List dataGasReportList = dataGasMapper.selectList(queryWrapper);
+ if (dataGasReportList.size() == 0) {
+ return 0;
+ } else {
+ dataGasReport.setId(dataGasReportList.get(0).getId());
+ }
+ return dataGasMapper.updateById(dataGasReport);
+ }
+
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
new file mode 100644
index 0000000..c43ccdf
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasReport.java
@@ -0,0 +1,69 @@
+package com.casic.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author cz
+ * @date 2022-7-1
+ */
+@Data
+@TableName("data_gas_dector")
+public class DataGasReport {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @TableField("devcode")
+ private String imei;
+ private String wellcode;
+
+ private String imsi;
+ /**
+ * --事件类型 0正常 1低报 2高报
+ */
+ private String gasSensorState;
+ /**
+ * --浓度值
+ */
+ private String gasSampleValue;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ /**
+ * --心跳周期
+ */
+ private String heartbeatTime;
+
+ /**
+ * --小区位置信息
+ */
+ private String cellId;
+ /**
+ * --电池电压
+ */
+ private String batteryVoltage;
+ /**
+ * --电池电量
+ */
+ private String batteryValue;
+ private String iccid;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/model/DataReportParam.java b/src/main/java/com/casic/model/DataReportParam.java
new file mode 100644
index 0000000..082814c
--- /dev/null
+++ b/src/main/java/com/casic/model/DataReportParam.java
@@ -0,0 +1,35 @@
+package com.casic.model;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.util.Map;
+
+/**
+ * @author cz
+ * @date 2022-7-1
+ */
+@Data
+public class DataReportParam {
+ private String upPacketSN;
+ private String upDataSN;
+ private String topic;
+ private String timestamp;
+ private String tenantId;
+ private String serviceId;
+ private String protocol;
+ private String productId;
+ /**
+ * gas_sensor_state = 1, --事件类型 0 正常 1 低报 2 高报
+ * gas_sample_value = 11-- 浓度值
+ */
+ private Map payload;
+ private String messageType;
+ private String deviceType;
+ private String deviceId;
+ private String assocAssetId;
+ @JsonProperty(value = "IMSI", required = true)
+ private String IMSI;
+ @JsonProperty(value = "IMEI", required = true)
+ private String IMEI;
+}
diff --git a/src/main/java/com/casic/model/DeviceOnlineParam.java b/src/main/java/com/casic/model/DeviceOnlineParam.java
new file mode 100644
index 0000000..b92e44d
--- /dev/null
+++ b/src/main/java/com/casic/model/DeviceOnlineParam.java
@@ -0,0 +1,43 @@
+package com.casic.model;
+
+import lombok.Data;
+
+/**
+ * @author cz
+ * @date 2022-07-01
+ */
+@Data
+public class DeviceOnlineParam {
+ /**
+ * 毫秒值
+ */
+ private String timestamp;
+ /**
+ * Ctwing租户id
+ */
+ private String tenantId;
+ /**
+ * 通信协议
+ */
+ private String protocol;
+ /**
+ * 产品id
+ */
+ private String productId;
+ /**
+ * 消息类型
+ */
+ private String messageType;
+ /**
+ * 事件类型 1上线 0下线
+ */
+ private String eventType;
+ /**
+ * 设备ID
+ */
+ private String deviceId;
+ /**
+ * 设备编号
+ */
+ private String imei;
+}
diff --git a/src/main/java/com/casic/model/HeartbeatParam.java b/src/main/java/com/casic/model/HeartbeatParam.java
new file mode 100644
index 0000000..8ff029d
--- /dev/null
+++ b/src/main/java/com/casic/model/HeartbeatParam.java
@@ -0,0 +1,75 @@
+package com.casic.model;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+/**
+ * @author cz
+ * @date 2022-7-1
+ */
+@Data
+public class HeartbeatParam {
+
+ /**
+ * 终端型号
+ */
+ private String terminal_type;
+ /**
+ * 软件版本
+ */
+ private String software_version;
+ /**
+ * 信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * 参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * 物理小区标识
+ */
+ private String pci;
+ /**
+ * 厂家名称
+ */
+ private String manufacturer_name;
+ /**
+ * 心跳周期
+ */
+ private String heartbeat_time;
+ /**
+ * 硬件版本
+ */
+ private String hardware_version;
+ /**
+ * 无线信号覆盖等级
+ */
+ private String ecl;
+ /**
+ * 小区位置信息
+ */
+ private String cell_id;
+ /**
+ * 电池电压
+ */
+ private String battery_voltage;
+ /**
+ * 电池电量
+ */
+ private String battery_value;
+ /**
+ * IMSI
+ */
+ @JsonProperty(value = "IMSI",required = true)
+ private String IMSI;
+ /**
+ * imei
+ */
+ @JsonProperty(value = "IMEI",required = true)
+ private String IMEI;
+ /**
+ * ICCID
+ */
+ private String ICCID;
+}
diff --git a/src/main/java/com/casic/model/ResponseData.java b/src/main/java/com/casic/model/ResponseData.java
new file mode 100644
index 0000000..847c9c8
--- /dev/null
+++ b/src/main/java/com/casic/model/ResponseData.java
@@ -0,0 +1,21 @@
+package com.casic.model;
+
+import lombok.Data;
+
+/**
+ * @author cz
+ * @date 2022-6-20
+ */
+@Data
+public class ResponseData {
+
+ public static final String DEFAULT_SUCCESS_MESSAGE = "请求成功";
+ public static final String DEFAULT_ERROR_MESSAGE = "网络异常";
+ public static final Integer DEFAULT_SUCCESS_CODE = 200;
+ public static final Integer DEFAULT_ERROR_CODE = 500;
+ private Boolean success;
+ private Integer code;
+ private String message;
+ private Object data;
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java
new file mode 100644
index 0000000..d883fe4
--- /dev/null
+++ b/src/main/java/com/casic/service/DeviceDataService.java
@@ -0,0 +1,27 @@
+package com.casic.service;
+
+import com.casic.model.DataReportParam;
+import com.casic.model.HeartbeatParam;
+import com.casic.model.ResponseData;
+
+/**
+ * @author cz
+ * @date 2022
+ */
+public interface DeviceDataService {
+
+ /**
+ *
+ * @param dataReportParam
+ * @return
+ */
+ ResponseData DeviceDataCommit(DataReportParam dataReportParam);
+
+ /**
+ *
+ * @param heartbeatParam
+ * @return
+ */
+ ResponseData heartBeatSave(HeartbeatParam heartbeatParam);
+
+}
diff --git a/src/main/java/com/casic/service/DeviceService.java b/src/main/java/com/casic/service/DeviceService.java
new file mode 100644
index 0000000..6d21bf4
--- /dev/null
+++ b/src/main/java/com/casic/service/DeviceService.java
@@ -0,0 +1,16 @@
+package com.casic.service;
+
+import com.casic.model.*;
+
+public interface DeviceService {
+
+ ResponseData testMysql();
+
+ /**
+ * 设备状态更新
+ *
+ * @param
+ * @return
+ */
+ ResponseData onlineStatusByImei(String status,String imei);
+}
diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
new file mode 100644
index 0000000..93f0685
--- /dev/null
+++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
@@ -0,0 +1,59 @@
+package com.casic.service.impl;
+
+import com.casic.dao.impl.DeviceDataMapper;
+import com.casic.model.*;
+import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author cz
+ * @date 2022-6-20
+ */
+@Slf4j
+@Service
+public class DeviceDataServiceImpl implements DeviceDataService {
+
+ @Autowired
+ DeviceDataMapper deviceDataMapper;
+
+ /**
+ * @param dataReportParam
+ * @return
+ */
+ public ResponseData DeviceDataCommit(DataReportParam dataReportParam) {
+ ResponseData responseData = new ResponseData();
+ try {
+ deviceDataMapper.addDeviceData(dataReportParam);
+ responseData.setCode(ResponseData.DEFAULT_SUCCESS_CODE);
+ responseData.setMessage(ResponseData.DEFAULT_SUCCESS_MESSAGE);
+ } catch (DataAccessException sqlex) {
+ responseData.setCode(ResponseData.DEFAULT_ERROR_CODE);
+ responseData.setMessage("请求数据异常");
+ responseData.setSuccess(true);
+ log.error("主题:数据上报保存出现错误,异常信息为{}", sqlex);
+ }
+ return responseData;
+ }
+
+ /**
+ * @param heartbeatParam
+ * @return
+ */
+ public ResponseData heartBeatSave(HeartbeatParam heartbeatParam) {
+ ResponseData responseData = new ResponseData();
+ try {
+ deviceDataMapper.editDeviceData(heartbeatParam);
+ responseData.setCode(ResponseData.DEFAULT_SUCCESS_CODE);
+ responseData.setMessage(ResponseData.DEFAULT_SUCCESS_MESSAGE);
+ } catch (DataAccessException sqlex) {
+ responseData.setCode(ResponseData.DEFAULT_ERROR_CODE);
+ responseData.setMessage("请求数据异常");
+ responseData.setSuccess(true);
+ log.error("主题:数据心跳出现错误,异常信息为{}", sqlex);
+ }
+ return responseData;
+ }
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..74d7bd1
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,123 @@
+
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.1.3.RELEASE
+
+
+ 4.0.0
+
+ com.casic.sensor
+ sensor-transfer
+ 1.0-SNAPSHOT
+ war
+
+
+ UTF-8
+ UTF-8
+ 1.8
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-tomcat
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.1.3.RELEASE
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-jdbc
+ 2.1.3.RELEASE
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+ compile
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+ org.postgresql
+ postgresql
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+
+ com.alibaba
+ druid
+ 1.2.6
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/build/package.xml b/src/main/build/package.xml
new file mode 100644
index 0000000..96d895e
--- /dev/null
+++ b/src/main/build/package.xml
@@ -0,0 +1,43 @@
+
+
+ package
+
+ zip
+ tar.gz
+
+ true
+
+
+
+ true
+ true
+ lib
+ runtime
+
+
+
+
+ src/main/build/bin
+
+ start.bat
+ start.sh
+
+ true
+ 0744
+ /
+
+
+ src/main/resources/config
+ true
+
+ *.yml
+ /*/*
+
+ /config
+
+
+ src/main/resources/i18n
+ /
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..c55e37d
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,25 @@
+package com.casic;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.ServletComponentScan;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.context.annotation.ComponentScan;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author cz
+ * @Date 2022/06/20 14:28
+ */
+
+@Slf4j
+@ComponentScan(basePackages= "com.casic.**")
+@SpringBootApplication
+public class CasicApplication {
+ public static void main(String[] args) {
+ log.info("CasicApplication is success!");
+ SpringApplication.run(CasicApplication.class, args);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java
new file mode 100644
index 0000000..653db64
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceController.java
@@ -0,0 +1,32 @@
+package com.casic.controller;
+
+import com.casic.model.*;
+import com.casic.service.DeviceService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+@RestController
+@RequestMapping("/device")
+public class DeviceController {
+
+
+ private final DeviceService deviceService;
+
+ public DeviceController(DeviceService deviceService) {
+ this.deviceService = deviceService;
+ }
+
+ @RequestMapping("/helloWord")
+ public ResponseData helloWord() {
+ return deviceService.testMysql();
+ }
+
+ @PostMapping("/online")
+ public ResponseData DeviceOnline(@RequestBody DeviceOnlineParam onlineParam) {
+ return deviceService.onlineStatusByImei(onlineParam.getEventType(),onlineParam.getImei());
+ }
+
+}
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
new file mode 100644
index 0000000..e5351c9
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -0,0 +1,37 @@
+package com.casic.controller;
+
+import com.casic.model.DataReportParam;
+import com.casic.model.HeartbeatParam;
+import com.casic.model.ResponseData;
+import com.casic.service.DeviceDataService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RequestMapping("/data")
+@RestController
+public class DeviceDataController {
+
+ private final DeviceDataService dataService;
+
+ public DeviceDataController(DeviceDataService dataService) {
+ this.dataService = dataService;
+ }
+
+ @PostMapping("/commit")
+ public ResponseData DeviceDataCommit(@RequestBody DataReportParam dataReportParam) {
+ return dataService.DeviceDataCommit(dataReportParam);
+ }
+
+ @PostMapping("/heartbeat")
+ public ResponseData heartBeat(@RequestBody HeartbeatParam heartbeatParam) {
+ return dataService.heartBeatSave(heartbeatParam);
+ }
+
+ @PostMapping("/gas/receiver")
+ public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
+ return dataService.heartBeatSave(heartbeatParam);
+ }
+
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
new file mode 100644
index 0000000..47e7cce
--- /dev/null
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -0,0 +1,9 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.DataGasReport;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface DataGasMapper extends BaseMapper {
+}
diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java
new file mode 100644
index 0000000..a550aa3
--- /dev/null
+++ b/src/main/java/com/casic/dao/DeviceMapper.java
@@ -0,0 +1,23 @@
+package com.casic.dao;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.HashMap;
+
+@Mapper
+public interface DeviceMapper {
+
+ /**
+ * @param status 设备在线状态 1-0
+ * @param imei 设备唯一识别编号
+ * @return
+ */
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{status} " +
+ "WHERE DEVCODE=#{imei} ")
+ Integer onlineStatusByImei(@Param("status") String status,
+ @Param("imei") String imei);
+
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
new file mode 100644
index 0000000..c797e55
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
@@ -0,0 +1,68 @@
+package com.casic.dao.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.casic.dao.DataGasMapper;
+import com.casic.entity.DataGasReport;
+import com.casic.model.DataReportParam;
+import com.casic.model.HeartbeatParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.management.Query;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.DateTimeException;
+import java.util.*;
+
+@Slf4j
+@Component
+public class DeviceDataMapper {
+ @Autowired
+ DataGasMapper dataGasMapper;
+
+ public int addDeviceData(DataReportParam dataReportParam) {
+ DataGasReport dataGasReport = new DataGasReport();
+ dataGasReport.setImei(dataReportParam.getIMEI());
+ dataGasReport.setImsi(dataReportParam.getIMSI());
+ try {
+ dataGasReport.setUptime(new Date(Long.valueOf(dataReportParam.getTimestamp())));
+ } catch (DateTimeException dex) {
+ log.error("主题,日期转换出错,时间戳为{},异常信息为{}", dataReportParam.getTimestamp(), dex);
+ }
+ dataGasReport.setGasSampleValue(dataReportParam.getPayload().get("gas_sensor_state").toString());
+ dataGasReport.setGasSensorState(dataReportParam.getPayload().get("gas_sample_value").toString());
+ dataGasReport.setLogtime(new Date());
+ return dataGasMapper.insert(dataGasReport);
+ }
+
+ public int editDeviceData(HeartbeatParam heartbeatParam) {
+ DataGasReport dataGasReport = new DataGasReport();
+ dataGasReport.setImei(heartbeatParam.getIMEI());
+ dataGasReport.setImsi(heartbeatParam.getIMSI());
+ //电池电压-电池点亮
+ dataGasReport.setBatteryVoltage(heartbeatParam.getBattery_voltage());
+ dataGasReport.setBatteryValue(heartbeatParam.getBattery_value());
+ //
+ dataGasReport.setCellId(heartbeatParam.getCell_id());
+ dataGasReport.setIccid(heartbeatParam.getICCID());
+ //噪音、接收功率、小区标识
+ dataGasReport.setPci(heartbeatParam.getPci());
+ dataGasReport.setRsrp(heartbeatParam.getRsrp());
+ dataGasReport.setSinr(heartbeatParam.getSinr());
+ dataGasReport.setHeartbeatTime(heartbeatParam.getHeartbeat_time());
+ QueryWrapper queryWrapper = new QueryWrapper()
+ .eq("DEVCODE", heartbeatParam.getIMEI())
+ .orderByDesc("LOGTIME").last("limit 1");
+ List dataGasReportList = dataGasMapper.selectList(queryWrapper);
+ if (dataGasReportList.size() == 0) {
+ return 0;
+ } else {
+ dataGasReport.setId(dataGasReportList.get(0).getId());
+ }
+ return dataGasMapper.updateById(dataGasReport);
+ }
+
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
new file mode 100644
index 0000000..c43ccdf
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasReport.java
@@ -0,0 +1,69 @@
+package com.casic.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author cz
+ * @date 2022-7-1
+ */
+@Data
+@TableName("data_gas_dector")
+public class DataGasReport {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @TableField("devcode")
+ private String imei;
+ private String wellcode;
+
+ private String imsi;
+ /**
+ * --事件类型 0正常 1低报 2高报
+ */
+ private String gasSensorState;
+ /**
+ * --浓度值
+ */
+ private String gasSampleValue;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ /**
+ * --心跳周期
+ */
+ private String heartbeatTime;
+
+ /**
+ * --小区位置信息
+ */
+ private String cellId;
+ /**
+ * --电池电压
+ */
+ private String batteryVoltage;
+ /**
+ * --电池电量
+ */
+ private String batteryValue;
+ private String iccid;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/model/DataReportParam.java b/src/main/java/com/casic/model/DataReportParam.java
new file mode 100644
index 0000000..082814c
--- /dev/null
+++ b/src/main/java/com/casic/model/DataReportParam.java
@@ -0,0 +1,35 @@
+package com.casic.model;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.util.Map;
+
+/**
+ * @author cz
+ * @date 2022-7-1
+ */
+@Data
+public class DataReportParam {
+ private String upPacketSN;
+ private String upDataSN;
+ private String topic;
+ private String timestamp;
+ private String tenantId;
+ private String serviceId;
+ private String protocol;
+ private String productId;
+ /**
+ * gas_sensor_state = 1, --事件类型 0 正常 1 低报 2 高报
+ * gas_sample_value = 11-- 浓度值
+ */
+ private Map payload;
+ private String messageType;
+ private String deviceType;
+ private String deviceId;
+ private String assocAssetId;
+ @JsonProperty(value = "IMSI", required = true)
+ private String IMSI;
+ @JsonProperty(value = "IMEI", required = true)
+ private String IMEI;
+}
diff --git a/src/main/java/com/casic/model/DeviceOnlineParam.java b/src/main/java/com/casic/model/DeviceOnlineParam.java
new file mode 100644
index 0000000..b92e44d
--- /dev/null
+++ b/src/main/java/com/casic/model/DeviceOnlineParam.java
@@ -0,0 +1,43 @@
+package com.casic.model;
+
+import lombok.Data;
+
+/**
+ * @author cz
+ * @date 2022-07-01
+ */
+@Data
+public class DeviceOnlineParam {
+ /**
+ * 毫秒值
+ */
+ private String timestamp;
+ /**
+ * Ctwing租户id
+ */
+ private String tenantId;
+ /**
+ * 通信协议
+ */
+ private String protocol;
+ /**
+ * 产品id
+ */
+ private String productId;
+ /**
+ * 消息类型
+ */
+ private String messageType;
+ /**
+ * 事件类型 1上线 0下线
+ */
+ private String eventType;
+ /**
+ * 设备ID
+ */
+ private String deviceId;
+ /**
+ * 设备编号
+ */
+ private String imei;
+}
diff --git a/src/main/java/com/casic/model/HeartbeatParam.java b/src/main/java/com/casic/model/HeartbeatParam.java
new file mode 100644
index 0000000..8ff029d
--- /dev/null
+++ b/src/main/java/com/casic/model/HeartbeatParam.java
@@ -0,0 +1,75 @@
+package com.casic.model;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+/**
+ * @author cz
+ * @date 2022-7-1
+ */
+@Data
+public class HeartbeatParam {
+
+ /**
+ * 终端型号
+ */
+ private String terminal_type;
+ /**
+ * 软件版本
+ */
+ private String software_version;
+ /**
+ * 信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * 参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * 物理小区标识
+ */
+ private String pci;
+ /**
+ * 厂家名称
+ */
+ private String manufacturer_name;
+ /**
+ * 心跳周期
+ */
+ private String heartbeat_time;
+ /**
+ * 硬件版本
+ */
+ private String hardware_version;
+ /**
+ * 无线信号覆盖等级
+ */
+ private String ecl;
+ /**
+ * 小区位置信息
+ */
+ private String cell_id;
+ /**
+ * 电池电压
+ */
+ private String battery_voltage;
+ /**
+ * 电池电量
+ */
+ private String battery_value;
+ /**
+ * IMSI
+ */
+ @JsonProperty(value = "IMSI",required = true)
+ private String IMSI;
+ /**
+ * imei
+ */
+ @JsonProperty(value = "IMEI",required = true)
+ private String IMEI;
+ /**
+ * ICCID
+ */
+ private String ICCID;
+}
diff --git a/src/main/java/com/casic/model/ResponseData.java b/src/main/java/com/casic/model/ResponseData.java
new file mode 100644
index 0000000..847c9c8
--- /dev/null
+++ b/src/main/java/com/casic/model/ResponseData.java
@@ -0,0 +1,21 @@
+package com.casic.model;
+
+import lombok.Data;
+
+/**
+ * @author cz
+ * @date 2022-6-20
+ */
+@Data
+public class ResponseData {
+
+ public static final String DEFAULT_SUCCESS_MESSAGE = "请求成功";
+ public static final String DEFAULT_ERROR_MESSAGE = "网络异常";
+ public static final Integer DEFAULT_SUCCESS_CODE = 200;
+ public static final Integer DEFAULT_ERROR_CODE = 500;
+ private Boolean success;
+ private Integer code;
+ private String message;
+ private Object data;
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java
new file mode 100644
index 0000000..d883fe4
--- /dev/null
+++ b/src/main/java/com/casic/service/DeviceDataService.java
@@ -0,0 +1,27 @@
+package com.casic.service;
+
+import com.casic.model.DataReportParam;
+import com.casic.model.HeartbeatParam;
+import com.casic.model.ResponseData;
+
+/**
+ * @author cz
+ * @date 2022
+ */
+public interface DeviceDataService {
+
+ /**
+ *
+ * @param dataReportParam
+ * @return
+ */
+ ResponseData DeviceDataCommit(DataReportParam dataReportParam);
+
+ /**
+ *
+ * @param heartbeatParam
+ * @return
+ */
+ ResponseData heartBeatSave(HeartbeatParam heartbeatParam);
+
+}
diff --git a/src/main/java/com/casic/service/DeviceService.java b/src/main/java/com/casic/service/DeviceService.java
new file mode 100644
index 0000000..6d21bf4
--- /dev/null
+++ b/src/main/java/com/casic/service/DeviceService.java
@@ -0,0 +1,16 @@
+package com.casic.service;
+
+import com.casic.model.*;
+
+public interface DeviceService {
+
+ ResponseData testMysql();
+
+ /**
+ * 设备状态更新
+ *
+ * @param
+ * @return
+ */
+ ResponseData onlineStatusByImei(String status,String imei);
+}
diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
new file mode 100644
index 0000000..93f0685
--- /dev/null
+++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
@@ -0,0 +1,59 @@
+package com.casic.service.impl;
+
+import com.casic.dao.impl.DeviceDataMapper;
+import com.casic.model.*;
+import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author cz
+ * @date 2022-6-20
+ */
+@Slf4j
+@Service
+public class DeviceDataServiceImpl implements DeviceDataService {
+
+ @Autowired
+ DeviceDataMapper deviceDataMapper;
+
+ /**
+ * @param dataReportParam
+ * @return
+ */
+ public ResponseData DeviceDataCommit(DataReportParam dataReportParam) {
+ ResponseData responseData = new ResponseData();
+ try {
+ deviceDataMapper.addDeviceData(dataReportParam);
+ responseData.setCode(ResponseData.DEFAULT_SUCCESS_CODE);
+ responseData.setMessage(ResponseData.DEFAULT_SUCCESS_MESSAGE);
+ } catch (DataAccessException sqlex) {
+ responseData.setCode(ResponseData.DEFAULT_ERROR_CODE);
+ responseData.setMessage("请求数据异常");
+ responseData.setSuccess(true);
+ log.error("主题:数据上报保存出现错误,异常信息为{}", sqlex);
+ }
+ return responseData;
+ }
+
+ /**
+ * @param heartbeatParam
+ * @return
+ */
+ public ResponseData heartBeatSave(HeartbeatParam heartbeatParam) {
+ ResponseData responseData = new ResponseData();
+ try {
+ deviceDataMapper.editDeviceData(heartbeatParam);
+ responseData.setCode(ResponseData.DEFAULT_SUCCESS_CODE);
+ responseData.setMessage(ResponseData.DEFAULT_SUCCESS_MESSAGE);
+ } catch (DataAccessException sqlex) {
+ responseData.setCode(ResponseData.DEFAULT_ERROR_CODE);
+ responseData.setMessage("请求数据异常");
+ responseData.setSuccess(true);
+ log.error("主题:数据心跳出现错误,异常信息为{}", sqlex);
+ }
+ return responseData;
+ }
+}
diff --git a/src/main/java/com/casic/service/impl/DeviceServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java
new file mode 100644
index 0000000..687dc72
--- /dev/null
+++ b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java
@@ -0,0 +1,41 @@
+package com.casic.service.impl;
+
+import com.casic.dao.DeviceMapper;
+import com.casic.model.ResponseData;
+import com.casic.service.DeviceService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
+import org.springframework.stereotype.Service;
+
+@Slf4j
+@Service
+public class DeviceServiceImpl implements DeviceService {
+
+ @Autowired
+ private DeviceMapper deviceData;
+
+ public ResponseData testMysql() {
+ ResponseData responseData = new ResponseData();
+ responseData.setMessage("保存成功");
+// HashMap alarmMsg = deviceDataDao.getAlarmMsg();
+ responseData.setCode(1);
+// responseData.setData(alarmMsg);
+ return responseData;
+ }
+
+ public ResponseData onlineStatusByImei(String status, String imei) {
+ ResponseData responseData = new ResponseData();
+ try {
+ deviceData.onlineStatusByImei(status, imei);
+ responseData.setCode(ResponseData.DEFAULT_SUCCESS_CODE);
+ responseData.setMessage(ResponseData.DEFAULT_SUCCESS_MESSAGE);
+ } catch (DataAccessException sqlex) {
+ responseData.setCode(ResponseData.DEFAULT_ERROR_CODE);
+ responseData.setMessage("请求数据异常");
+ responseData.setSuccess(true);
+ log.error("主题:设备上线下线状态保存出现错误,异常信息为{}", sqlex);
+ }
+ return responseData;
+ }
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..74d7bd1
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,123 @@
+
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.1.3.RELEASE
+
+
+ 4.0.0
+
+ com.casic.sensor
+ sensor-transfer
+ 1.0-SNAPSHOT
+ war
+
+
+ UTF-8
+ UTF-8
+ 1.8
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-tomcat
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.1.3.RELEASE
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-jdbc
+ 2.1.3.RELEASE
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+ compile
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+ org.postgresql
+ postgresql
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+
+ com.alibaba
+ druid
+ 1.2.6
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/build/package.xml b/src/main/build/package.xml
new file mode 100644
index 0000000..96d895e
--- /dev/null
+++ b/src/main/build/package.xml
@@ -0,0 +1,43 @@
+
+
+ package
+
+ zip
+ tar.gz
+
+ true
+
+
+
+ true
+ true
+ lib
+ runtime
+
+
+
+
+ src/main/build/bin
+
+ start.bat
+ start.sh
+
+ true
+ 0744
+ /
+
+
+ src/main/resources/config
+ true
+
+ *.yml
+ /*/*
+
+ /config
+
+
+ src/main/resources/i18n
+ /
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..c55e37d
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,25 @@
+package com.casic;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.ServletComponentScan;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.context.annotation.ComponentScan;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author cz
+ * @Date 2022/06/20 14:28
+ */
+
+@Slf4j
+@ComponentScan(basePackages= "com.casic.**")
+@SpringBootApplication
+public class CasicApplication {
+ public static void main(String[] args) {
+ log.info("CasicApplication is success!");
+ SpringApplication.run(CasicApplication.class, args);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java
new file mode 100644
index 0000000..653db64
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceController.java
@@ -0,0 +1,32 @@
+package com.casic.controller;
+
+import com.casic.model.*;
+import com.casic.service.DeviceService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+@RestController
+@RequestMapping("/device")
+public class DeviceController {
+
+
+ private final DeviceService deviceService;
+
+ public DeviceController(DeviceService deviceService) {
+ this.deviceService = deviceService;
+ }
+
+ @RequestMapping("/helloWord")
+ public ResponseData helloWord() {
+ return deviceService.testMysql();
+ }
+
+ @PostMapping("/online")
+ public ResponseData DeviceOnline(@RequestBody DeviceOnlineParam onlineParam) {
+ return deviceService.onlineStatusByImei(onlineParam.getEventType(),onlineParam.getImei());
+ }
+
+}
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
new file mode 100644
index 0000000..e5351c9
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -0,0 +1,37 @@
+package com.casic.controller;
+
+import com.casic.model.DataReportParam;
+import com.casic.model.HeartbeatParam;
+import com.casic.model.ResponseData;
+import com.casic.service.DeviceDataService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RequestMapping("/data")
+@RestController
+public class DeviceDataController {
+
+ private final DeviceDataService dataService;
+
+ public DeviceDataController(DeviceDataService dataService) {
+ this.dataService = dataService;
+ }
+
+ @PostMapping("/commit")
+ public ResponseData DeviceDataCommit(@RequestBody DataReportParam dataReportParam) {
+ return dataService.DeviceDataCommit(dataReportParam);
+ }
+
+ @PostMapping("/heartbeat")
+ public ResponseData heartBeat(@RequestBody HeartbeatParam heartbeatParam) {
+ return dataService.heartBeatSave(heartbeatParam);
+ }
+
+ @PostMapping("/gas/receiver")
+ public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
+ return dataService.heartBeatSave(heartbeatParam);
+ }
+
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
new file mode 100644
index 0000000..47e7cce
--- /dev/null
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -0,0 +1,9 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.DataGasReport;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface DataGasMapper extends BaseMapper {
+}
diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java
new file mode 100644
index 0000000..a550aa3
--- /dev/null
+++ b/src/main/java/com/casic/dao/DeviceMapper.java
@@ -0,0 +1,23 @@
+package com.casic.dao;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.HashMap;
+
+@Mapper
+public interface DeviceMapper {
+
+ /**
+ * @param status 设备在线状态 1-0
+ * @param imei 设备唯一识别编号
+ * @return
+ */
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{status} " +
+ "WHERE DEVCODE=#{imei} ")
+ Integer onlineStatusByImei(@Param("status") String status,
+ @Param("imei") String imei);
+
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
new file mode 100644
index 0000000..c797e55
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
@@ -0,0 +1,68 @@
+package com.casic.dao.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.casic.dao.DataGasMapper;
+import com.casic.entity.DataGasReport;
+import com.casic.model.DataReportParam;
+import com.casic.model.HeartbeatParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.management.Query;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.DateTimeException;
+import java.util.*;
+
+@Slf4j
+@Component
+public class DeviceDataMapper {
+ @Autowired
+ DataGasMapper dataGasMapper;
+
+ public int addDeviceData(DataReportParam dataReportParam) {
+ DataGasReport dataGasReport = new DataGasReport();
+ dataGasReport.setImei(dataReportParam.getIMEI());
+ dataGasReport.setImsi(dataReportParam.getIMSI());
+ try {
+ dataGasReport.setUptime(new Date(Long.valueOf(dataReportParam.getTimestamp())));
+ } catch (DateTimeException dex) {
+ log.error("主题,日期转换出错,时间戳为{},异常信息为{}", dataReportParam.getTimestamp(), dex);
+ }
+ dataGasReport.setGasSampleValue(dataReportParam.getPayload().get("gas_sensor_state").toString());
+ dataGasReport.setGasSensorState(dataReportParam.getPayload().get("gas_sample_value").toString());
+ dataGasReport.setLogtime(new Date());
+ return dataGasMapper.insert(dataGasReport);
+ }
+
+ public int editDeviceData(HeartbeatParam heartbeatParam) {
+ DataGasReport dataGasReport = new DataGasReport();
+ dataGasReport.setImei(heartbeatParam.getIMEI());
+ dataGasReport.setImsi(heartbeatParam.getIMSI());
+ //电池电压-电池点亮
+ dataGasReport.setBatteryVoltage(heartbeatParam.getBattery_voltage());
+ dataGasReport.setBatteryValue(heartbeatParam.getBattery_value());
+ //
+ dataGasReport.setCellId(heartbeatParam.getCell_id());
+ dataGasReport.setIccid(heartbeatParam.getICCID());
+ //噪音、接收功率、小区标识
+ dataGasReport.setPci(heartbeatParam.getPci());
+ dataGasReport.setRsrp(heartbeatParam.getRsrp());
+ dataGasReport.setSinr(heartbeatParam.getSinr());
+ dataGasReport.setHeartbeatTime(heartbeatParam.getHeartbeat_time());
+ QueryWrapper queryWrapper = new QueryWrapper()
+ .eq("DEVCODE", heartbeatParam.getIMEI())
+ .orderByDesc("LOGTIME").last("limit 1");
+ List dataGasReportList = dataGasMapper.selectList(queryWrapper);
+ if (dataGasReportList.size() == 0) {
+ return 0;
+ } else {
+ dataGasReport.setId(dataGasReportList.get(0).getId());
+ }
+ return dataGasMapper.updateById(dataGasReport);
+ }
+
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
new file mode 100644
index 0000000..c43ccdf
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasReport.java
@@ -0,0 +1,69 @@
+package com.casic.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author cz
+ * @date 2022-7-1
+ */
+@Data
+@TableName("data_gas_dector")
+public class DataGasReport {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @TableField("devcode")
+ private String imei;
+ private String wellcode;
+
+ private String imsi;
+ /**
+ * --事件类型 0正常 1低报 2高报
+ */
+ private String gasSensorState;
+ /**
+ * --浓度值
+ */
+ private String gasSampleValue;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ /**
+ * --心跳周期
+ */
+ private String heartbeatTime;
+
+ /**
+ * --小区位置信息
+ */
+ private String cellId;
+ /**
+ * --电池电压
+ */
+ private String batteryVoltage;
+ /**
+ * --电池电量
+ */
+ private String batteryValue;
+ private String iccid;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/model/DataReportParam.java b/src/main/java/com/casic/model/DataReportParam.java
new file mode 100644
index 0000000..082814c
--- /dev/null
+++ b/src/main/java/com/casic/model/DataReportParam.java
@@ -0,0 +1,35 @@
+package com.casic.model;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.util.Map;
+
+/**
+ * @author cz
+ * @date 2022-7-1
+ */
+@Data
+public class DataReportParam {
+ private String upPacketSN;
+ private String upDataSN;
+ private String topic;
+ private String timestamp;
+ private String tenantId;
+ private String serviceId;
+ private String protocol;
+ private String productId;
+ /**
+ * gas_sensor_state = 1, --事件类型 0 正常 1 低报 2 高报
+ * gas_sample_value = 11-- 浓度值
+ */
+ private Map payload;
+ private String messageType;
+ private String deviceType;
+ private String deviceId;
+ private String assocAssetId;
+ @JsonProperty(value = "IMSI", required = true)
+ private String IMSI;
+ @JsonProperty(value = "IMEI", required = true)
+ private String IMEI;
+}
diff --git a/src/main/java/com/casic/model/DeviceOnlineParam.java b/src/main/java/com/casic/model/DeviceOnlineParam.java
new file mode 100644
index 0000000..b92e44d
--- /dev/null
+++ b/src/main/java/com/casic/model/DeviceOnlineParam.java
@@ -0,0 +1,43 @@
+package com.casic.model;
+
+import lombok.Data;
+
+/**
+ * @author cz
+ * @date 2022-07-01
+ */
+@Data
+public class DeviceOnlineParam {
+ /**
+ * 毫秒值
+ */
+ private String timestamp;
+ /**
+ * Ctwing租户id
+ */
+ private String tenantId;
+ /**
+ * 通信协议
+ */
+ private String protocol;
+ /**
+ * 产品id
+ */
+ private String productId;
+ /**
+ * 消息类型
+ */
+ private String messageType;
+ /**
+ * 事件类型 1上线 0下线
+ */
+ private String eventType;
+ /**
+ * 设备ID
+ */
+ private String deviceId;
+ /**
+ * 设备编号
+ */
+ private String imei;
+}
diff --git a/src/main/java/com/casic/model/HeartbeatParam.java b/src/main/java/com/casic/model/HeartbeatParam.java
new file mode 100644
index 0000000..8ff029d
--- /dev/null
+++ b/src/main/java/com/casic/model/HeartbeatParam.java
@@ -0,0 +1,75 @@
+package com.casic.model;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+/**
+ * @author cz
+ * @date 2022-7-1
+ */
+@Data
+public class HeartbeatParam {
+
+ /**
+ * 终端型号
+ */
+ private String terminal_type;
+ /**
+ * 软件版本
+ */
+ private String software_version;
+ /**
+ * 信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * 参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * 物理小区标识
+ */
+ private String pci;
+ /**
+ * 厂家名称
+ */
+ private String manufacturer_name;
+ /**
+ * 心跳周期
+ */
+ private String heartbeat_time;
+ /**
+ * 硬件版本
+ */
+ private String hardware_version;
+ /**
+ * 无线信号覆盖等级
+ */
+ private String ecl;
+ /**
+ * 小区位置信息
+ */
+ private String cell_id;
+ /**
+ * 电池电压
+ */
+ private String battery_voltage;
+ /**
+ * 电池电量
+ */
+ private String battery_value;
+ /**
+ * IMSI
+ */
+ @JsonProperty(value = "IMSI",required = true)
+ private String IMSI;
+ /**
+ * imei
+ */
+ @JsonProperty(value = "IMEI",required = true)
+ private String IMEI;
+ /**
+ * ICCID
+ */
+ private String ICCID;
+}
diff --git a/src/main/java/com/casic/model/ResponseData.java b/src/main/java/com/casic/model/ResponseData.java
new file mode 100644
index 0000000..847c9c8
--- /dev/null
+++ b/src/main/java/com/casic/model/ResponseData.java
@@ -0,0 +1,21 @@
+package com.casic.model;
+
+import lombok.Data;
+
+/**
+ * @author cz
+ * @date 2022-6-20
+ */
+@Data
+public class ResponseData {
+
+ public static final String DEFAULT_SUCCESS_MESSAGE = "请求成功";
+ public static final String DEFAULT_ERROR_MESSAGE = "网络异常";
+ public static final Integer DEFAULT_SUCCESS_CODE = 200;
+ public static final Integer DEFAULT_ERROR_CODE = 500;
+ private Boolean success;
+ private Integer code;
+ private String message;
+ private Object data;
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java
new file mode 100644
index 0000000..d883fe4
--- /dev/null
+++ b/src/main/java/com/casic/service/DeviceDataService.java
@@ -0,0 +1,27 @@
+package com.casic.service;
+
+import com.casic.model.DataReportParam;
+import com.casic.model.HeartbeatParam;
+import com.casic.model.ResponseData;
+
+/**
+ * @author cz
+ * @date 2022
+ */
+public interface DeviceDataService {
+
+ /**
+ *
+ * @param dataReportParam
+ * @return
+ */
+ ResponseData DeviceDataCommit(DataReportParam dataReportParam);
+
+ /**
+ *
+ * @param heartbeatParam
+ * @return
+ */
+ ResponseData heartBeatSave(HeartbeatParam heartbeatParam);
+
+}
diff --git a/src/main/java/com/casic/service/DeviceService.java b/src/main/java/com/casic/service/DeviceService.java
new file mode 100644
index 0000000..6d21bf4
--- /dev/null
+++ b/src/main/java/com/casic/service/DeviceService.java
@@ -0,0 +1,16 @@
+package com.casic.service;
+
+import com.casic.model.*;
+
+public interface DeviceService {
+
+ ResponseData testMysql();
+
+ /**
+ * 设备状态更新
+ *
+ * @param
+ * @return
+ */
+ ResponseData onlineStatusByImei(String status,String imei);
+}
diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
new file mode 100644
index 0000000..93f0685
--- /dev/null
+++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
@@ -0,0 +1,59 @@
+package com.casic.service.impl;
+
+import com.casic.dao.impl.DeviceDataMapper;
+import com.casic.model.*;
+import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author cz
+ * @date 2022-6-20
+ */
+@Slf4j
+@Service
+public class DeviceDataServiceImpl implements DeviceDataService {
+
+ @Autowired
+ DeviceDataMapper deviceDataMapper;
+
+ /**
+ * @param dataReportParam
+ * @return
+ */
+ public ResponseData DeviceDataCommit(DataReportParam dataReportParam) {
+ ResponseData responseData = new ResponseData();
+ try {
+ deviceDataMapper.addDeviceData(dataReportParam);
+ responseData.setCode(ResponseData.DEFAULT_SUCCESS_CODE);
+ responseData.setMessage(ResponseData.DEFAULT_SUCCESS_MESSAGE);
+ } catch (DataAccessException sqlex) {
+ responseData.setCode(ResponseData.DEFAULT_ERROR_CODE);
+ responseData.setMessage("请求数据异常");
+ responseData.setSuccess(true);
+ log.error("主题:数据上报保存出现错误,异常信息为{}", sqlex);
+ }
+ return responseData;
+ }
+
+ /**
+ * @param heartbeatParam
+ * @return
+ */
+ public ResponseData heartBeatSave(HeartbeatParam heartbeatParam) {
+ ResponseData responseData = new ResponseData();
+ try {
+ deviceDataMapper.editDeviceData(heartbeatParam);
+ responseData.setCode(ResponseData.DEFAULT_SUCCESS_CODE);
+ responseData.setMessage(ResponseData.DEFAULT_SUCCESS_MESSAGE);
+ } catch (DataAccessException sqlex) {
+ responseData.setCode(ResponseData.DEFAULT_ERROR_CODE);
+ responseData.setMessage("请求数据异常");
+ responseData.setSuccess(true);
+ log.error("主题:数据心跳出现错误,异常信息为{}", sqlex);
+ }
+ return responseData;
+ }
+}
diff --git a/src/main/java/com/casic/service/impl/DeviceServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java
new file mode 100644
index 0000000..687dc72
--- /dev/null
+++ b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java
@@ -0,0 +1,41 @@
+package com.casic.service.impl;
+
+import com.casic.dao.DeviceMapper;
+import com.casic.model.ResponseData;
+import com.casic.service.DeviceService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
+import org.springframework.stereotype.Service;
+
+@Slf4j
+@Service
+public class DeviceServiceImpl implements DeviceService {
+
+ @Autowired
+ private DeviceMapper deviceData;
+
+ public ResponseData testMysql() {
+ ResponseData responseData = new ResponseData();
+ responseData.setMessage("保存成功");
+// HashMap alarmMsg = deviceDataDao.getAlarmMsg();
+ responseData.setCode(1);
+// responseData.setData(alarmMsg);
+ return responseData;
+ }
+
+ public ResponseData onlineStatusByImei(String status, String imei) {
+ ResponseData responseData = new ResponseData();
+ try {
+ deviceData.onlineStatusByImei(status, imei);
+ responseData.setCode(ResponseData.DEFAULT_SUCCESS_CODE);
+ responseData.setMessage(ResponseData.DEFAULT_SUCCESS_MESSAGE);
+ } catch (DataAccessException sqlex) {
+ responseData.setCode(ResponseData.DEFAULT_ERROR_CODE);
+ responseData.setMessage("请求数据异常");
+ responseData.setSuccess(true);
+ log.error("主题:设备上线下线状态保存出现错误,异常信息为{}", sqlex);
+ }
+ return responseData;
+ }
+}
diff --git a/src/main/java/com/casic/util/ConestUtil.java b/src/main/java/com/casic/util/ConestUtil.java
new file mode 100644
index 0000000..2a4d305
--- /dev/null
+++ b/src/main/java/com/casic/util/ConestUtil.java
@@ -0,0 +1,6 @@
+package com.casic.util;
+
+public class ConestUtil {
+
+
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..74d7bd1
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,123 @@
+
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.1.3.RELEASE
+
+
+ 4.0.0
+
+ com.casic.sensor
+ sensor-transfer
+ 1.0-SNAPSHOT
+ war
+
+
+ UTF-8
+ UTF-8
+ 1.8
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-tomcat
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.1.3.RELEASE
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-jdbc
+ 2.1.3.RELEASE
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+ compile
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+ org.postgresql
+ postgresql
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+
+ com.alibaba
+ druid
+ 1.2.6
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/build/package.xml b/src/main/build/package.xml
new file mode 100644
index 0000000..96d895e
--- /dev/null
+++ b/src/main/build/package.xml
@@ -0,0 +1,43 @@
+
+
+ package
+
+ zip
+ tar.gz
+
+ true
+
+
+
+ true
+ true
+ lib
+ runtime
+
+
+
+
+ src/main/build/bin
+
+ start.bat
+ start.sh
+
+ true
+ 0744
+ /
+
+
+ src/main/resources/config
+ true
+
+ *.yml
+ /*/*
+
+ /config
+
+
+ src/main/resources/i18n
+ /
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..c55e37d
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,25 @@
+package com.casic;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.ServletComponentScan;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.context.annotation.ComponentScan;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author cz
+ * @Date 2022/06/20 14:28
+ */
+
+@Slf4j
+@ComponentScan(basePackages= "com.casic.**")
+@SpringBootApplication
+public class CasicApplication {
+ public static void main(String[] args) {
+ log.info("CasicApplication is success!");
+ SpringApplication.run(CasicApplication.class, args);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java
new file mode 100644
index 0000000..653db64
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceController.java
@@ -0,0 +1,32 @@
+package com.casic.controller;
+
+import com.casic.model.*;
+import com.casic.service.DeviceService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+@RestController
+@RequestMapping("/device")
+public class DeviceController {
+
+
+ private final DeviceService deviceService;
+
+ public DeviceController(DeviceService deviceService) {
+ this.deviceService = deviceService;
+ }
+
+ @RequestMapping("/helloWord")
+ public ResponseData helloWord() {
+ return deviceService.testMysql();
+ }
+
+ @PostMapping("/online")
+ public ResponseData DeviceOnline(@RequestBody DeviceOnlineParam onlineParam) {
+ return deviceService.onlineStatusByImei(onlineParam.getEventType(),onlineParam.getImei());
+ }
+
+}
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
new file mode 100644
index 0000000..e5351c9
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -0,0 +1,37 @@
+package com.casic.controller;
+
+import com.casic.model.DataReportParam;
+import com.casic.model.HeartbeatParam;
+import com.casic.model.ResponseData;
+import com.casic.service.DeviceDataService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RequestMapping("/data")
+@RestController
+public class DeviceDataController {
+
+ private final DeviceDataService dataService;
+
+ public DeviceDataController(DeviceDataService dataService) {
+ this.dataService = dataService;
+ }
+
+ @PostMapping("/commit")
+ public ResponseData DeviceDataCommit(@RequestBody DataReportParam dataReportParam) {
+ return dataService.DeviceDataCommit(dataReportParam);
+ }
+
+ @PostMapping("/heartbeat")
+ public ResponseData heartBeat(@RequestBody HeartbeatParam heartbeatParam) {
+ return dataService.heartBeatSave(heartbeatParam);
+ }
+
+ @PostMapping("/gas/receiver")
+ public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
+ return dataService.heartBeatSave(heartbeatParam);
+ }
+
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
new file mode 100644
index 0000000..47e7cce
--- /dev/null
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -0,0 +1,9 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.DataGasReport;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface DataGasMapper extends BaseMapper {
+}
diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java
new file mode 100644
index 0000000..a550aa3
--- /dev/null
+++ b/src/main/java/com/casic/dao/DeviceMapper.java
@@ -0,0 +1,23 @@
+package com.casic.dao;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.HashMap;
+
+@Mapper
+public interface DeviceMapper {
+
+ /**
+ * @param status 设备在线状态 1-0
+ * @param imei 设备唯一识别编号
+ * @return
+ */
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{status} " +
+ "WHERE DEVCODE=#{imei} ")
+ Integer onlineStatusByImei(@Param("status") String status,
+ @Param("imei") String imei);
+
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
new file mode 100644
index 0000000..c797e55
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
@@ -0,0 +1,68 @@
+package com.casic.dao.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.casic.dao.DataGasMapper;
+import com.casic.entity.DataGasReport;
+import com.casic.model.DataReportParam;
+import com.casic.model.HeartbeatParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.management.Query;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.DateTimeException;
+import java.util.*;
+
+@Slf4j
+@Component
+public class DeviceDataMapper {
+ @Autowired
+ DataGasMapper dataGasMapper;
+
+ public int addDeviceData(DataReportParam dataReportParam) {
+ DataGasReport dataGasReport = new DataGasReport();
+ dataGasReport.setImei(dataReportParam.getIMEI());
+ dataGasReport.setImsi(dataReportParam.getIMSI());
+ try {
+ dataGasReport.setUptime(new Date(Long.valueOf(dataReportParam.getTimestamp())));
+ } catch (DateTimeException dex) {
+ log.error("主题,日期转换出错,时间戳为{},异常信息为{}", dataReportParam.getTimestamp(), dex);
+ }
+ dataGasReport.setGasSampleValue(dataReportParam.getPayload().get("gas_sensor_state").toString());
+ dataGasReport.setGasSensorState(dataReportParam.getPayload().get("gas_sample_value").toString());
+ dataGasReport.setLogtime(new Date());
+ return dataGasMapper.insert(dataGasReport);
+ }
+
+ public int editDeviceData(HeartbeatParam heartbeatParam) {
+ DataGasReport dataGasReport = new DataGasReport();
+ dataGasReport.setImei(heartbeatParam.getIMEI());
+ dataGasReport.setImsi(heartbeatParam.getIMSI());
+ //电池电压-电池点亮
+ dataGasReport.setBatteryVoltage(heartbeatParam.getBattery_voltage());
+ dataGasReport.setBatteryValue(heartbeatParam.getBattery_value());
+ //
+ dataGasReport.setCellId(heartbeatParam.getCell_id());
+ dataGasReport.setIccid(heartbeatParam.getICCID());
+ //噪音、接收功率、小区标识
+ dataGasReport.setPci(heartbeatParam.getPci());
+ dataGasReport.setRsrp(heartbeatParam.getRsrp());
+ dataGasReport.setSinr(heartbeatParam.getSinr());
+ dataGasReport.setHeartbeatTime(heartbeatParam.getHeartbeat_time());
+ QueryWrapper queryWrapper = new QueryWrapper()
+ .eq("DEVCODE", heartbeatParam.getIMEI())
+ .orderByDesc("LOGTIME").last("limit 1");
+ List dataGasReportList = dataGasMapper.selectList(queryWrapper);
+ if (dataGasReportList.size() == 0) {
+ return 0;
+ } else {
+ dataGasReport.setId(dataGasReportList.get(0).getId());
+ }
+ return dataGasMapper.updateById(dataGasReport);
+ }
+
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
new file mode 100644
index 0000000..c43ccdf
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasReport.java
@@ -0,0 +1,69 @@
+package com.casic.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author cz
+ * @date 2022-7-1
+ */
+@Data
+@TableName("data_gas_dector")
+public class DataGasReport {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @TableField("devcode")
+ private String imei;
+ private String wellcode;
+
+ private String imsi;
+ /**
+ * --事件类型 0正常 1低报 2高报
+ */
+ private String gasSensorState;
+ /**
+ * --浓度值
+ */
+ private String gasSampleValue;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ /**
+ * --心跳周期
+ */
+ private String heartbeatTime;
+
+ /**
+ * --小区位置信息
+ */
+ private String cellId;
+ /**
+ * --电池电压
+ */
+ private String batteryVoltage;
+ /**
+ * --电池电量
+ */
+ private String batteryValue;
+ private String iccid;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/model/DataReportParam.java b/src/main/java/com/casic/model/DataReportParam.java
new file mode 100644
index 0000000..082814c
--- /dev/null
+++ b/src/main/java/com/casic/model/DataReportParam.java
@@ -0,0 +1,35 @@
+package com.casic.model;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.util.Map;
+
+/**
+ * @author cz
+ * @date 2022-7-1
+ */
+@Data
+public class DataReportParam {
+ private String upPacketSN;
+ private String upDataSN;
+ private String topic;
+ private String timestamp;
+ private String tenantId;
+ private String serviceId;
+ private String protocol;
+ private String productId;
+ /**
+ * gas_sensor_state = 1, --事件类型 0 正常 1 低报 2 高报
+ * gas_sample_value = 11-- 浓度值
+ */
+ private Map payload;
+ private String messageType;
+ private String deviceType;
+ private String deviceId;
+ private String assocAssetId;
+ @JsonProperty(value = "IMSI", required = true)
+ private String IMSI;
+ @JsonProperty(value = "IMEI", required = true)
+ private String IMEI;
+}
diff --git a/src/main/java/com/casic/model/DeviceOnlineParam.java b/src/main/java/com/casic/model/DeviceOnlineParam.java
new file mode 100644
index 0000000..b92e44d
--- /dev/null
+++ b/src/main/java/com/casic/model/DeviceOnlineParam.java
@@ -0,0 +1,43 @@
+package com.casic.model;
+
+import lombok.Data;
+
+/**
+ * @author cz
+ * @date 2022-07-01
+ */
+@Data
+public class DeviceOnlineParam {
+ /**
+ * 毫秒值
+ */
+ private String timestamp;
+ /**
+ * Ctwing租户id
+ */
+ private String tenantId;
+ /**
+ * 通信协议
+ */
+ private String protocol;
+ /**
+ * 产品id
+ */
+ private String productId;
+ /**
+ * 消息类型
+ */
+ private String messageType;
+ /**
+ * 事件类型 1上线 0下线
+ */
+ private String eventType;
+ /**
+ * 设备ID
+ */
+ private String deviceId;
+ /**
+ * 设备编号
+ */
+ private String imei;
+}
diff --git a/src/main/java/com/casic/model/HeartbeatParam.java b/src/main/java/com/casic/model/HeartbeatParam.java
new file mode 100644
index 0000000..8ff029d
--- /dev/null
+++ b/src/main/java/com/casic/model/HeartbeatParam.java
@@ -0,0 +1,75 @@
+package com.casic.model;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+/**
+ * @author cz
+ * @date 2022-7-1
+ */
+@Data
+public class HeartbeatParam {
+
+ /**
+ * 终端型号
+ */
+ private String terminal_type;
+ /**
+ * 软件版本
+ */
+ private String software_version;
+ /**
+ * 信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * 参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * 物理小区标识
+ */
+ private String pci;
+ /**
+ * 厂家名称
+ */
+ private String manufacturer_name;
+ /**
+ * 心跳周期
+ */
+ private String heartbeat_time;
+ /**
+ * 硬件版本
+ */
+ private String hardware_version;
+ /**
+ * 无线信号覆盖等级
+ */
+ private String ecl;
+ /**
+ * 小区位置信息
+ */
+ private String cell_id;
+ /**
+ * 电池电压
+ */
+ private String battery_voltage;
+ /**
+ * 电池电量
+ */
+ private String battery_value;
+ /**
+ * IMSI
+ */
+ @JsonProperty(value = "IMSI",required = true)
+ private String IMSI;
+ /**
+ * imei
+ */
+ @JsonProperty(value = "IMEI",required = true)
+ private String IMEI;
+ /**
+ * ICCID
+ */
+ private String ICCID;
+}
diff --git a/src/main/java/com/casic/model/ResponseData.java b/src/main/java/com/casic/model/ResponseData.java
new file mode 100644
index 0000000..847c9c8
--- /dev/null
+++ b/src/main/java/com/casic/model/ResponseData.java
@@ -0,0 +1,21 @@
+package com.casic.model;
+
+import lombok.Data;
+
+/**
+ * @author cz
+ * @date 2022-6-20
+ */
+@Data
+public class ResponseData {
+
+ public static final String DEFAULT_SUCCESS_MESSAGE = "请求成功";
+ public static final String DEFAULT_ERROR_MESSAGE = "网络异常";
+ public static final Integer DEFAULT_SUCCESS_CODE = 200;
+ public static final Integer DEFAULT_ERROR_CODE = 500;
+ private Boolean success;
+ private Integer code;
+ private String message;
+ private Object data;
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java
new file mode 100644
index 0000000..d883fe4
--- /dev/null
+++ b/src/main/java/com/casic/service/DeviceDataService.java
@@ -0,0 +1,27 @@
+package com.casic.service;
+
+import com.casic.model.DataReportParam;
+import com.casic.model.HeartbeatParam;
+import com.casic.model.ResponseData;
+
+/**
+ * @author cz
+ * @date 2022
+ */
+public interface DeviceDataService {
+
+ /**
+ *
+ * @param dataReportParam
+ * @return
+ */
+ ResponseData DeviceDataCommit(DataReportParam dataReportParam);
+
+ /**
+ *
+ * @param heartbeatParam
+ * @return
+ */
+ ResponseData heartBeatSave(HeartbeatParam heartbeatParam);
+
+}
diff --git a/src/main/java/com/casic/service/DeviceService.java b/src/main/java/com/casic/service/DeviceService.java
new file mode 100644
index 0000000..6d21bf4
--- /dev/null
+++ b/src/main/java/com/casic/service/DeviceService.java
@@ -0,0 +1,16 @@
+package com.casic.service;
+
+import com.casic.model.*;
+
+public interface DeviceService {
+
+ ResponseData testMysql();
+
+ /**
+ * 设备状态更新
+ *
+ * @param
+ * @return
+ */
+ ResponseData onlineStatusByImei(String status,String imei);
+}
diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
new file mode 100644
index 0000000..93f0685
--- /dev/null
+++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
@@ -0,0 +1,59 @@
+package com.casic.service.impl;
+
+import com.casic.dao.impl.DeviceDataMapper;
+import com.casic.model.*;
+import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author cz
+ * @date 2022-6-20
+ */
+@Slf4j
+@Service
+public class DeviceDataServiceImpl implements DeviceDataService {
+
+ @Autowired
+ DeviceDataMapper deviceDataMapper;
+
+ /**
+ * @param dataReportParam
+ * @return
+ */
+ public ResponseData DeviceDataCommit(DataReportParam dataReportParam) {
+ ResponseData responseData = new ResponseData();
+ try {
+ deviceDataMapper.addDeviceData(dataReportParam);
+ responseData.setCode(ResponseData.DEFAULT_SUCCESS_CODE);
+ responseData.setMessage(ResponseData.DEFAULT_SUCCESS_MESSAGE);
+ } catch (DataAccessException sqlex) {
+ responseData.setCode(ResponseData.DEFAULT_ERROR_CODE);
+ responseData.setMessage("请求数据异常");
+ responseData.setSuccess(true);
+ log.error("主题:数据上报保存出现错误,异常信息为{}", sqlex);
+ }
+ return responseData;
+ }
+
+ /**
+ * @param heartbeatParam
+ * @return
+ */
+ public ResponseData heartBeatSave(HeartbeatParam heartbeatParam) {
+ ResponseData responseData = new ResponseData();
+ try {
+ deviceDataMapper.editDeviceData(heartbeatParam);
+ responseData.setCode(ResponseData.DEFAULT_SUCCESS_CODE);
+ responseData.setMessage(ResponseData.DEFAULT_SUCCESS_MESSAGE);
+ } catch (DataAccessException sqlex) {
+ responseData.setCode(ResponseData.DEFAULT_ERROR_CODE);
+ responseData.setMessage("请求数据异常");
+ responseData.setSuccess(true);
+ log.error("主题:数据心跳出现错误,异常信息为{}", sqlex);
+ }
+ return responseData;
+ }
+}
diff --git a/src/main/java/com/casic/service/impl/DeviceServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java
new file mode 100644
index 0000000..687dc72
--- /dev/null
+++ b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java
@@ -0,0 +1,41 @@
+package com.casic.service.impl;
+
+import com.casic.dao.DeviceMapper;
+import com.casic.model.ResponseData;
+import com.casic.service.DeviceService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
+import org.springframework.stereotype.Service;
+
+@Slf4j
+@Service
+public class DeviceServiceImpl implements DeviceService {
+
+ @Autowired
+ private DeviceMapper deviceData;
+
+ public ResponseData testMysql() {
+ ResponseData responseData = new ResponseData();
+ responseData.setMessage("保存成功");
+// HashMap alarmMsg = deviceDataDao.getAlarmMsg();
+ responseData.setCode(1);
+// responseData.setData(alarmMsg);
+ return responseData;
+ }
+
+ public ResponseData onlineStatusByImei(String status, String imei) {
+ ResponseData responseData = new ResponseData();
+ try {
+ deviceData.onlineStatusByImei(status, imei);
+ responseData.setCode(ResponseData.DEFAULT_SUCCESS_CODE);
+ responseData.setMessage(ResponseData.DEFAULT_SUCCESS_MESSAGE);
+ } catch (DataAccessException sqlex) {
+ responseData.setCode(ResponseData.DEFAULT_ERROR_CODE);
+ responseData.setMessage("请求数据异常");
+ responseData.setSuccess(true);
+ log.error("主题:设备上线下线状态保存出现错误,异常信息为{}", sqlex);
+ }
+ return responseData;
+ }
+}
diff --git a/src/main/java/com/casic/util/ConestUtil.java b/src/main/java/com/casic/util/ConestUtil.java
new file mode 100644
index 0000000..2a4d305
--- /dev/null
+++ b/src/main/java/com/casic/util/ConestUtil.java
@@ -0,0 +1,6 @@
+package com.casic.util;
+
+public class ConestUtil {
+
+
+}
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
new file mode 100644
index 0000000..fac2afe
--- /dev/null
+++ b/src/main/resources/application-dev.yml
@@ -0,0 +1,40 @@
+server:
+ port: 11556
+################### spring配置 ###################
+spring:
+ datasource:
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://111.198.10.15:11336/smartwell_zq?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&&useSSL=true
+ username: root
+ password: Casic203
+ session:
+ store-type: redis
+ redis:
+ host: 111.198.10.15
+ port: 11412
+ password: ew5T4K3#203lwh
+ redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer
+ jms:
+ pub-sub-domain: true
+ # session:
+ # store-type: redis
+ activemq:
+ user:
+ password:
+ broker-url: tcp://192.168.0.203:61616
+#flowable数据源和多数据源配置
+casic:
+ kaptcha-open: false #是否开启登录时验证码 (true/false)
+ #kaptcha-open: false #是否开启登录时验证码 (true/false)
+ no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken
+ db:
+ init:
+ enable: false
+ file-upload-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\upload
+ spring-session-open: false #开启spring session
+logging:
+ level.root: error
+ level.com.casic: error
+ file:
+ path: logs/
+ name: missiles.log
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..74d7bd1
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,123 @@
+
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.1.3.RELEASE
+
+
+ 4.0.0
+
+ com.casic.sensor
+ sensor-transfer
+ 1.0-SNAPSHOT
+ war
+
+
+ UTF-8
+ UTF-8
+ 1.8
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-tomcat
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.1.3.RELEASE
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-jdbc
+ 2.1.3.RELEASE
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+ compile
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+ org.postgresql
+ postgresql
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+
+ com.alibaba
+ druid
+ 1.2.6
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/build/package.xml b/src/main/build/package.xml
new file mode 100644
index 0000000..96d895e
--- /dev/null
+++ b/src/main/build/package.xml
@@ -0,0 +1,43 @@
+
+
+ package
+
+ zip
+ tar.gz
+
+ true
+
+
+
+ true
+ true
+ lib
+ runtime
+
+
+
+
+ src/main/build/bin
+
+ start.bat
+ start.sh
+
+ true
+ 0744
+ /
+
+
+ src/main/resources/config
+ true
+
+ *.yml
+ /*/*
+
+ /config
+
+
+ src/main/resources/i18n
+ /
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..c55e37d
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,25 @@
+package com.casic;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.ServletComponentScan;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.context.annotation.ComponentScan;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author cz
+ * @Date 2022/06/20 14:28
+ */
+
+@Slf4j
+@ComponentScan(basePackages= "com.casic.**")
+@SpringBootApplication
+public class CasicApplication {
+ public static void main(String[] args) {
+ log.info("CasicApplication is success!");
+ SpringApplication.run(CasicApplication.class, args);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java
new file mode 100644
index 0000000..653db64
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceController.java
@@ -0,0 +1,32 @@
+package com.casic.controller;
+
+import com.casic.model.*;
+import com.casic.service.DeviceService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+@RestController
+@RequestMapping("/device")
+public class DeviceController {
+
+
+ private final DeviceService deviceService;
+
+ public DeviceController(DeviceService deviceService) {
+ this.deviceService = deviceService;
+ }
+
+ @RequestMapping("/helloWord")
+ public ResponseData helloWord() {
+ return deviceService.testMysql();
+ }
+
+ @PostMapping("/online")
+ public ResponseData DeviceOnline(@RequestBody DeviceOnlineParam onlineParam) {
+ return deviceService.onlineStatusByImei(onlineParam.getEventType(),onlineParam.getImei());
+ }
+
+}
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
new file mode 100644
index 0000000..e5351c9
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -0,0 +1,37 @@
+package com.casic.controller;
+
+import com.casic.model.DataReportParam;
+import com.casic.model.HeartbeatParam;
+import com.casic.model.ResponseData;
+import com.casic.service.DeviceDataService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RequestMapping("/data")
+@RestController
+public class DeviceDataController {
+
+ private final DeviceDataService dataService;
+
+ public DeviceDataController(DeviceDataService dataService) {
+ this.dataService = dataService;
+ }
+
+ @PostMapping("/commit")
+ public ResponseData DeviceDataCommit(@RequestBody DataReportParam dataReportParam) {
+ return dataService.DeviceDataCommit(dataReportParam);
+ }
+
+ @PostMapping("/heartbeat")
+ public ResponseData heartBeat(@RequestBody HeartbeatParam heartbeatParam) {
+ return dataService.heartBeatSave(heartbeatParam);
+ }
+
+ @PostMapping("/gas/receiver")
+ public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
+ return dataService.heartBeatSave(heartbeatParam);
+ }
+
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
new file mode 100644
index 0000000..47e7cce
--- /dev/null
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -0,0 +1,9 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.DataGasReport;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface DataGasMapper extends BaseMapper {
+}
diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java
new file mode 100644
index 0000000..a550aa3
--- /dev/null
+++ b/src/main/java/com/casic/dao/DeviceMapper.java
@@ -0,0 +1,23 @@
+package com.casic.dao;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.HashMap;
+
+@Mapper
+public interface DeviceMapper {
+
+ /**
+ * @param status 设备在线状态 1-0
+ * @param imei 设备唯一识别编号
+ * @return
+ */
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{status} " +
+ "WHERE DEVCODE=#{imei} ")
+ Integer onlineStatusByImei(@Param("status") String status,
+ @Param("imei") String imei);
+
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
new file mode 100644
index 0000000..c797e55
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
@@ -0,0 +1,68 @@
+package com.casic.dao.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.casic.dao.DataGasMapper;
+import com.casic.entity.DataGasReport;
+import com.casic.model.DataReportParam;
+import com.casic.model.HeartbeatParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.management.Query;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.DateTimeException;
+import java.util.*;
+
+@Slf4j
+@Component
+public class DeviceDataMapper {
+ @Autowired
+ DataGasMapper dataGasMapper;
+
+ public int addDeviceData(DataReportParam dataReportParam) {
+ DataGasReport dataGasReport = new DataGasReport();
+ dataGasReport.setImei(dataReportParam.getIMEI());
+ dataGasReport.setImsi(dataReportParam.getIMSI());
+ try {
+ dataGasReport.setUptime(new Date(Long.valueOf(dataReportParam.getTimestamp())));
+ } catch (DateTimeException dex) {
+ log.error("主题,日期转换出错,时间戳为{},异常信息为{}", dataReportParam.getTimestamp(), dex);
+ }
+ dataGasReport.setGasSampleValue(dataReportParam.getPayload().get("gas_sensor_state").toString());
+ dataGasReport.setGasSensorState(dataReportParam.getPayload().get("gas_sample_value").toString());
+ dataGasReport.setLogtime(new Date());
+ return dataGasMapper.insert(dataGasReport);
+ }
+
+ public int editDeviceData(HeartbeatParam heartbeatParam) {
+ DataGasReport dataGasReport = new DataGasReport();
+ dataGasReport.setImei(heartbeatParam.getIMEI());
+ dataGasReport.setImsi(heartbeatParam.getIMSI());
+ //电池电压-电池点亮
+ dataGasReport.setBatteryVoltage(heartbeatParam.getBattery_voltage());
+ dataGasReport.setBatteryValue(heartbeatParam.getBattery_value());
+ //
+ dataGasReport.setCellId(heartbeatParam.getCell_id());
+ dataGasReport.setIccid(heartbeatParam.getICCID());
+ //噪音、接收功率、小区标识
+ dataGasReport.setPci(heartbeatParam.getPci());
+ dataGasReport.setRsrp(heartbeatParam.getRsrp());
+ dataGasReport.setSinr(heartbeatParam.getSinr());
+ dataGasReport.setHeartbeatTime(heartbeatParam.getHeartbeat_time());
+ QueryWrapper queryWrapper = new QueryWrapper()
+ .eq("DEVCODE", heartbeatParam.getIMEI())
+ .orderByDesc("LOGTIME").last("limit 1");
+ List dataGasReportList = dataGasMapper.selectList(queryWrapper);
+ if (dataGasReportList.size() == 0) {
+ return 0;
+ } else {
+ dataGasReport.setId(dataGasReportList.get(0).getId());
+ }
+ return dataGasMapper.updateById(dataGasReport);
+ }
+
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
new file mode 100644
index 0000000..c43ccdf
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasReport.java
@@ -0,0 +1,69 @@
+package com.casic.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author cz
+ * @date 2022-7-1
+ */
+@Data
+@TableName("data_gas_dector")
+public class DataGasReport {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @TableField("devcode")
+ private String imei;
+ private String wellcode;
+
+ private String imsi;
+ /**
+ * --事件类型 0正常 1低报 2高报
+ */
+ private String gasSensorState;
+ /**
+ * --浓度值
+ */
+ private String gasSampleValue;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ /**
+ * --心跳周期
+ */
+ private String heartbeatTime;
+
+ /**
+ * --小区位置信息
+ */
+ private String cellId;
+ /**
+ * --电池电压
+ */
+ private String batteryVoltage;
+ /**
+ * --电池电量
+ */
+ private String batteryValue;
+ private String iccid;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/model/DataReportParam.java b/src/main/java/com/casic/model/DataReportParam.java
new file mode 100644
index 0000000..082814c
--- /dev/null
+++ b/src/main/java/com/casic/model/DataReportParam.java
@@ -0,0 +1,35 @@
+package com.casic.model;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.util.Map;
+
+/**
+ * @author cz
+ * @date 2022-7-1
+ */
+@Data
+public class DataReportParam {
+ private String upPacketSN;
+ private String upDataSN;
+ private String topic;
+ private String timestamp;
+ private String tenantId;
+ private String serviceId;
+ private String protocol;
+ private String productId;
+ /**
+ * gas_sensor_state = 1, --事件类型 0 正常 1 低报 2 高报
+ * gas_sample_value = 11-- 浓度值
+ */
+ private Map payload;
+ private String messageType;
+ private String deviceType;
+ private String deviceId;
+ private String assocAssetId;
+ @JsonProperty(value = "IMSI", required = true)
+ private String IMSI;
+ @JsonProperty(value = "IMEI", required = true)
+ private String IMEI;
+}
diff --git a/src/main/java/com/casic/model/DeviceOnlineParam.java b/src/main/java/com/casic/model/DeviceOnlineParam.java
new file mode 100644
index 0000000..b92e44d
--- /dev/null
+++ b/src/main/java/com/casic/model/DeviceOnlineParam.java
@@ -0,0 +1,43 @@
+package com.casic.model;
+
+import lombok.Data;
+
+/**
+ * @author cz
+ * @date 2022-07-01
+ */
+@Data
+public class DeviceOnlineParam {
+ /**
+ * 毫秒值
+ */
+ private String timestamp;
+ /**
+ * Ctwing租户id
+ */
+ private String tenantId;
+ /**
+ * 通信协议
+ */
+ private String protocol;
+ /**
+ * 产品id
+ */
+ private String productId;
+ /**
+ * 消息类型
+ */
+ private String messageType;
+ /**
+ * 事件类型 1上线 0下线
+ */
+ private String eventType;
+ /**
+ * 设备ID
+ */
+ private String deviceId;
+ /**
+ * 设备编号
+ */
+ private String imei;
+}
diff --git a/src/main/java/com/casic/model/HeartbeatParam.java b/src/main/java/com/casic/model/HeartbeatParam.java
new file mode 100644
index 0000000..8ff029d
--- /dev/null
+++ b/src/main/java/com/casic/model/HeartbeatParam.java
@@ -0,0 +1,75 @@
+package com.casic.model;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+/**
+ * @author cz
+ * @date 2022-7-1
+ */
+@Data
+public class HeartbeatParam {
+
+ /**
+ * 终端型号
+ */
+ private String terminal_type;
+ /**
+ * 软件版本
+ */
+ private String software_version;
+ /**
+ * 信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * 参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * 物理小区标识
+ */
+ private String pci;
+ /**
+ * 厂家名称
+ */
+ private String manufacturer_name;
+ /**
+ * 心跳周期
+ */
+ private String heartbeat_time;
+ /**
+ * 硬件版本
+ */
+ private String hardware_version;
+ /**
+ * 无线信号覆盖等级
+ */
+ private String ecl;
+ /**
+ * 小区位置信息
+ */
+ private String cell_id;
+ /**
+ * 电池电压
+ */
+ private String battery_voltage;
+ /**
+ * 电池电量
+ */
+ private String battery_value;
+ /**
+ * IMSI
+ */
+ @JsonProperty(value = "IMSI",required = true)
+ private String IMSI;
+ /**
+ * imei
+ */
+ @JsonProperty(value = "IMEI",required = true)
+ private String IMEI;
+ /**
+ * ICCID
+ */
+ private String ICCID;
+}
diff --git a/src/main/java/com/casic/model/ResponseData.java b/src/main/java/com/casic/model/ResponseData.java
new file mode 100644
index 0000000..847c9c8
--- /dev/null
+++ b/src/main/java/com/casic/model/ResponseData.java
@@ -0,0 +1,21 @@
+package com.casic.model;
+
+import lombok.Data;
+
+/**
+ * @author cz
+ * @date 2022-6-20
+ */
+@Data
+public class ResponseData {
+
+ public static final String DEFAULT_SUCCESS_MESSAGE = "请求成功";
+ public static final String DEFAULT_ERROR_MESSAGE = "网络异常";
+ public static final Integer DEFAULT_SUCCESS_CODE = 200;
+ public static final Integer DEFAULT_ERROR_CODE = 500;
+ private Boolean success;
+ private Integer code;
+ private String message;
+ private Object data;
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java
new file mode 100644
index 0000000..d883fe4
--- /dev/null
+++ b/src/main/java/com/casic/service/DeviceDataService.java
@@ -0,0 +1,27 @@
+package com.casic.service;
+
+import com.casic.model.DataReportParam;
+import com.casic.model.HeartbeatParam;
+import com.casic.model.ResponseData;
+
+/**
+ * @author cz
+ * @date 2022
+ */
+public interface DeviceDataService {
+
+ /**
+ *
+ * @param dataReportParam
+ * @return
+ */
+ ResponseData DeviceDataCommit(DataReportParam dataReportParam);
+
+ /**
+ *
+ * @param heartbeatParam
+ * @return
+ */
+ ResponseData heartBeatSave(HeartbeatParam heartbeatParam);
+
+}
diff --git a/src/main/java/com/casic/service/DeviceService.java b/src/main/java/com/casic/service/DeviceService.java
new file mode 100644
index 0000000..6d21bf4
--- /dev/null
+++ b/src/main/java/com/casic/service/DeviceService.java
@@ -0,0 +1,16 @@
+package com.casic.service;
+
+import com.casic.model.*;
+
+public interface DeviceService {
+
+ ResponseData testMysql();
+
+ /**
+ * 设备状态更新
+ *
+ * @param
+ * @return
+ */
+ ResponseData onlineStatusByImei(String status,String imei);
+}
diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
new file mode 100644
index 0000000..93f0685
--- /dev/null
+++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
@@ -0,0 +1,59 @@
+package com.casic.service.impl;
+
+import com.casic.dao.impl.DeviceDataMapper;
+import com.casic.model.*;
+import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author cz
+ * @date 2022-6-20
+ */
+@Slf4j
+@Service
+public class DeviceDataServiceImpl implements DeviceDataService {
+
+ @Autowired
+ DeviceDataMapper deviceDataMapper;
+
+ /**
+ * @param dataReportParam
+ * @return
+ */
+ public ResponseData DeviceDataCommit(DataReportParam dataReportParam) {
+ ResponseData responseData = new ResponseData();
+ try {
+ deviceDataMapper.addDeviceData(dataReportParam);
+ responseData.setCode(ResponseData.DEFAULT_SUCCESS_CODE);
+ responseData.setMessage(ResponseData.DEFAULT_SUCCESS_MESSAGE);
+ } catch (DataAccessException sqlex) {
+ responseData.setCode(ResponseData.DEFAULT_ERROR_CODE);
+ responseData.setMessage("请求数据异常");
+ responseData.setSuccess(true);
+ log.error("主题:数据上报保存出现错误,异常信息为{}", sqlex);
+ }
+ return responseData;
+ }
+
+ /**
+ * @param heartbeatParam
+ * @return
+ */
+ public ResponseData heartBeatSave(HeartbeatParam heartbeatParam) {
+ ResponseData responseData = new ResponseData();
+ try {
+ deviceDataMapper.editDeviceData(heartbeatParam);
+ responseData.setCode(ResponseData.DEFAULT_SUCCESS_CODE);
+ responseData.setMessage(ResponseData.DEFAULT_SUCCESS_MESSAGE);
+ } catch (DataAccessException sqlex) {
+ responseData.setCode(ResponseData.DEFAULT_ERROR_CODE);
+ responseData.setMessage("请求数据异常");
+ responseData.setSuccess(true);
+ log.error("主题:数据心跳出现错误,异常信息为{}", sqlex);
+ }
+ return responseData;
+ }
+}
diff --git a/src/main/java/com/casic/service/impl/DeviceServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java
new file mode 100644
index 0000000..687dc72
--- /dev/null
+++ b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java
@@ -0,0 +1,41 @@
+package com.casic.service.impl;
+
+import com.casic.dao.DeviceMapper;
+import com.casic.model.ResponseData;
+import com.casic.service.DeviceService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
+import org.springframework.stereotype.Service;
+
+@Slf4j
+@Service
+public class DeviceServiceImpl implements DeviceService {
+
+ @Autowired
+ private DeviceMapper deviceData;
+
+ public ResponseData testMysql() {
+ ResponseData responseData = new ResponseData();
+ responseData.setMessage("保存成功");
+// HashMap alarmMsg = deviceDataDao.getAlarmMsg();
+ responseData.setCode(1);
+// responseData.setData(alarmMsg);
+ return responseData;
+ }
+
+ public ResponseData onlineStatusByImei(String status, String imei) {
+ ResponseData responseData = new ResponseData();
+ try {
+ deviceData.onlineStatusByImei(status, imei);
+ responseData.setCode(ResponseData.DEFAULT_SUCCESS_CODE);
+ responseData.setMessage(ResponseData.DEFAULT_SUCCESS_MESSAGE);
+ } catch (DataAccessException sqlex) {
+ responseData.setCode(ResponseData.DEFAULT_ERROR_CODE);
+ responseData.setMessage("请求数据异常");
+ responseData.setSuccess(true);
+ log.error("主题:设备上线下线状态保存出现错误,异常信息为{}", sqlex);
+ }
+ return responseData;
+ }
+}
diff --git a/src/main/java/com/casic/util/ConestUtil.java b/src/main/java/com/casic/util/ConestUtil.java
new file mode 100644
index 0000000..2a4d305
--- /dev/null
+++ b/src/main/java/com/casic/util/ConestUtil.java
@@ -0,0 +1,6 @@
+package com.casic.util;
+
+public class ConestUtil {
+
+
+}
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
new file mode 100644
index 0000000..fac2afe
--- /dev/null
+++ b/src/main/resources/application-dev.yml
@@ -0,0 +1,40 @@
+server:
+ port: 11556
+################### spring配置 ###################
+spring:
+ datasource:
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://111.198.10.15:11336/smartwell_zq?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&&useSSL=true
+ username: root
+ password: Casic203
+ session:
+ store-type: redis
+ redis:
+ host: 111.198.10.15
+ port: 11412
+ password: ew5T4K3#203lwh
+ redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer
+ jms:
+ pub-sub-domain: true
+ # session:
+ # store-type: redis
+ activemq:
+ user:
+ password:
+ broker-url: tcp://192.168.0.203:61616
+#flowable数据源和多数据源配置
+casic:
+ kaptcha-open: false #是否开启登录时验证码 (true/false)
+ #kaptcha-open: false #是否开启登录时验证码 (true/false)
+ no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken
+ db:
+ init:
+ enable: false
+ file-upload-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\upload
+ spring-session-open: false #开启spring session
+logging:
+ level.root: error
+ level.com.casic: error
+ file:
+ path: logs/
+ name: missiles.log
\ No newline at end of file
diff --git a/src/main/resources/application-postgre.yml b/src/main/resources/application-postgre.yml
new file mode 100644
index 0000000..2b7f69c
--- /dev/null
+++ b/src/main/resources/application-postgre.yml
@@ -0,0 +1,62 @@
+server:
+ port: 11556
+################### spring配置 ###################
+spring:
+ datasource:
+ driver-class-name: org.postgresql.Driver
+ url: jdbc:postgresql://111.198.10.15:11209/smartwell
+ username: postgres
+ password: Casic203
+ session:
+ store-type: redis
+ redis:
+ host: 111.198.10.15
+ port: 11412
+ password: ew5T4K3#203lwh
+ redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer
+ jms:
+ pub-sub-domain: true
+ # session:
+ # store-type: redis
+ redis-config:
+ host: 127.0.0.1
+ port: 6379
+ password:
+ activemq:
+ user:
+ password:
+ broker-url: tcp://192.168.0.203:61616
+#flowable数据源和多数据源配置
+casic:
+ kaptcha-open: false #是否开启登录时验证码 (true/false)
+ #kaptcha-open: false #是否开启登录时验证码 (true/false)
+ no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken
+ db:
+ init:
+ enable: false
+ file-upload-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\upload
+ spring-session-open: false #开启spring session
+smartcity:
+ config:
+ export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\
+ #export-path: D:\export\
+ image-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\image\
+ config-path: D:\workspace\server\well\2.0\casic-smartcity\casic-web\src\main\resources\config\temp\
+ download-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\download\
+ device:
+ redis:
+ invalid-time: 86400
+ host: 127.0.0.1
+ port: 6379
+ password: ew5T4K3#203lwh
+ config-prefix: 'Casic:'
+ getui:
+ appId: H9jSTE2bAt8QWq2K2GNOB3
+ appKey: bhPeCutJVdAyOasevQFtN9
+ masterSecret: lChudND74A89WRiHLkedb5
+logging:
+ level.root: info
+ level.com.casic: info
+ file:
+ path: logs/
+ name: missiles.log
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..74d7bd1
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,123 @@
+
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.1.3.RELEASE
+
+
+ 4.0.0
+
+ com.casic.sensor
+ sensor-transfer
+ 1.0-SNAPSHOT
+ war
+
+
+ UTF-8
+ UTF-8
+ 1.8
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-tomcat
+ 2.1.3.RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.1.3.RELEASE
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-jdbc
+ 2.1.3.RELEASE
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.16
+ compile
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.3
+
+
+
+ org.postgresql
+ postgresql
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+
+
+ com.alibaba
+ druid
+ 1.2.6
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.3.RELEASE
+
+ true
+
+ com.casic.CasicApplication
+ exec
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ false
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/build/package.xml b/src/main/build/package.xml
new file mode 100644
index 0000000..96d895e
--- /dev/null
+++ b/src/main/build/package.xml
@@ -0,0 +1,43 @@
+
+
+ package
+
+ zip
+ tar.gz
+
+ true
+
+
+
+ true
+ true
+ lib
+ runtime
+
+
+
+
+ src/main/build/bin
+
+ start.bat
+ start.sh
+
+ true
+ 0744
+ /
+
+
+ src/main/resources/config
+ true
+
+ *.yml
+ /*/*
+
+ /config
+
+
+ src/main/resources/i18n
+ /
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
new file mode 100644
index 0000000..c55e37d
--- /dev/null
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -0,0 +1,25 @@
+package com.casic;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.ServletComponentScan;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.context.annotation.ComponentScan;
+
+/**
+ * SpringBoot方式启动类
+ *
+ * @author cz
+ * @Date 2022/06/20 14:28
+ */
+
+@Slf4j
+@ComponentScan(basePackages= "com.casic.**")
+@SpringBootApplication
+public class CasicApplication {
+ public static void main(String[] args) {
+ log.info("CasicApplication is success!");
+ SpringApplication.run(CasicApplication.class, args);
+ }
+}
diff --git a/src/main/java/com/casic/controller/DeviceController.java b/src/main/java/com/casic/controller/DeviceController.java
new file mode 100644
index 0000000..653db64
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceController.java
@@ -0,0 +1,32 @@
+package com.casic.controller;
+
+import com.casic.model.*;
+import com.casic.service.DeviceService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+@RestController
+@RequestMapping("/device")
+public class DeviceController {
+
+
+ private final DeviceService deviceService;
+
+ public DeviceController(DeviceService deviceService) {
+ this.deviceService = deviceService;
+ }
+
+ @RequestMapping("/helloWord")
+ public ResponseData helloWord() {
+ return deviceService.testMysql();
+ }
+
+ @PostMapping("/online")
+ public ResponseData DeviceOnline(@RequestBody DeviceOnlineParam onlineParam) {
+ return deviceService.onlineStatusByImei(onlineParam.getEventType(),onlineParam.getImei());
+ }
+
+}
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
new file mode 100644
index 0000000..e5351c9
--- /dev/null
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -0,0 +1,37 @@
+package com.casic.controller;
+
+import com.casic.model.DataReportParam;
+import com.casic.model.HeartbeatParam;
+import com.casic.model.ResponseData;
+import com.casic.service.DeviceDataService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RequestMapping("/data")
+@RestController
+public class DeviceDataController {
+
+ private final DeviceDataService dataService;
+
+ public DeviceDataController(DeviceDataService dataService) {
+ this.dataService = dataService;
+ }
+
+ @PostMapping("/commit")
+ public ResponseData DeviceDataCommit(@RequestBody DataReportParam dataReportParam) {
+ return dataService.DeviceDataCommit(dataReportParam);
+ }
+
+ @PostMapping("/heartbeat")
+ public ResponseData heartBeat(@RequestBody HeartbeatParam heartbeatParam) {
+ return dataService.heartBeatSave(heartbeatParam);
+ }
+
+ @PostMapping("/gas/receiver")
+ public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
+ return dataService.heartBeatSave(heartbeatParam);
+ }
+
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
new file mode 100644
index 0000000..47e7cce
--- /dev/null
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -0,0 +1,9 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.DataGasReport;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface DataGasMapper extends BaseMapper {
+}
diff --git a/src/main/java/com/casic/dao/DeviceMapper.java b/src/main/java/com/casic/dao/DeviceMapper.java
new file mode 100644
index 0000000..a550aa3
--- /dev/null
+++ b/src/main/java/com/casic/dao/DeviceMapper.java
@@ -0,0 +1,23 @@
+package com.casic.dao;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.HashMap;
+
+@Mapper
+public interface DeviceMapper {
+
+ /**
+ * @param status 设备在线状态 1-0
+ * @param imei 设备唯一识别编号
+ * @return
+ */
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{status} " +
+ "WHERE DEVCODE=#{imei} ")
+ Integer onlineStatusByImei(@Param("status") String status,
+ @Param("imei") String imei);
+
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
new file mode 100644
index 0000000..c797e55
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
@@ -0,0 +1,68 @@
+package com.casic.dao.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.casic.dao.DataGasMapper;
+import com.casic.entity.DataGasReport;
+import com.casic.model.DataReportParam;
+import com.casic.model.HeartbeatParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.management.Query;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.DateTimeException;
+import java.util.*;
+
+@Slf4j
+@Component
+public class DeviceDataMapper {
+ @Autowired
+ DataGasMapper dataGasMapper;
+
+ public int addDeviceData(DataReportParam dataReportParam) {
+ DataGasReport dataGasReport = new DataGasReport();
+ dataGasReport.setImei(dataReportParam.getIMEI());
+ dataGasReport.setImsi(dataReportParam.getIMSI());
+ try {
+ dataGasReport.setUptime(new Date(Long.valueOf(dataReportParam.getTimestamp())));
+ } catch (DateTimeException dex) {
+ log.error("主题,日期转换出错,时间戳为{},异常信息为{}", dataReportParam.getTimestamp(), dex);
+ }
+ dataGasReport.setGasSampleValue(dataReportParam.getPayload().get("gas_sensor_state").toString());
+ dataGasReport.setGasSensorState(dataReportParam.getPayload().get("gas_sample_value").toString());
+ dataGasReport.setLogtime(new Date());
+ return dataGasMapper.insert(dataGasReport);
+ }
+
+ public int editDeviceData(HeartbeatParam heartbeatParam) {
+ DataGasReport dataGasReport = new DataGasReport();
+ dataGasReport.setImei(heartbeatParam.getIMEI());
+ dataGasReport.setImsi(heartbeatParam.getIMSI());
+ //电池电压-电池点亮
+ dataGasReport.setBatteryVoltage(heartbeatParam.getBattery_voltage());
+ dataGasReport.setBatteryValue(heartbeatParam.getBattery_value());
+ //
+ dataGasReport.setCellId(heartbeatParam.getCell_id());
+ dataGasReport.setIccid(heartbeatParam.getICCID());
+ //噪音、接收功率、小区标识
+ dataGasReport.setPci(heartbeatParam.getPci());
+ dataGasReport.setRsrp(heartbeatParam.getRsrp());
+ dataGasReport.setSinr(heartbeatParam.getSinr());
+ dataGasReport.setHeartbeatTime(heartbeatParam.getHeartbeat_time());
+ QueryWrapper queryWrapper = new QueryWrapper()
+ .eq("DEVCODE", heartbeatParam.getIMEI())
+ .orderByDesc("LOGTIME").last("limit 1");
+ List dataGasReportList = dataGasMapper.selectList(queryWrapper);
+ if (dataGasReportList.size() == 0) {
+ return 0;
+ } else {
+ dataGasReport.setId(dataGasReportList.get(0).getId());
+ }
+ return dataGasMapper.updateById(dataGasReport);
+ }
+
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
new file mode 100644
index 0000000..c43ccdf
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasReport.java
@@ -0,0 +1,69 @@
+package com.casic.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author cz
+ * @date 2022-7-1
+ */
+@Data
+@TableName("data_gas_dector")
+public class DataGasReport {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @TableField("devcode")
+ private String imei;
+ private String wellcode;
+
+ private String imsi;
+ /**
+ * --事件类型 0正常 1低报 2高报
+ */
+ private String gasSensorState;
+ /**
+ * --浓度值
+ */
+ private String gasSampleValue;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ /**
+ * --心跳周期
+ */
+ private String heartbeatTime;
+
+ /**
+ * --小区位置信息
+ */
+ private String cellId;
+ /**
+ * --电池电压
+ */
+ private String batteryVoltage;
+ /**
+ * --电池电量
+ */
+ private String batteryValue;
+ private String iccid;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/model/DataReportParam.java b/src/main/java/com/casic/model/DataReportParam.java
new file mode 100644
index 0000000..082814c
--- /dev/null
+++ b/src/main/java/com/casic/model/DataReportParam.java
@@ -0,0 +1,35 @@
+package com.casic.model;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.util.Map;
+
+/**
+ * @author cz
+ * @date 2022-7-1
+ */
+@Data
+public class DataReportParam {
+ private String upPacketSN;
+ private String upDataSN;
+ private String topic;
+ private String timestamp;
+ private String tenantId;
+ private String serviceId;
+ private String protocol;
+ private String productId;
+ /**
+ * gas_sensor_state = 1, --事件类型 0 正常 1 低报 2 高报
+ * gas_sample_value = 11-- 浓度值
+ */
+ private Map payload;
+ private String messageType;
+ private String deviceType;
+ private String deviceId;
+ private String assocAssetId;
+ @JsonProperty(value = "IMSI", required = true)
+ private String IMSI;
+ @JsonProperty(value = "IMEI", required = true)
+ private String IMEI;
+}
diff --git a/src/main/java/com/casic/model/DeviceOnlineParam.java b/src/main/java/com/casic/model/DeviceOnlineParam.java
new file mode 100644
index 0000000..b92e44d
--- /dev/null
+++ b/src/main/java/com/casic/model/DeviceOnlineParam.java
@@ -0,0 +1,43 @@
+package com.casic.model;
+
+import lombok.Data;
+
+/**
+ * @author cz
+ * @date 2022-07-01
+ */
+@Data
+public class DeviceOnlineParam {
+ /**
+ * 毫秒值
+ */
+ private String timestamp;
+ /**
+ * Ctwing租户id
+ */
+ private String tenantId;
+ /**
+ * 通信协议
+ */
+ private String protocol;
+ /**
+ * 产品id
+ */
+ private String productId;
+ /**
+ * 消息类型
+ */
+ private String messageType;
+ /**
+ * 事件类型 1上线 0下线
+ */
+ private String eventType;
+ /**
+ * 设备ID
+ */
+ private String deviceId;
+ /**
+ * 设备编号
+ */
+ private String imei;
+}
diff --git a/src/main/java/com/casic/model/HeartbeatParam.java b/src/main/java/com/casic/model/HeartbeatParam.java
new file mode 100644
index 0000000..8ff029d
--- /dev/null
+++ b/src/main/java/com/casic/model/HeartbeatParam.java
@@ -0,0 +1,75 @@
+package com.casic.model;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+/**
+ * @author cz
+ * @date 2022-7-1
+ */
+@Data
+public class HeartbeatParam {
+
+ /**
+ * 终端型号
+ */
+ private String terminal_type;
+ /**
+ * 软件版本
+ */
+ private String software_version;
+ /**
+ * 信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * 参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * 物理小区标识
+ */
+ private String pci;
+ /**
+ * 厂家名称
+ */
+ private String manufacturer_name;
+ /**
+ * 心跳周期
+ */
+ private String heartbeat_time;
+ /**
+ * 硬件版本
+ */
+ private String hardware_version;
+ /**
+ * 无线信号覆盖等级
+ */
+ private String ecl;
+ /**
+ * 小区位置信息
+ */
+ private String cell_id;
+ /**
+ * 电池电压
+ */
+ private String battery_voltage;
+ /**
+ * 电池电量
+ */
+ private String battery_value;
+ /**
+ * IMSI
+ */
+ @JsonProperty(value = "IMSI",required = true)
+ private String IMSI;
+ /**
+ * imei
+ */
+ @JsonProperty(value = "IMEI",required = true)
+ private String IMEI;
+ /**
+ * ICCID
+ */
+ private String ICCID;
+}
diff --git a/src/main/java/com/casic/model/ResponseData.java b/src/main/java/com/casic/model/ResponseData.java
new file mode 100644
index 0000000..847c9c8
--- /dev/null
+++ b/src/main/java/com/casic/model/ResponseData.java
@@ -0,0 +1,21 @@
+package com.casic.model;
+
+import lombok.Data;
+
+/**
+ * @author cz
+ * @date 2022-6-20
+ */
+@Data
+public class ResponseData {
+
+ public static final String DEFAULT_SUCCESS_MESSAGE = "请求成功";
+ public static final String DEFAULT_ERROR_MESSAGE = "网络异常";
+ public static final Integer DEFAULT_SUCCESS_CODE = 200;
+ public static final Integer DEFAULT_ERROR_CODE = 500;
+ private Boolean success;
+ private Integer code;
+ private String message;
+ private Object data;
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java
new file mode 100644
index 0000000..d883fe4
--- /dev/null
+++ b/src/main/java/com/casic/service/DeviceDataService.java
@@ -0,0 +1,27 @@
+package com.casic.service;
+
+import com.casic.model.DataReportParam;
+import com.casic.model.HeartbeatParam;
+import com.casic.model.ResponseData;
+
+/**
+ * @author cz
+ * @date 2022
+ */
+public interface DeviceDataService {
+
+ /**
+ *
+ * @param dataReportParam
+ * @return
+ */
+ ResponseData DeviceDataCommit(DataReportParam dataReportParam);
+
+ /**
+ *
+ * @param heartbeatParam
+ * @return
+ */
+ ResponseData heartBeatSave(HeartbeatParam heartbeatParam);
+
+}
diff --git a/src/main/java/com/casic/service/DeviceService.java b/src/main/java/com/casic/service/DeviceService.java
new file mode 100644
index 0000000..6d21bf4
--- /dev/null
+++ b/src/main/java/com/casic/service/DeviceService.java
@@ -0,0 +1,16 @@
+package com.casic.service;
+
+import com.casic.model.*;
+
+public interface DeviceService {
+
+ ResponseData testMysql();
+
+ /**
+ * 设备状态更新
+ *
+ * @param
+ * @return
+ */
+ ResponseData onlineStatusByImei(String status,String imei);
+}
diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
new file mode 100644
index 0000000..93f0685
--- /dev/null
+++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
@@ -0,0 +1,59 @@
+package com.casic.service.impl;
+
+import com.casic.dao.impl.DeviceDataMapper;
+import com.casic.model.*;
+import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author cz
+ * @date 2022-6-20
+ */
+@Slf4j
+@Service
+public class DeviceDataServiceImpl implements DeviceDataService {
+
+ @Autowired
+ DeviceDataMapper deviceDataMapper;
+
+ /**
+ * @param dataReportParam
+ * @return
+ */
+ public ResponseData DeviceDataCommit(DataReportParam dataReportParam) {
+ ResponseData responseData = new ResponseData();
+ try {
+ deviceDataMapper.addDeviceData(dataReportParam);
+ responseData.setCode(ResponseData.DEFAULT_SUCCESS_CODE);
+ responseData.setMessage(ResponseData.DEFAULT_SUCCESS_MESSAGE);
+ } catch (DataAccessException sqlex) {
+ responseData.setCode(ResponseData.DEFAULT_ERROR_CODE);
+ responseData.setMessage("请求数据异常");
+ responseData.setSuccess(true);
+ log.error("主题:数据上报保存出现错误,异常信息为{}", sqlex);
+ }
+ return responseData;
+ }
+
+ /**
+ * @param heartbeatParam
+ * @return
+ */
+ public ResponseData heartBeatSave(HeartbeatParam heartbeatParam) {
+ ResponseData responseData = new ResponseData();
+ try {
+ deviceDataMapper.editDeviceData(heartbeatParam);
+ responseData.setCode(ResponseData.DEFAULT_SUCCESS_CODE);
+ responseData.setMessage(ResponseData.DEFAULT_SUCCESS_MESSAGE);
+ } catch (DataAccessException sqlex) {
+ responseData.setCode(ResponseData.DEFAULT_ERROR_CODE);
+ responseData.setMessage("请求数据异常");
+ responseData.setSuccess(true);
+ log.error("主题:数据心跳出现错误,异常信息为{}", sqlex);
+ }
+ return responseData;
+ }
+}
diff --git a/src/main/java/com/casic/service/impl/DeviceServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java
new file mode 100644
index 0000000..687dc72
--- /dev/null
+++ b/src/main/java/com/casic/service/impl/DeviceServiceImpl.java
@@ -0,0 +1,41 @@
+package com.casic.service.impl;
+
+import com.casic.dao.DeviceMapper;
+import com.casic.model.ResponseData;
+import com.casic.service.DeviceService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
+import org.springframework.stereotype.Service;
+
+@Slf4j
+@Service
+public class DeviceServiceImpl implements DeviceService {
+
+ @Autowired
+ private DeviceMapper deviceData;
+
+ public ResponseData testMysql() {
+ ResponseData responseData = new ResponseData();
+ responseData.setMessage("保存成功");
+// HashMap alarmMsg = deviceDataDao.getAlarmMsg();
+ responseData.setCode(1);
+// responseData.setData(alarmMsg);
+ return responseData;
+ }
+
+ public ResponseData onlineStatusByImei(String status, String imei) {
+ ResponseData responseData = new ResponseData();
+ try {
+ deviceData.onlineStatusByImei(status, imei);
+ responseData.setCode(ResponseData.DEFAULT_SUCCESS_CODE);
+ responseData.setMessage(ResponseData.DEFAULT_SUCCESS_MESSAGE);
+ } catch (DataAccessException sqlex) {
+ responseData.setCode(ResponseData.DEFAULT_ERROR_CODE);
+ responseData.setMessage("请求数据异常");
+ responseData.setSuccess(true);
+ log.error("主题:设备上线下线状态保存出现错误,异常信息为{}", sqlex);
+ }
+ return responseData;
+ }
+}
diff --git a/src/main/java/com/casic/util/ConestUtil.java b/src/main/java/com/casic/util/ConestUtil.java
new file mode 100644
index 0000000..2a4d305
--- /dev/null
+++ b/src/main/java/com/casic/util/ConestUtil.java
@@ -0,0 +1,6 @@
+package com.casic.util;
+
+public class ConestUtil {
+
+
+}
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
new file mode 100644
index 0000000..fac2afe
--- /dev/null
+++ b/src/main/resources/application-dev.yml
@@ -0,0 +1,40 @@
+server:
+ port: 11556
+################### spring配置 ###################
+spring:
+ datasource:
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://111.198.10.15:11336/smartwell_zq?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true&&useSSL=true
+ username: root
+ password: Casic203
+ session:
+ store-type: redis
+ redis:
+ host: 111.198.10.15
+ port: 11412
+ password: ew5T4K3#203lwh
+ redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer
+ jms:
+ pub-sub-domain: true
+ # session:
+ # store-type: redis
+ activemq:
+ user:
+ password:
+ broker-url: tcp://192.168.0.203:61616
+#flowable数据源和多数据源配置
+casic:
+ kaptcha-open: false #是否开启登录时验证码 (true/false)
+ #kaptcha-open: false #是否开启登录时验证码 (true/false)
+ no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken
+ db:
+ init:
+ enable: false
+ file-upload-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\upload
+ spring-session-open: false #开启spring session
+logging:
+ level.root: error
+ level.com.casic: error
+ file:
+ path: logs/
+ name: missiles.log
\ No newline at end of file
diff --git a/src/main/resources/application-postgre.yml b/src/main/resources/application-postgre.yml
new file mode 100644
index 0000000..2b7f69c
--- /dev/null
+++ b/src/main/resources/application-postgre.yml
@@ -0,0 +1,62 @@
+server:
+ port: 11556
+################### spring配置 ###################
+spring:
+ datasource:
+ driver-class-name: org.postgresql.Driver
+ url: jdbc:postgresql://111.198.10.15:11209/smartwell
+ username: postgres
+ password: Casic203
+ session:
+ store-type: redis
+ redis:
+ host: 111.198.10.15
+ port: 11412
+ password: ew5T4K3#203lwh
+ redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer
+ jms:
+ pub-sub-domain: true
+ # session:
+ # store-type: redis
+ redis-config:
+ host: 127.0.0.1
+ port: 6379
+ password:
+ activemq:
+ user:
+ password:
+ broker-url: tcp://192.168.0.203:61616
+#flowable数据源和多数据源配置
+casic:
+ kaptcha-open: false #是否开启登录时验证码 (true/false)
+ #kaptcha-open: false #是否开启登录时验证码 (true/false)
+ no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken
+ db:
+ init:
+ enable: false
+ file-upload-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\upload
+ spring-session-open: false #开启spring session
+smartcity:
+ config:
+ export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\
+ #export-path: D:\export\
+ image-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\image\
+ config-path: D:\workspace\server\well\2.0\casic-smartcity\casic-web\src\main\resources\config\temp\
+ download-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\download\
+ device:
+ redis:
+ invalid-time: 86400
+ host: 127.0.0.1
+ port: 6379
+ password: ew5T4K3#203lwh
+ config-prefix: 'Casic:'
+ getui:
+ appId: H9jSTE2bAt8QWq2K2GNOB3
+ appKey: bhPeCutJVdAyOasevQFtN9
+ masterSecret: lChudND74A89WRiHLkedb5
+logging:
+ level.root: info
+ level.com.casic: info
+ file:
+ path: logs/
+ name: missiles.log
\ No newline at end of file
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
new file mode 100644
index 0000000..86411e6
--- /dev/null
+++ b/src/main/resources/application.yml
@@ -0,0 +1,36 @@
+##########################################################
+################## 所有profile共有的配置 #################
+##########################################################
+spring:
+ profiles:
+ active: dev
+ servlet:
+ multipart:
+ max-file-size: 50MB
+ max-request-size: 80MB
+mybatis-plus:
+ global-config:
+ enable-sql-runner: true
+ configuration:
+ # 配置结果集属性为空时 是否映射返回结果
+ log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用
+ mapper-locations: classpath:mapper/*.xml
+mybatis:
+ mapper-locations: classpath:mapper/*.xml
+#mybatis-plus:
+# sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector
+################### mybatis-plus配置 ###################
+################### casic配置 ###################
+flowable:
+ checkProcessDefinitions: false #不校验process文件
+casic:
+ swagger-open: false #是否开启swagger (true/false)
+ kaptcha-open: false #是否开启登录时验证码 (true/false)
+ muti-datasource-open: false #是否开启多数据源(true/false)
+ spring-session-open: false #是否开启spring session,如果是多机环境需要开启(true/false)
+ session-invalidate-time: 86400 #session失效时间(只在单机环境下生效,,多机环境在SpringSessionConfig类中配置) 单位:秒
+ session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒
+ extUrl: sys
+ config:
+ export-path: D:\java\boot\guns-web-1.0.0-SNAPSHOT\export\
+ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\
\ No newline at end of file