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