diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh
new file mode 100644
index 0000000..e14c4c7
--- /dev/null
+++ b/src/main/build/bin/start.sh
@@ -0,0 +1,2 @@
+java -jar ./lib/${project.build.finalName}.jar
+
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh
new file mode 100644
index 0000000..e14c4c7
--- /dev/null
+++ b/src/main/build/bin/start.sh
@@ -0,0 +1,2 @@
+java -jar ./lib/${project.build.finalName}.jar
+
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
index c55e37d..0887f1f 100644
--- a/src/main/java/com/casic/CasicApplication.java
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -3,8 +3,6 @@
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;
/**
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh
new file mode 100644
index 0000000..e14c4c7
--- /dev/null
+++ b/src/main/build/bin/start.sh
@@ -0,0 +1,2 @@
+java -jar ./lib/${project.build.finalName}.jar
+
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
index c55e37d..0887f1f 100644
--- a/src/main/java/com/casic/CasicApplication.java
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -3,8 +3,6 @@
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;
/**
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
index e5351c9..be0de6b 100644
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -1,14 +1,19 @@
package com.casic.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.casic.model.DataReportParam;
-import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
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;
+import java.util.Map;
+
+@Slf4j
@RequestMapping("/data")
@RestController
public class DeviceDataController {
@@ -19,19 +24,16 @@
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 String gasReceiver(@RequestBody Map map) {
+// log.info("---------"+JSON.toJSONString(map));
+// return "200";
+// }
@PostMapping("/gas/receiver")
- public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
- return dataService.heartBeatSave(heartbeatParam);
+ public ResponseData gasReceiver(@RequestBody DataReportParam dataReportParam) {
+ log.info("---------"+JSON.toJSONString(dataReportParam));
+ return dataService.gasReceiver(dataReportParam);
}
}
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh
new file mode 100644
index 0000000..e14c4c7
--- /dev/null
+++ b/src/main/build/bin/start.sh
@@ -0,0 +1,2 @@
+java -jar ./lib/${project.build.finalName}.jar
+
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
index c55e37d..0887f1f 100644
--- a/src/main/java/com/casic/CasicApplication.java
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -3,8 +3,6 @@
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;
/**
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
index e5351c9..be0de6b 100644
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -1,14 +1,19 @@
package com.casic.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.casic.model.DataReportParam;
-import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
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;
+import java.util.Map;
+
+@Slf4j
@RequestMapping("/data")
@RestController
public class DeviceDataController {
@@ -19,19 +24,16 @@
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 String gasReceiver(@RequestBody Map map) {
+// log.info("---------"+JSON.toJSONString(map));
+// return "200";
+// }
@PostMapping("/gas/receiver")
- public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
- return dataService.heartBeatSave(heartbeatParam);
+ public ResponseData gasReceiver(@RequestBody DataReportParam dataReportParam) {
+ log.info("---------"+JSON.toJSONString(dataReportParam));
+ return dataService.gasReceiver(dataReportParam);
}
}
diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java
new file mode 100644
index 0000000..e5e9c8d
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmJobMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmJob;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface AlarmJobMapper extends BaseMapper {
+
+ @Select("SELECT MAX(jobcode) " +
+ "FROM alarm_job " +
+ "WHERE JOBCODE like '${jobcode}%'")
+ String getJobCodeMaxSerial(@Param("jobcode") String jobcode);
+
+}
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh
new file mode 100644
index 0000000..e14c4c7
--- /dev/null
+++ b/src/main/build/bin/start.sh
@@ -0,0 +1,2 @@
+java -jar ./lib/${project.build.finalName}.jar
+
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
index c55e37d..0887f1f 100644
--- a/src/main/java/com/casic/CasicApplication.java
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -3,8 +3,6 @@
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;
/**
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
index e5351c9..be0de6b 100644
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -1,14 +1,19 @@
package com.casic.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.casic.model.DataReportParam;
-import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
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;
+import java.util.Map;
+
+@Slf4j
@RequestMapping("/data")
@RestController
public class DeviceDataController {
@@ -19,19 +24,16 @@
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 String gasReceiver(@RequestBody Map map) {
+// log.info("---------"+JSON.toJSONString(map));
+// return "200";
+// }
@PostMapping("/gas/receiver")
- public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
- return dataService.heartBeatSave(heartbeatParam);
+ public ResponseData gasReceiver(@RequestBody DataReportParam dataReportParam) {
+ log.info("---------"+JSON.toJSONString(dataReportParam));
+ return dataService.gasReceiver(dataReportParam);
}
}
diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java
new file mode 100644
index 0000000..e5e9c8d
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmJobMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmJob;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface AlarmJobMapper extends BaseMapper {
+
+ @Select("SELECT MAX(jobcode) " +
+ "FROM alarm_job " +
+ "WHERE JOBCODE like '${jobcode}%'")
+ String getJobCodeMaxSerial(@Param("jobcode") String jobcode);
+
+}
diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
new file mode 100644
index 0000000..8da7dcb
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmRecords;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface AlarmRecordsMapper extends BaseMapper {
+
+
+ @Select("SELECT JOB_ID AS \"jobId\"\n " +
+ "FROM alarm_records\n " +
+ "WHERE DEVCODE = #{devcode}\n " +
+ "AND ALARM_CONTENT = #{MsgContent}\n " +
+ "AND STATUS='1'\n " +
+ "AND JOB_ID>0 ")
+ String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+
+ @Update(" UPDATE alarm_records\n" +
+ " SET STATUS='0'\n" +
+ " WHERE DEVCODE = #{devcode}\n" +
+ " AND ALARM_CONTENT = #{MsgContent}\n" +
+ " AND STATUS='1'")
+ Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+}
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh
new file mode 100644
index 0000000..e14c4c7
--- /dev/null
+++ b/src/main/build/bin/start.sh
@@ -0,0 +1,2 @@
+java -jar ./lib/${project.build.finalName}.jar
+
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
index c55e37d..0887f1f 100644
--- a/src/main/java/com/casic/CasicApplication.java
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -3,8 +3,6 @@
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;
/**
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
index e5351c9..be0de6b 100644
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -1,14 +1,19 @@
package com.casic.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.casic.model.DataReportParam;
-import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
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;
+import java.util.Map;
+
+@Slf4j
@RequestMapping("/data")
@RestController
public class DeviceDataController {
@@ -19,19 +24,16 @@
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 String gasReceiver(@RequestBody Map map) {
+// log.info("---------"+JSON.toJSONString(map));
+// return "200";
+// }
@PostMapping("/gas/receiver")
- public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
- return dataService.heartBeatSave(heartbeatParam);
+ public ResponseData gasReceiver(@RequestBody DataReportParam dataReportParam) {
+ log.info("---------"+JSON.toJSONString(dataReportParam));
+ return dataService.gasReceiver(dataReportParam);
}
}
diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java
new file mode 100644
index 0000000..e5e9c8d
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmJobMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmJob;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface AlarmJobMapper extends BaseMapper {
+
+ @Select("SELECT MAX(jobcode) " +
+ "FROM alarm_job " +
+ "WHERE JOBCODE like '${jobcode}%'")
+ String getJobCodeMaxSerial(@Param("jobcode") String jobcode);
+
+}
diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
new file mode 100644
index 0000000..8da7dcb
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmRecords;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface AlarmRecordsMapper extends BaseMapper {
+
+
+ @Select("SELECT JOB_ID AS \"jobId\"\n " +
+ "FROM alarm_records\n " +
+ "WHERE DEVCODE = #{devcode}\n " +
+ "AND ALARM_CONTENT = #{MsgContent}\n " +
+ "AND STATUS='1'\n " +
+ "AND JOB_ID>0 ")
+ String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+
+ @Update(" UPDATE alarm_records\n" +
+ " SET STATUS='0'\n" +
+ " WHERE DEVCODE = #{devcode}\n" +
+ " AND ALARM_CONTENT = #{MsgContent}\n" +
+ " AND STATUS='1'")
+ Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
index 47e7cce..33ce14a 100644
--- a/src/main/java/com/casic/dao/DataGasMapper.java
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -1,9 +1,48 @@
package com.casic.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.casic.entity.DataGasReport;
+import com.casic.entity.DataGasDector;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+import java.util.Map;
@Mapper
-public interface DataGasMapper extends BaseMapper {
+public interface DataGasMapper extends BaseMapper {
+
+ @Select("select bd.id as \"deviceId\",bwi.WELL_CODE AS \"wellCode\" " +
+ "from bus_device_well bdw " +
+ "join (select id from bus_device where devcode=#{devcode}) bd ON bd.id=bdw.device_id " +
+ "join bus_well_info bwi ON bwi.id=bdw.well_id ")
+ Map getWellCode(@Param("devcode") String devcode);
+
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{onlineState} " +
+ "WHERE devcode=#{devcode} ")
+ void setOfflineByDevcode(@Param("devcode") String devcode,
+ @Param("onlineState") Integer onlineState);
+
+ @Select("SELECT level,high_value " +
+ "FROM alarm_level " +
+ "WHERE device_type=#{deviceType} ")
+ List
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh
new file mode 100644
index 0000000..e14c4c7
--- /dev/null
+++ b/src/main/build/bin/start.sh
@@ -0,0 +1,2 @@
+java -jar ./lib/${project.build.finalName}.jar
+
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
index c55e37d..0887f1f 100644
--- a/src/main/java/com/casic/CasicApplication.java
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -3,8 +3,6 @@
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;
/**
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
index e5351c9..be0de6b 100644
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -1,14 +1,19 @@
package com.casic.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.casic.model.DataReportParam;
-import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
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;
+import java.util.Map;
+
+@Slf4j
@RequestMapping("/data")
@RestController
public class DeviceDataController {
@@ -19,19 +24,16 @@
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 String gasReceiver(@RequestBody Map map) {
+// log.info("---------"+JSON.toJSONString(map));
+// return "200";
+// }
@PostMapping("/gas/receiver")
- public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
- return dataService.heartBeatSave(heartbeatParam);
+ public ResponseData gasReceiver(@RequestBody DataReportParam dataReportParam) {
+ log.info("---------"+JSON.toJSONString(dataReportParam));
+ return dataService.gasReceiver(dataReportParam);
}
}
diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java
new file mode 100644
index 0000000..e5e9c8d
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmJobMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmJob;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface AlarmJobMapper extends BaseMapper {
+
+ @Select("SELECT MAX(jobcode) " +
+ "FROM alarm_job " +
+ "WHERE JOBCODE like '${jobcode}%'")
+ String getJobCodeMaxSerial(@Param("jobcode") String jobcode);
+
+}
diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
new file mode 100644
index 0000000..8da7dcb
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmRecords;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface AlarmRecordsMapper extends BaseMapper {
+
+
+ @Select("SELECT JOB_ID AS \"jobId\"\n " +
+ "FROM alarm_records\n " +
+ "WHERE DEVCODE = #{devcode}\n " +
+ "AND ALARM_CONTENT = #{MsgContent}\n " +
+ "AND STATUS='1'\n " +
+ "AND JOB_ID>0 ")
+ String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+
+ @Update(" UPDATE alarm_records\n" +
+ " SET STATUS='0'\n" +
+ " WHERE DEVCODE = #{devcode}\n" +
+ " AND ALARM_CONTENT = #{MsgContent}\n" +
+ " AND STATUS='1'")
+ Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
index 47e7cce..33ce14a 100644
--- a/src/main/java/com/casic/dao/DataGasMapper.java
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -1,9 +1,48 @@
package com.casic.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.casic.entity.DataGasReport;
+import com.casic.entity.DataGasDector;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+import java.util.Map;
@Mapper
-public interface DataGasMapper extends BaseMapper {
+public interface DataGasMapper extends BaseMapper {
+
+ @Select("select bd.id as \"deviceId\",bwi.WELL_CODE AS \"wellCode\" " +
+ "from bus_device_well bdw " +
+ "join (select id from bus_device where devcode=#{devcode}) bd ON bd.id=bdw.device_id " +
+ "join bus_well_info bwi ON bwi.id=bdw.well_id ")
+ Map getWellCode(@Param("devcode") String devcode);
+
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{onlineState} " +
+ "WHERE devcode=#{devcode} ")
+ void setOfflineByDevcode(@Param("devcode") String devcode,
+ @Param("onlineState") Integer onlineState);
+
+ @Select("SELECT level,high_value " +
+ "FROM alarm_level " +
+ "WHERE device_type=#{deviceType} ")
+ List> getAlarmLevelList(@Param("deviceType") Long deviceType);
+
+ @Select("SELECT devcode " +
+ "FROM data_gas_dector " +
+ "WHERE devcode=#{devcode} " +
+ "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+
+ "ORDER BY logtime DESC " +
+ "LIMIT 1")
+ String getLastData(@Param("minutes") String minutes,
+ @Param("devcode") String devcode);
+
+ @Select("SELECT alarm_content" +
+ "FROM BASE_alarm_content_type" +
+ "where device_type=#{deviceType}")
+ String getGasMsgContent(@Param("deviceType")Long deviceType);
+
+
}
diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
new file mode 100644
index 0000000..5131821
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
@@ -0,0 +1,59 @@
+package com.casic.dao.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmJobMapper;
+import com.casic.entity.AlarmJob;
+import org.springframework.stereotype.Component;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Component
+public class AlarmJobDao {
+
+ private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ private static Snowflake snowflake = new Snowflake(0, 2);
+// private static final Sn
+
+ @Resource
+ private AlarmJobMapper alarmJobMapper;
+
+ public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) {
+ AlarmJob alarmJob = new AlarmJob();
+ alarmJob.setId(snowflake.nextId());
+ alarmJob.setDevcode(devCode);
+ alarmJob.setWellCode(wellCode);
+ alarmJob.setJobStatus("0");
+ alarmJob.setCreateTime(new Date());
+ alarmJob.setJobcode(this.produceJobCode(devTypeName));
+ alarmJob.setJobType(jobType);
+ alarmJobMapper.insert(alarmJob);
+ return alarmJob;
+ }
+
+ /**
+ * 前缀+日期+4位流水号
+ *
+ * @param devTypeName
+ * @return
+ */
+ private String produceJobCode(String devTypeName) {
+ String pre = devTypeName;
+ String dataStr = sdf6.format(new Date());
+ String fix = this.getJobCodeMaxSerial(pre + dataStr);
+ return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001";
+ }
+
+
+ private String getJobCodeMaxSerial(String jobcode) {
+ String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode);
+ String fix = "";
+ if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) {
+ fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4);
+ }
+ return fix;
+ }
+}
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh
new file mode 100644
index 0000000..e14c4c7
--- /dev/null
+++ b/src/main/build/bin/start.sh
@@ -0,0 +1,2 @@
+java -jar ./lib/${project.build.finalName}.jar
+
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
index c55e37d..0887f1f 100644
--- a/src/main/java/com/casic/CasicApplication.java
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -3,8 +3,6 @@
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;
/**
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
index e5351c9..be0de6b 100644
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -1,14 +1,19 @@
package com.casic.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.casic.model.DataReportParam;
-import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
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;
+import java.util.Map;
+
+@Slf4j
@RequestMapping("/data")
@RestController
public class DeviceDataController {
@@ -19,19 +24,16 @@
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 String gasReceiver(@RequestBody Map map) {
+// log.info("---------"+JSON.toJSONString(map));
+// return "200";
+// }
@PostMapping("/gas/receiver")
- public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
- return dataService.heartBeatSave(heartbeatParam);
+ public ResponseData gasReceiver(@RequestBody DataReportParam dataReportParam) {
+ log.info("---------"+JSON.toJSONString(dataReportParam));
+ return dataService.gasReceiver(dataReportParam);
}
}
diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java
new file mode 100644
index 0000000..e5e9c8d
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmJobMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmJob;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface AlarmJobMapper extends BaseMapper {
+
+ @Select("SELECT MAX(jobcode) " +
+ "FROM alarm_job " +
+ "WHERE JOBCODE like '${jobcode}%'")
+ String getJobCodeMaxSerial(@Param("jobcode") String jobcode);
+
+}
diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
new file mode 100644
index 0000000..8da7dcb
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmRecords;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface AlarmRecordsMapper extends BaseMapper {
+
+
+ @Select("SELECT JOB_ID AS \"jobId\"\n " +
+ "FROM alarm_records\n " +
+ "WHERE DEVCODE = #{devcode}\n " +
+ "AND ALARM_CONTENT = #{MsgContent}\n " +
+ "AND STATUS='1'\n " +
+ "AND JOB_ID>0 ")
+ String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+
+ @Update(" UPDATE alarm_records\n" +
+ " SET STATUS='0'\n" +
+ " WHERE DEVCODE = #{devcode}\n" +
+ " AND ALARM_CONTENT = #{MsgContent}\n" +
+ " AND STATUS='1'")
+ Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
index 47e7cce..33ce14a 100644
--- a/src/main/java/com/casic/dao/DataGasMapper.java
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -1,9 +1,48 @@
package com.casic.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.casic.entity.DataGasReport;
+import com.casic.entity.DataGasDector;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+import java.util.Map;
@Mapper
-public interface DataGasMapper extends BaseMapper {
+public interface DataGasMapper extends BaseMapper {
+
+ @Select("select bd.id as \"deviceId\",bwi.WELL_CODE AS \"wellCode\" " +
+ "from bus_device_well bdw " +
+ "join (select id from bus_device where devcode=#{devcode}) bd ON bd.id=bdw.device_id " +
+ "join bus_well_info bwi ON bwi.id=bdw.well_id ")
+ Map getWellCode(@Param("devcode") String devcode);
+
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{onlineState} " +
+ "WHERE devcode=#{devcode} ")
+ void setOfflineByDevcode(@Param("devcode") String devcode,
+ @Param("onlineState") Integer onlineState);
+
+ @Select("SELECT level,high_value " +
+ "FROM alarm_level " +
+ "WHERE device_type=#{deviceType} ")
+ List> getAlarmLevelList(@Param("deviceType") Long deviceType);
+
+ @Select("SELECT devcode " +
+ "FROM data_gas_dector " +
+ "WHERE devcode=#{devcode} " +
+ "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+
+ "ORDER BY logtime DESC " +
+ "LIMIT 1")
+ String getLastData(@Param("minutes") String minutes,
+ @Param("devcode") String devcode);
+
+ @Select("SELECT alarm_content" +
+ "FROM BASE_alarm_content_type" +
+ "where device_type=#{deviceType}")
+ String getGasMsgContent(@Param("deviceType")Long deviceType);
+
+
}
diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
new file mode 100644
index 0000000..5131821
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
@@ -0,0 +1,59 @@
+package com.casic.dao.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmJobMapper;
+import com.casic.entity.AlarmJob;
+import org.springframework.stereotype.Component;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Component
+public class AlarmJobDao {
+
+ private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ private static Snowflake snowflake = new Snowflake(0, 2);
+// private static final Sn
+
+ @Resource
+ private AlarmJobMapper alarmJobMapper;
+
+ public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) {
+ AlarmJob alarmJob = new AlarmJob();
+ alarmJob.setId(snowflake.nextId());
+ alarmJob.setDevcode(devCode);
+ alarmJob.setWellCode(wellCode);
+ alarmJob.setJobStatus("0");
+ alarmJob.setCreateTime(new Date());
+ alarmJob.setJobcode(this.produceJobCode(devTypeName));
+ alarmJob.setJobType(jobType);
+ alarmJobMapper.insert(alarmJob);
+ return alarmJob;
+ }
+
+ /**
+ * 前缀+日期+4位流水号
+ *
+ * @param devTypeName
+ * @return
+ */
+ private String produceJobCode(String devTypeName) {
+ String pre = devTypeName;
+ String dataStr = sdf6.format(new Date());
+ String fix = this.getJobCodeMaxSerial(pre + dataStr);
+ return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001";
+ }
+
+
+ private String getJobCodeMaxSerial(String jobcode) {
+ String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode);
+ String fix = "";
+ if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) {
+ fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4);
+ }
+ return fix;
+ }
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
deleted file mode 100644
index c797e55..0000000
--- a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
+++ /dev/null
@@ -1,68 +0,0 @@
-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/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh
new file mode 100644
index 0000000..e14c4c7
--- /dev/null
+++ b/src/main/build/bin/start.sh
@@ -0,0 +1,2 @@
+java -jar ./lib/${project.build.finalName}.jar
+
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
index c55e37d..0887f1f 100644
--- a/src/main/java/com/casic/CasicApplication.java
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -3,8 +3,6 @@
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;
/**
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
index e5351c9..be0de6b 100644
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -1,14 +1,19 @@
package com.casic.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.casic.model.DataReportParam;
-import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
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;
+import java.util.Map;
+
+@Slf4j
@RequestMapping("/data")
@RestController
public class DeviceDataController {
@@ -19,19 +24,16 @@
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 String gasReceiver(@RequestBody Map map) {
+// log.info("---------"+JSON.toJSONString(map));
+// return "200";
+// }
@PostMapping("/gas/receiver")
- public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
- return dataService.heartBeatSave(heartbeatParam);
+ public ResponseData gasReceiver(@RequestBody DataReportParam dataReportParam) {
+ log.info("---------"+JSON.toJSONString(dataReportParam));
+ return dataService.gasReceiver(dataReportParam);
}
}
diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java
new file mode 100644
index 0000000..e5e9c8d
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmJobMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmJob;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface AlarmJobMapper extends BaseMapper {
+
+ @Select("SELECT MAX(jobcode) " +
+ "FROM alarm_job " +
+ "WHERE JOBCODE like '${jobcode}%'")
+ String getJobCodeMaxSerial(@Param("jobcode") String jobcode);
+
+}
diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
new file mode 100644
index 0000000..8da7dcb
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmRecords;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface AlarmRecordsMapper extends BaseMapper {
+
+
+ @Select("SELECT JOB_ID AS \"jobId\"\n " +
+ "FROM alarm_records\n " +
+ "WHERE DEVCODE = #{devcode}\n " +
+ "AND ALARM_CONTENT = #{MsgContent}\n " +
+ "AND STATUS='1'\n " +
+ "AND JOB_ID>0 ")
+ String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+
+ @Update(" UPDATE alarm_records\n" +
+ " SET STATUS='0'\n" +
+ " WHERE DEVCODE = #{devcode}\n" +
+ " AND ALARM_CONTENT = #{MsgContent}\n" +
+ " AND STATUS='1'")
+ Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
index 47e7cce..33ce14a 100644
--- a/src/main/java/com/casic/dao/DataGasMapper.java
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -1,9 +1,48 @@
package com.casic.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.casic.entity.DataGasReport;
+import com.casic.entity.DataGasDector;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+import java.util.Map;
@Mapper
-public interface DataGasMapper extends BaseMapper {
+public interface DataGasMapper extends BaseMapper {
+
+ @Select("select bd.id as \"deviceId\",bwi.WELL_CODE AS \"wellCode\" " +
+ "from bus_device_well bdw " +
+ "join (select id from bus_device where devcode=#{devcode}) bd ON bd.id=bdw.device_id " +
+ "join bus_well_info bwi ON bwi.id=bdw.well_id ")
+ Map getWellCode(@Param("devcode") String devcode);
+
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{onlineState} " +
+ "WHERE devcode=#{devcode} ")
+ void setOfflineByDevcode(@Param("devcode") String devcode,
+ @Param("onlineState") Integer onlineState);
+
+ @Select("SELECT level,high_value " +
+ "FROM alarm_level " +
+ "WHERE device_type=#{deviceType} ")
+ List> getAlarmLevelList(@Param("deviceType") Long deviceType);
+
+ @Select("SELECT devcode " +
+ "FROM data_gas_dector " +
+ "WHERE devcode=#{devcode} " +
+ "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+
+ "ORDER BY logtime DESC " +
+ "LIMIT 1")
+ String getLastData(@Param("minutes") String minutes,
+ @Param("devcode") String devcode);
+
+ @Select("SELECT alarm_content" +
+ "FROM BASE_alarm_content_type" +
+ "where device_type=#{deviceType}")
+ String getGasMsgContent(@Param("deviceType")Long deviceType);
+
+
}
diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
new file mode 100644
index 0000000..5131821
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
@@ -0,0 +1,59 @@
+package com.casic.dao.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmJobMapper;
+import com.casic.entity.AlarmJob;
+import org.springframework.stereotype.Component;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Component
+public class AlarmJobDao {
+
+ private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ private static Snowflake snowflake = new Snowflake(0, 2);
+// private static final Sn
+
+ @Resource
+ private AlarmJobMapper alarmJobMapper;
+
+ public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) {
+ AlarmJob alarmJob = new AlarmJob();
+ alarmJob.setId(snowflake.nextId());
+ alarmJob.setDevcode(devCode);
+ alarmJob.setWellCode(wellCode);
+ alarmJob.setJobStatus("0");
+ alarmJob.setCreateTime(new Date());
+ alarmJob.setJobcode(this.produceJobCode(devTypeName));
+ alarmJob.setJobType(jobType);
+ alarmJobMapper.insert(alarmJob);
+ return alarmJob;
+ }
+
+ /**
+ * 前缀+日期+4位流水号
+ *
+ * @param devTypeName
+ * @return
+ */
+ private String produceJobCode(String devTypeName) {
+ String pre = devTypeName;
+ String dataStr = sdf6.format(new Date());
+ String fix = this.getJobCodeMaxSerial(pre + dataStr);
+ return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001";
+ }
+
+
+ private String getJobCodeMaxSerial(String jobcode) {
+ String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode);
+ String fix = "";
+ if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) {
+ fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4);
+ }
+ return fix;
+ }
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
deleted file mode 100644
index c797e55..0000000
--- a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
+++ /dev/null
@@ -1,68 +0,0 @@
-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/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java
new file mode 100644
index 0000000..8a0f764
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmJob.java
@@ -0,0 +1,165 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 报警工单表
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_job")
+public class AlarmJob extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 工单编号
+ */
+ @TableField("JOBCODE")
+ private String jobcode;
+ /**
+ * 工单类型
+ */
+ @TableField("JOG_TYPE")
+ private String jobType;
+ /**
+ * 井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 工单创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+ /**
+ * 工单状态(0待处理,1待确认,2处理中,3完成)
+ */
+ @TableField("JOB_STATUS")
+ private String jobStatus;
+ /**
+ * 接单人员
+ */
+ @TableField("GET_JOB_PERSON")
+ private Long getJobPerson;
+ /**
+ * 接单时间
+ */
+ @TableField("GET_JOB_TIME")
+ private Date getJobTime;
+ /**
+ * 应接单时间
+ */
+ @TableField("SHOULD_GET_TIME")
+ private Date shouldGetTime;
+ /**
+ * 第一现场情况
+ */
+ @TableField("FIRST_STATE")
+ private String firstState;
+ /**
+ * 第一现场照片
+ */
+ @TableField("FIRST_STATE_PHOTOS")
+ private String firstStatePhotos;
+ /**
+ * 确认人员
+ */
+ @TableField("CONFIRM_JOB_PERSON")
+ private Long confirmJobPerson;
+ /**
+ * 确认时间
+ */
+ @TableField("CONFRIM_JOB_TIME")
+ private Date confrimJobTime;
+ /**
+ * 处理人员
+ */
+ @TableField("HANDLE_JOB_Person")
+ private Long handleJobPerson;
+ /**
+ * 处理时间
+ */
+ @TableField("HANDLE_JOB_TIME")
+ private Date handleJobTime;
+ /**
+ * 维护情况记录
+ */
+ @TableField("HANDLE_MESSAGE")
+ private String handleMessage;
+ /**
+ * 维护图片
+ */
+ @TableField("HANDLE_PHOTOS")
+ private String handlePhotos;
+ /**
+ * 工单流转记录
+ */
+ @TableField("FLOW")
+ private String flow;
+
+ @TableField("JOB_BELONG_TO")
+ private Long jobBelongTo;
+
+ @TableField("JOB_FLAG_DELAY")
+ private String jobFlagDelay;
+
+ @TableField("JOB_FLAG_1")
+ private String jobFlag1;
+
+ @TableField(exist = false)
+ private String alarmValue;
+
+ @TableField(exist = false)
+ private String alarmContentName;
+
+ @TableField(exist = false)
+ private Integer recordId;
+
+ @Override
+ public String toString() {
+ return "AlarmJob{" +
+ "id=" + id +
+ ", jobcode=" + jobcode +
+ ", jogType=" + jobType +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", createTime=" + createTime +
+ ", jobStatus=" + jobStatus +
+ ", getJobPerson=" + getJobPerson +
+ ", getJobTime=" + getJobTime +
+ ", firstState=" + firstState +
+ ", firstStatePhotos=" + firstStatePhotos +
+ ", confirmJobPerson=" + confirmJobPerson +
+ ", confrimJobTime=" + confrimJobTime +
+ ", handleJobPerson=" + handleJobPerson +
+ ", handleJobTime=" + handleJobTime +
+ ", handleMessage=" + handleMessage +
+ ", handlePhotos=" + handlePhotos +
+ ", flow=" + flow +
+ ", recordId=" + recordId +
+ "}";
+ }
+}
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh
new file mode 100644
index 0000000..e14c4c7
--- /dev/null
+++ b/src/main/build/bin/start.sh
@@ -0,0 +1,2 @@
+java -jar ./lib/${project.build.finalName}.jar
+
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
index c55e37d..0887f1f 100644
--- a/src/main/java/com/casic/CasicApplication.java
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -3,8 +3,6 @@
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;
/**
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
index e5351c9..be0de6b 100644
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -1,14 +1,19 @@
package com.casic.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.casic.model.DataReportParam;
-import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
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;
+import java.util.Map;
+
+@Slf4j
@RequestMapping("/data")
@RestController
public class DeviceDataController {
@@ -19,19 +24,16 @@
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 String gasReceiver(@RequestBody Map map) {
+// log.info("---------"+JSON.toJSONString(map));
+// return "200";
+// }
@PostMapping("/gas/receiver")
- public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
- return dataService.heartBeatSave(heartbeatParam);
+ public ResponseData gasReceiver(@RequestBody DataReportParam dataReportParam) {
+ log.info("---------"+JSON.toJSONString(dataReportParam));
+ return dataService.gasReceiver(dataReportParam);
}
}
diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java
new file mode 100644
index 0000000..e5e9c8d
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmJobMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmJob;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface AlarmJobMapper extends BaseMapper {
+
+ @Select("SELECT MAX(jobcode) " +
+ "FROM alarm_job " +
+ "WHERE JOBCODE like '${jobcode}%'")
+ String getJobCodeMaxSerial(@Param("jobcode") String jobcode);
+
+}
diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
new file mode 100644
index 0000000..8da7dcb
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmRecords;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface AlarmRecordsMapper extends BaseMapper {
+
+
+ @Select("SELECT JOB_ID AS \"jobId\"\n " +
+ "FROM alarm_records\n " +
+ "WHERE DEVCODE = #{devcode}\n " +
+ "AND ALARM_CONTENT = #{MsgContent}\n " +
+ "AND STATUS='1'\n " +
+ "AND JOB_ID>0 ")
+ String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+
+ @Update(" UPDATE alarm_records\n" +
+ " SET STATUS='0'\n" +
+ " WHERE DEVCODE = #{devcode}\n" +
+ " AND ALARM_CONTENT = #{MsgContent}\n" +
+ " AND STATUS='1'")
+ Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
index 47e7cce..33ce14a 100644
--- a/src/main/java/com/casic/dao/DataGasMapper.java
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -1,9 +1,48 @@
package com.casic.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.casic.entity.DataGasReport;
+import com.casic.entity.DataGasDector;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+import java.util.Map;
@Mapper
-public interface DataGasMapper extends BaseMapper {
+public interface DataGasMapper extends BaseMapper {
+
+ @Select("select bd.id as \"deviceId\",bwi.WELL_CODE AS \"wellCode\" " +
+ "from bus_device_well bdw " +
+ "join (select id from bus_device where devcode=#{devcode}) bd ON bd.id=bdw.device_id " +
+ "join bus_well_info bwi ON bwi.id=bdw.well_id ")
+ Map getWellCode(@Param("devcode") String devcode);
+
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{onlineState} " +
+ "WHERE devcode=#{devcode} ")
+ void setOfflineByDevcode(@Param("devcode") String devcode,
+ @Param("onlineState") Integer onlineState);
+
+ @Select("SELECT level,high_value " +
+ "FROM alarm_level " +
+ "WHERE device_type=#{deviceType} ")
+ List> getAlarmLevelList(@Param("deviceType") Long deviceType);
+
+ @Select("SELECT devcode " +
+ "FROM data_gas_dector " +
+ "WHERE devcode=#{devcode} " +
+ "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+
+ "ORDER BY logtime DESC " +
+ "LIMIT 1")
+ String getLastData(@Param("minutes") String minutes,
+ @Param("devcode") String devcode);
+
+ @Select("SELECT alarm_content" +
+ "FROM BASE_alarm_content_type" +
+ "where device_type=#{deviceType}")
+ String getGasMsgContent(@Param("deviceType")Long deviceType);
+
+
}
diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
new file mode 100644
index 0000000..5131821
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
@@ -0,0 +1,59 @@
+package com.casic.dao.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmJobMapper;
+import com.casic.entity.AlarmJob;
+import org.springframework.stereotype.Component;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Component
+public class AlarmJobDao {
+
+ private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ private static Snowflake snowflake = new Snowflake(0, 2);
+// private static final Sn
+
+ @Resource
+ private AlarmJobMapper alarmJobMapper;
+
+ public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) {
+ AlarmJob alarmJob = new AlarmJob();
+ alarmJob.setId(snowflake.nextId());
+ alarmJob.setDevcode(devCode);
+ alarmJob.setWellCode(wellCode);
+ alarmJob.setJobStatus("0");
+ alarmJob.setCreateTime(new Date());
+ alarmJob.setJobcode(this.produceJobCode(devTypeName));
+ alarmJob.setJobType(jobType);
+ alarmJobMapper.insert(alarmJob);
+ return alarmJob;
+ }
+
+ /**
+ * 前缀+日期+4位流水号
+ *
+ * @param devTypeName
+ * @return
+ */
+ private String produceJobCode(String devTypeName) {
+ String pre = devTypeName;
+ String dataStr = sdf6.format(new Date());
+ String fix = this.getJobCodeMaxSerial(pre + dataStr);
+ return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001";
+ }
+
+
+ private String getJobCodeMaxSerial(String jobcode) {
+ String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode);
+ String fix = "";
+ if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) {
+ fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4);
+ }
+ return fix;
+ }
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
deleted file mode 100644
index c797e55..0000000
--- a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
+++ /dev/null
@@ -1,68 +0,0 @@
-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/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java
new file mode 100644
index 0000000..8a0f764
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmJob.java
@@ -0,0 +1,165 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 报警工单表
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_job")
+public class AlarmJob extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 工单编号
+ */
+ @TableField("JOBCODE")
+ private String jobcode;
+ /**
+ * 工单类型
+ */
+ @TableField("JOG_TYPE")
+ private String jobType;
+ /**
+ * 井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 工单创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+ /**
+ * 工单状态(0待处理,1待确认,2处理中,3完成)
+ */
+ @TableField("JOB_STATUS")
+ private String jobStatus;
+ /**
+ * 接单人员
+ */
+ @TableField("GET_JOB_PERSON")
+ private Long getJobPerson;
+ /**
+ * 接单时间
+ */
+ @TableField("GET_JOB_TIME")
+ private Date getJobTime;
+ /**
+ * 应接单时间
+ */
+ @TableField("SHOULD_GET_TIME")
+ private Date shouldGetTime;
+ /**
+ * 第一现场情况
+ */
+ @TableField("FIRST_STATE")
+ private String firstState;
+ /**
+ * 第一现场照片
+ */
+ @TableField("FIRST_STATE_PHOTOS")
+ private String firstStatePhotos;
+ /**
+ * 确认人员
+ */
+ @TableField("CONFIRM_JOB_PERSON")
+ private Long confirmJobPerson;
+ /**
+ * 确认时间
+ */
+ @TableField("CONFRIM_JOB_TIME")
+ private Date confrimJobTime;
+ /**
+ * 处理人员
+ */
+ @TableField("HANDLE_JOB_Person")
+ private Long handleJobPerson;
+ /**
+ * 处理时间
+ */
+ @TableField("HANDLE_JOB_TIME")
+ private Date handleJobTime;
+ /**
+ * 维护情况记录
+ */
+ @TableField("HANDLE_MESSAGE")
+ private String handleMessage;
+ /**
+ * 维护图片
+ */
+ @TableField("HANDLE_PHOTOS")
+ private String handlePhotos;
+ /**
+ * 工单流转记录
+ */
+ @TableField("FLOW")
+ private String flow;
+
+ @TableField("JOB_BELONG_TO")
+ private Long jobBelongTo;
+
+ @TableField("JOB_FLAG_DELAY")
+ private String jobFlagDelay;
+
+ @TableField("JOB_FLAG_1")
+ private String jobFlag1;
+
+ @TableField(exist = false)
+ private String alarmValue;
+
+ @TableField(exist = false)
+ private String alarmContentName;
+
+ @TableField(exist = false)
+ private Integer recordId;
+
+ @Override
+ public String toString() {
+ return "AlarmJob{" +
+ "id=" + id +
+ ", jobcode=" + jobcode +
+ ", jogType=" + jobType +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", createTime=" + createTime +
+ ", jobStatus=" + jobStatus +
+ ", getJobPerson=" + getJobPerson +
+ ", getJobTime=" + getJobTime +
+ ", firstState=" + firstState +
+ ", firstStatePhotos=" + firstStatePhotos +
+ ", confirmJobPerson=" + confirmJobPerson +
+ ", confrimJobTime=" + confrimJobTime +
+ ", handleJobPerson=" + handleJobPerson +
+ ", handleJobTime=" + handleJobTime +
+ ", handleMessage=" + handleMessage +
+ ", handlePhotos=" + handlePhotos +
+ ", flow=" + flow +
+ ", recordId=" + recordId +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java
new file mode 100644
index 0000000..88b0b26
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmRecords.java
@@ -0,0 +1,108 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ *
+ *
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_records")
+public class AlarmRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 设备ID
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 闸井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 告警类型
+ */
+ @TableField("ALARM_TYPE")
+ private String alarmType;
+ /**
+ * 告警内容
+ */
+ @TableField("ALARM_CONTENT")
+ private String alarmContent;
+ /**
+ * 告警数值
+ */
+ @TableField("ALARM_VALUE")
+ private String alarmValue;
+ /**
+ * 告警等级
+ */
+ @TableField("ALARM_LEVEL")
+ private Integer alarmLevel;
+ /**
+ * 告警详情
+ */
+ @TableField("ALARM_MSG")
+ private String alarmMessage;
+ /**
+ * 告警时间
+ */
+ @TableField("ALARM_TIME")
+ private Date alarmTime;
+ /**
+ * 告警状态
+ */
+ @TableField("STATUS")
+ private String status;
+ /**
+ * 工单编号
+ */
+ @TableField("JOB_ID")
+ private Long jobId;
+
+ @TableField(exist = false)
+ private Integer jobStatus;
+
+ @Override
+ public String toString() {
+ return "AlarmRecords{" +
+ "id=" + id +
+ ", deviceId=" + deviceId +
+ ", devcode=" + devcode +
+ ", wellCode=" + wellCode +
+ ", alarmType=" + alarmType +
+ ", alarmContent=" + alarmContent +
+ ", alarmValue=" + alarmValue +
+ ", alarmLevel=" + alarmLevel +
+ ", alarmMessage=" + alarmMessage +
+ ", alarmTime=" + alarmTime +
+ ", status=" + status +
+ ", jobId=" + jobId +
+ ", jobStatus=" + jobStatus +
+ "}";
+ }
+}
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh
new file mode 100644
index 0000000..e14c4c7
--- /dev/null
+++ b/src/main/build/bin/start.sh
@@ -0,0 +1,2 @@
+java -jar ./lib/${project.build.finalName}.jar
+
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
index c55e37d..0887f1f 100644
--- a/src/main/java/com/casic/CasicApplication.java
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -3,8 +3,6 @@
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;
/**
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
index e5351c9..be0de6b 100644
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -1,14 +1,19 @@
package com.casic.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.casic.model.DataReportParam;
-import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
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;
+import java.util.Map;
+
+@Slf4j
@RequestMapping("/data")
@RestController
public class DeviceDataController {
@@ -19,19 +24,16 @@
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 String gasReceiver(@RequestBody Map map) {
+// log.info("---------"+JSON.toJSONString(map));
+// return "200";
+// }
@PostMapping("/gas/receiver")
- public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
- return dataService.heartBeatSave(heartbeatParam);
+ public ResponseData gasReceiver(@RequestBody DataReportParam dataReportParam) {
+ log.info("---------"+JSON.toJSONString(dataReportParam));
+ return dataService.gasReceiver(dataReportParam);
}
}
diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java
new file mode 100644
index 0000000..e5e9c8d
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmJobMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmJob;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface AlarmJobMapper extends BaseMapper {
+
+ @Select("SELECT MAX(jobcode) " +
+ "FROM alarm_job " +
+ "WHERE JOBCODE like '${jobcode}%'")
+ String getJobCodeMaxSerial(@Param("jobcode") String jobcode);
+
+}
diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
new file mode 100644
index 0000000..8da7dcb
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmRecords;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface AlarmRecordsMapper extends BaseMapper {
+
+
+ @Select("SELECT JOB_ID AS \"jobId\"\n " +
+ "FROM alarm_records\n " +
+ "WHERE DEVCODE = #{devcode}\n " +
+ "AND ALARM_CONTENT = #{MsgContent}\n " +
+ "AND STATUS='1'\n " +
+ "AND JOB_ID>0 ")
+ String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+
+ @Update(" UPDATE alarm_records\n" +
+ " SET STATUS='0'\n" +
+ " WHERE DEVCODE = #{devcode}\n" +
+ " AND ALARM_CONTENT = #{MsgContent}\n" +
+ " AND STATUS='1'")
+ Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
index 47e7cce..33ce14a 100644
--- a/src/main/java/com/casic/dao/DataGasMapper.java
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -1,9 +1,48 @@
package com.casic.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.casic.entity.DataGasReport;
+import com.casic.entity.DataGasDector;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+import java.util.Map;
@Mapper
-public interface DataGasMapper extends BaseMapper {
+public interface DataGasMapper extends BaseMapper {
+
+ @Select("select bd.id as \"deviceId\",bwi.WELL_CODE AS \"wellCode\" " +
+ "from bus_device_well bdw " +
+ "join (select id from bus_device where devcode=#{devcode}) bd ON bd.id=bdw.device_id " +
+ "join bus_well_info bwi ON bwi.id=bdw.well_id ")
+ Map getWellCode(@Param("devcode") String devcode);
+
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{onlineState} " +
+ "WHERE devcode=#{devcode} ")
+ void setOfflineByDevcode(@Param("devcode") String devcode,
+ @Param("onlineState") Integer onlineState);
+
+ @Select("SELECT level,high_value " +
+ "FROM alarm_level " +
+ "WHERE device_type=#{deviceType} ")
+ List> getAlarmLevelList(@Param("deviceType") Long deviceType);
+
+ @Select("SELECT devcode " +
+ "FROM data_gas_dector " +
+ "WHERE devcode=#{devcode} " +
+ "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+
+ "ORDER BY logtime DESC " +
+ "LIMIT 1")
+ String getLastData(@Param("minutes") String minutes,
+ @Param("devcode") String devcode);
+
+ @Select("SELECT alarm_content" +
+ "FROM BASE_alarm_content_type" +
+ "where device_type=#{deviceType}")
+ String getGasMsgContent(@Param("deviceType")Long deviceType);
+
+
}
diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
new file mode 100644
index 0000000..5131821
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
@@ -0,0 +1,59 @@
+package com.casic.dao.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmJobMapper;
+import com.casic.entity.AlarmJob;
+import org.springframework.stereotype.Component;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Component
+public class AlarmJobDao {
+
+ private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ private static Snowflake snowflake = new Snowflake(0, 2);
+// private static final Sn
+
+ @Resource
+ private AlarmJobMapper alarmJobMapper;
+
+ public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) {
+ AlarmJob alarmJob = new AlarmJob();
+ alarmJob.setId(snowflake.nextId());
+ alarmJob.setDevcode(devCode);
+ alarmJob.setWellCode(wellCode);
+ alarmJob.setJobStatus("0");
+ alarmJob.setCreateTime(new Date());
+ alarmJob.setJobcode(this.produceJobCode(devTypeName));
+ alarmJob.setJobType(jobType);
+ alarmJobMapper.insert(alarmJob);
+ return alarmJob;
+ }
+
+ /**
+ * 前缀+日期+4位流水号
+ *
+ * @param devTypeName
+ * @return
+ */
+ private String produceJobCode(String devTypeName) {
+ String pre = devTypeName;
+ String dataStr = sdf6.format(new Date());
+ String fix = this.getJobCodeMaxSerial(pre + dataStr);
+ return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001";
+ }
+
+
+ private String getJobCodeMaxSerial(String jobcode) {
+ String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode);
+ String fix = "";
+ if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) {
+ fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4);
+ }
+ return fix;
+ }
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
deleted file mode 100644
index c797e55..0000000
--- a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
+++ /dev/null
@@ -1,68 +0,0 @@
-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/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java
new file mode 100644
index 0000000..8a0f764
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmJob.java
@@ -0,0 +1,165 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 报警工单表
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_job")
+public class AlarmJob extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 工单编号
+ */
+ @TableField("JOBCODE")
+ private String jobcode;
+ /**
+ * 工单类型
+ */
+ @TableField("JOG_TYPE")
+ private String jobType;
+ /**
+ * 井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 工单创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+ /**
+ * 工单状态(0待处理,1待确认,2处理中,3完成)
+ */
+ @TableField("JOB_STATUS")
+ private String jobStatus;
+ /**
+ * 接单人员
+ */
+ @TableField("GET_JOB_PERSON")
+ private Long getJobPerson;
+ /**
+ * 接单时间
+ */
+ @TableField("GET_JOB_TIME")
+ private Date getJobTime;
+ /**
+ * 应接单时间
+ */
+ @TableField("SHOULD_GET_TIME")
+ private Date shouldGetTime;
+ /**
+ * 第一现场情况
+ */
+ @TableField("FIRST_STATE")
+ private String firstState;
+ /**
+ * 第一现场照片
+ */
+ @TableField("FIRST_STATE_PHOTOS")
+ private String firstStatePhotos;
+ /**
+ * 确认人员
+ */
+ @TableField("CONFIRM_JOB_PERSON")
+ private Long confirmJobPerson;
+ /**
+ * 确认时间
+ */
+ @TableField("CONFRIM_JOB_TIME")
+ private Date confrimJobTime;
+ /**
+ * 处理人员
+ */
+ @TableField("HANDLE_JOB_Person")
+ private Long handleJobPerson;
+ /**
+ * 处理时间
+ */
+ @TableField("HANDLE_JOB_TIME")
+ private Date handleJobTime;
+ /**
+ * 维护情况记录
+ */
+ @TableField("HANDLE_MESSAGE")
+ private String handleMessage;
+ /**
+ * 维护图片
+ */
+ @TableField("HANDLE_PHOTOS")
+ private String handlePhotos;
+ /**
+ * 工单流转记录
+ */
+ @TableField("FLOW")
+ private String flow;
+
+ @TableField("JOB_BELONG_TO")
+ private Long jobBelongTo;
+
+ @TableField("JOB_FLAG_DELAY")
+ private String jobFlagDelay;
+
+ @TableField("JOB_FLAG_1")
+ private String jobFlag1;
+
+ @TableField(exist = false)
+ private String alarmValue;
+
+ @TableField(exist = false)
+ private String alarmContentName;
+
+ @TableField(exist = false)
+ private Integer recordId;
+
+ @Override
+ public String toString() {
+ return "AlarmJob{" +
+ "id=" + id +
+ ", jobcode=" + jobcode +
+ ", jogType=" + jobType +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", createTime=" + createTime +
+ ", jobStatus=" + jobStatus +
+ ", getJobPerson=" + getJobPerson +
+ ", getJobTime=" + getJobTime +
+ ", firstState=" + firstState +
+ ", firstStatePhotos=" + firstStatePhotos +
+ ", confirmJobPerson=" + confirmJobPerson +
+ ", confrimJobTime=" + confrimJobTime +
+ ", handleJobPerson=" + handleJobPerson +
+ ", handleJobTime=" + handleJobTime +
+ ", handleMessage=" + handleMessage +
+ ", handlePhotos=" + handlePhotos +
+ ", flow=" + flow +
+ ", recordId=" + recordId +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java
new file mode 100644
index 0000000..88b0b26
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmRecords.java
@@ -0,0 +1,108 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ *
+ *
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_records")
+public class AlarmRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 设备ID
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 闸井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 告警类型
+ */
+ @TableField("ALARM_TYPE")
+ private String alarmType;
+ /**
+ * 告警内容
+ */
+ @TableField("ALARM_CONTENT")
+ private String alarmContent;
+ /**
+ * 告警数值
+ */
+ @TableField("ALARM_VALUE")
+ private String alarmValue;
+ /**
+ * 告警等级
+ */
+ @TableField("ALARM_LEVEL")
+ private Integer alarmLevel;
+ /**
+ * 告警详情
+ */
+ @TableField("ALARM_MSG")
+ private String alarmMessage;
+ /**
+ * 告警时间
+ */
+ @TableField("ALARM_TIME")
+ private Date alarmTime;
+ /**
+ * 告警状态
+ */
+ @TableField("STATUS")
+ private String status;
+ /**
+ * 工单编号
+ */
+ @TableField("JOB_ID")
+ private Long jobId;
+
+ @TableField(exist = false)
+ private Integer jobStatus;
+
+ @Override
+ public String toString() {
+ return "AlarmRecords{" +
+ "id=" + id +
+ ", deviceId=" + deviceId +
+ ", devcode=" + devcode +
+ ", wellCode=" + wellCode +
+ ", alarmType=" + alarmType +
+ ", alarmContent=" + alarmContent +
+ ", alarmValue=" + alarmValue +
+ ", alarmLevel=" + alarmLevel +
+ ", alarmMessage=" + alarmMessage +
+ ", alarmTime=" + alarmTime +
+ ", status=" + status +
+ ", jobId=" + jobId +
+ ", jobStatus=" + jobStatus +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/DataGasDector.java b/src/main/java/com/casic/entity/DataGasDector.java
new file mode 100644
index 0000000..537789a
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasDector.java
@@ -0,0 +1,42 @@
+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 DataGasDector {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ private String devcode;
+ private String wellCode;
+ private String strength;
+
+ private String descn;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh
new file mode 100644
index 0000000..e14c4c7
--- /dev/null
+++ b/src/main/build/bin/start.sh
@@ -0,0 +1,2 @@
+java -jar ./lib/${project.build.finalName}.jar
+
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
index c55e37d..0887f1f 100644
--- a/src/main/java/com/casic/CasicApplication.java
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -3,8 +3,6 @@
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;
/**
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
index e5351c9..be0de6b 100644
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -1,14 +1,19 @@
package com.casic.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.casic.model.DataReportParam;
-import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
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;
+import java.util.Map;
+
+@Slf4j
@RequestMapping("/data")
@RestController
public class DeviceDataController {
@@ -19,19 +24,16 @@
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 String gasReceiver(@RequestBody Map map) {
+// log.info("---------"+JSON.toJSONString(map));
+// return "200";
+// }
@PostMapping("/gas/receiver")
- public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
- return dataService.heartBeatSave(heartbeatParam);
+ public ResponseData gasReceiver(@RequestBody DataReportParam dataReportParam) {
+ log.info("---------"+JSON.toJSONString(dataReportParam));
+ return dataService.gasReceiver(dataReportParam);
}
}
diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java
new file mode 100644
index 0000000..e5e9c8d
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmJobMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmJob;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface AlarmJobMapper extends BaseMapper {
+
+ @Select("SELECT MAX(jobcode) " +
+ "FROM alarm_job " +
+ "WHERE JOBCODE like '${jobcode}%'")
+ String getJobCodeMaxSerial(@Param("jobcode") String jobcode);
+
+}
diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
new file mode 100644
index 0000000..8da7dcb
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmRecords;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface AlarmRecordsMapper extends BaseMapper {
+
+
+ @Select("SELECT JOB_ID AS \"jobId\"\n " +
+ "FROM alarm_records\n " +
+ "WHERE DEVCODE = #{devcode}\n " +
+ "AND ALARM_CONTENT = #{MsgContent}\n " +
+ "AND STATUS='1'\n " +
+ "AND JOB_ID>0 ")
+ String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+
+ @Update(" UPDATE alarm_records\n" +
+ " SET STATUS='0'\n" +
+ " WHERE DEVCODE = #{devcode}\n" +
+ " AND ALARM_CONTENT = #{MsgContent}\n" +
+ " AND STATUS='1'")
+ Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
index 47e7cce..33ce14a 100644
--- a/src/main/java/com/casic/dao/DataGasMapper.java
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -1,9 +1,48 @@
package com.casic.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.casic.entity.DataGasReport;
+import com.casic.entity.DataGasDector;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+import java.util.Map;
@Mapper
-public interface DataGasMapper extends BaseMapper {
+public interface DataGasMapper extends BaseMapper {
+
+ @Select("select bd.id as \"deviceId\",bwi.WELL_CODE AS \"wellCode\" " +
+ "from bus_device_well bdw " +
+ "join (select id from bus_device where devcode=#{devcode}) bd ON bd.id=bdw.device_id " +
+ "join bus_well_info bwi ON bwi.id=bdw.well_id ")
+ Map getWellCode(@Param("devcode") String devcode);
+
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{onlineState} " +
+ "WHERE devcode=#{devcode} ")
+ void setOfflineByDevcode(@Param("devcode") String devcode,
+ @Param("onlineState") Integer onlineState);
+
+ @Select("SELECT level,high_value " +
+ "FROM alarm_level " +
+ "WHERE device_type=#{deviceType} ")
+ List> getAlarmLevelList(@Param("deviceType") Long deviceType);
+
+ @Select("SELECT devcode " +
+ "FROM data_gas_dector " +
+ "WHERE devcode=#{devcode} " +
+ "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+
+ "ORDER BY logtime DESC " +
+ "LIMIT 1")
+ String getLastData(@Param("minutes") String minutes,
+ @Param("devcode") String devcode);
+
+ @Select("SELECT alarm_content" +
+ "FROM BASE_alarm_content_type" +
+ "where device_type=#{deviceType}")
+ String getGasMsgContent(@Param("deviceType")Long deviceType);
+
+
}
diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
new file mode 100644
index 0000000..5131821
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
@@ -0,0 +1,59 @@
+package com.casic.dao.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmJobMapper;
+import com.casic.entity.AlarmJob;
+import org.springframework.stereotype.Component;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Component
+public class AlarmJobDao {
+
+ private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ private static Snowflake snowflake = new Snowflake(0, 2);
+// private static final Sn
+
+ @Resource
+ private AlarmJobMapper alarmJobMapper;
+
+ public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) {
+ AlarmJob alarmJob = new AlarmJob();
+ alarmJob.setId(snowflake.nextId());
+ alarmJob.setDevcode(devCode);
+ alarmJob.setWellCode(wellCode);
+ alarmJob.setJobStatus("0");
+ alarmJob.setCreateTime(new Date());
+ alarmJob.setJobcode(this.produceJobCode(devTypeName));
+ alarmJob.setJobType(jobType);
+ alarmJobMapper.insert(alarmJob);
+ return alarmJob;
+ }
+
+ /**
+ * 前缀+日期+4位流水号
+ *
+ * @param devTypeName
+ * @return
+ */
+ private String produceJobCode(String devTypeName) {
+ String pre = devTypeName;
+ String dataStr = sdf6.format(new Date());
+ String fix = this.getJobCodeMaxSerial(pre + dataStr);
+ return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001";
+ }
+
+
+ private String getJobCodeMaxSerial(String jobcode) {
+ String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode);
+ String fix = "";
+ if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) {
+ fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4);
+ }
+ return fix;
+ }
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
deleted file mode 100644
index c797e55..0000000
--- a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
+++ /dev/null
@@ -1,68 +0,0 @@
-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/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java
new file mode 100644
index 0000000..8a0f764
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmJob.java
@@ -0,0 +1,165 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 报警工单表
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_job")
+public class AlarmJob extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 工单编号
+ */
+ @TableField("JOBCODE")
+ private String jobcode;
+ /**
+ * 工单类型
+ */
+ @TableField("JOG_TYPE")
+ private String jobType;
+ /**
+ * 井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 工单创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+ /**
+ * 工单状态(0待处理,1待确认,2处理中,3完成)
+ */
+ @TableField("JOB_STATUS")
+ private String jobStatus;
+ /**
+ * 接单人员
+ */
+ @TableField("GET_JOB_PERSON")
+ private Long getJobPerson;
+ /**
+ * 接单时间
+ */
+ @TableField("GET_JOB_TIME")
+ private Date getJobTime;
+ /**
+ * 应接单时间
+ */
+ @TableField("SHOULD_GET_TIME")
+ private Date shouldGetTime;
+ /**
+ * 第一现场情况
+ */
+ @TableField("FIRST_STATE")
+ private String firstState;
+ /**
+ * 第一现场照片
+ */
+ @TableField("FIRST_STATE_PHOTOS")
+ private String firstStatePhotos;
+ /**
+ * 确认人员
+ */
+ @TableField("CONFIRM_JOB_PERSON")
+ private Long confirmJobPerson;
+ /**
+ * 确认时间
+ */
+ @TableField("CONFRIM_JOB_TIME")
+ private Date confrimJobTime;
+ /**
+ * 处理人员
+ */
+ @TableField("HANDLE_JOB_Person")
+ private Long handleJobPerson;
+ /**
+ * 处理时间
+ */
+ @TableField("HANDLE_JOB_TIME")
+ private Date handleJobTime;
+ /**
+ * 维护情况记录
+ */
+ @TableField("HANDLE_MESSAGE")
+ private String handleMessage;
+ /**
+ * 维护图片
+ */
+ @TableField("HANDLE_PHOTOS")
+ private String handlePhotos;
+ /**
+ * 工单流转记录
+ */
+ @TableField("FLOW")
+ private String flow;
+
+ @TableField("JOB_BELONG_TO")
+ private Long jobBelongTo;
+
+ @TableField("JOB_FLAG_DELAY")
+ private String jobFlagDelay;
+
+ @TableField("JOB_FLAG_1")
+ private String jobFlag1;
+
+ @TableField(exist = false)
+ private String alarmValue;
+
+ @TableField(exist = false)
+ private String alarmContentName;
+
+ @TableField(exist = false)
+ private Integer recordId;
+
+ @Override
+ public String toString() {
+ return "AlarmJob{" +
+ "id=" + id +
+ ", jobcode=" + jobcode +
+ ", jogType=" + jobType +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", createTime=" + createTime +
+ ", jobStatus=" + jobStatus +
+ ", getJobPerson=" + getJobPerson +
+ ", getJobTime=" + getJobTime +
+ ", firstState=" + firstState +
+ ", firstStatePhotos=" + firstStatePhotos +
+ ", confirmJobPerson=" + confirmJobPerson +
+ ", confrimJobTime=" + confrimJobTime +
+ ", handleJobPerson=" + handleJobPerson +
+ ", handleJobTime=" + handleJobTime +
+ ", handleMessage=" + handleMessage +
+ ", handlePhotos=" + handlePhotos +
+ ", flow=" + flow +
+ ", recordId=" + recordId +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java
new file mode 100644
index 0000000..88b0b26
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmRecords.java
@@ -0,0 +1,108 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ *
+ *
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_records")
+public class AlarmRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 设备ID
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 闸井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 告警类型
+ */
+ @TableField("ALARM_TYPE")
+ private String alarmType;
+ /**
+ * 告警内容
+ */
+ @TableField("ALARM_CONTENT")
+ private String alarmContent;
+ /**
+ * 告警数值
+ */
+ @TableField("ALARM_VALUE")
+ private String alarmValue;
+ /**
+ * 告警等级
+ */
+ @TableField("ALARM_LEVEL")
+ private Integer alarmLevel;
+ /**
+ * 告警详情
+ */
+ @TableField("ALARM_MSG")
+ private String alarmMessage;
+ /**
+ * 告警时间
+ */
+ @TableField("ALARM_TIME")
+ private Date alarmTime;
+ /**
+ * 告警状态
+ */
+ @TableField("STATUS")
+ private String status;
+ /**
+ * 工单编号
+ */
+ @TableField("JOB_ID")
+ private Long jobId;
+
+ @TableField(exist = false)
+ private Integer jobStatus;
+
+ @Override
+ public String toString() {
+ return "AlarmRecords{" +
+ "id=" + id +
+ ", deviceId=" + deviceId +
+ ", devcode=" + devcode +
+ ", wellCode=" + wellCode +
+ ", alarmType=" + alarmType +
+ ", alarmContent=" + alarmContent +
+ ", alarmValue=" + alarmValue +
+ ", alarmLevel=" + alarmLevel +
+ ", alarmMessage=" + alarmMessage +
+ ", alarmTime=" + alarmTime +
+ ", status=" + status +
+ ", jobId=" + jobId +
+ ", jobStatus=" + jobStatus +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/DataGasDector.java b/src/main/java/com/casic/entity/DataGasDector.java
new file mode 100644
index 0000000..537789a
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasDector.java
@@ -0,0 +1,42 @@
+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 DataGasDector {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ private String devcode;
+ private String wellCode;
+ private String strength;
+
+ private String descn;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
deleted file mode 100644
index c43ccdf..0000000
--- a/src/main/java/com/casic/entity/DataGasReport.java
+++ /dev/null
@@ -1,69 +0,0 @@
-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/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh
new file mode 100644
index 0000000..e14c4c7
--- /dev/null
+++ b/src/main/build/bin/start.sh
@@ -0,0 +1,2 @@
+java -jar ./lib/${project.build.finalName}.jar
+
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
index c55e37d..0887f1f 100644
--- a/src/main/java/com/casic/CasicApplication.java
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -3,8 +3,6 @@
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;
/**
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
index e5351c9..be0de6b 100644
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -1,14 +1,19 @@
package com.casic.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.casic.model.DataReportParam;
-import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
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;
+import java.util.Map;
+
+@Slf4j
@RequestMapping("/data")
@RestController
public class DeviceDataController {
@@ -19,19 +24,16 @@
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 String gasReceiver(@RequestBody Map map) {
+// log.info("---------"+JSON.toJSONString(map));
+// return "200";
+// }
@PostMapping("/gas/receiver")
- public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
- return dataService.heartBeatSave(heartbeatParam);
+ public ResponseData gasReceiver(@RequestBody DataReportParam dataReportParam) {
+ log.info("---------"+JSON.toJSONString(dataReportParam));
+ return dataService.gasReceiver(dataReportParam);
}
}
diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java
new file mode 100644
index 0000000..e5e9c8d
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmJobMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmJob;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface AlarmJobMapper extends BaseMapper {
+
+ @Select("SELECT MAX(jobcode) " +
+ "FROM alarm_job " +
+ "WHERE JOBCODE like '${jobcode}%'")
+ String getJobCodeMaxSerial(@Param("jobcode") String jobcode);
+
+}
diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
new file mode 100644
index 0000000..8da7dcb
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmRecords;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface AlarmRecordsMapper extends BaseMapper {
+
+
+ @Select("SELECT JOB_ID AS \"jobId\"\n " +
+ "FROM alarm_records\n " +
+ "WHERE DEVCODE = #{devcode}\n " +
+ "AND ALARM_CONTENT = #{MsgContent}\n " +
+ "AND STATUS='1'\n " +
+ "AND JOB_ID>0 ")
+ String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+
+ @Update(" UPDATE alarm_records\n" +
+ " SET STATUS='0'\n" +
+ " WHERE DEVCODE = #{devcode}\n" +
+ " AND ALARM_CONTENT = #{MsgContent}\n" +
+ " AND STATUS='1'")
+ Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
index 47e7cce..33ce14a 100644
--- a/src/main/java/com/casic/dao/DataGasMapper.java
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -1,9 +1,48 @@
package com.casic.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.casic.entity.DataGasReport;
+import com.casic.entity.DataGasDector;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+import java.util.Map;
@Mapper
-public interface DataGasMapper extends BaseMapper {
+public interface DataGasMapper extends BaseMapper {
+
+ @Select("select bd.id as \"deviceId\",bwi.WELL_CODE AS \"wellCode\" " +
+ "from bus_device_well bdw " +
+ "join (select id from bus_device where devcode=#{devcode}) bd ON bd.id=bdw.device_id " +
+ "join bus_well_info bwi ON bwi.id=bdw.well_id ")
+ Map getWellCode(@Param("devcode") String devcode);
+
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{onlineState} " +
+ "WHERE devcode=#{devcode} ")
+ void setOfflineByDevcode(@Param("devcode") String devcode,
+ @Param("onlineState") Integer onlineState);
+
+ @Select("SELECT level,high_value " +
+ "FROM alarm_level " +
+ "WHERE device_type=#{deviceType} ")
+ List> getAlarmLevelList(@Param("deviceType") Long deviceType);
+
+ @Select("SELECT devcode " +
+ "FROM data_gas_dector " +
+ "WHERE devcode=#{devcode} " +
+ "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+
+ "ORDER BY logtime DESC " +
+ "LIMIT 1")
+ String getLastData(@Param("minutes") String minutes,
+ @Param("devcode") String devcode);
+
+ @Select("SELECT alarm_content" +
+ "FROM BASE_alarm_content_type" +
+ "where device_type=#{deviceType}")
+ String getGasMsgContent(@Param("deviceType")Long deviceType);
+
+
}
diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
new file mode 100644
index 0000000..5131821
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
@@ -0,0 +1,59 @@
+package com.casic.dao.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmJobMapper;
+import com.casic.entity.AlarmJob;
+import org.springframework.stereotype.Component;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Component
+public class AlarmJobDao {
+
+ private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ private static Snowflake snowflake = new Snowflake(0, 2);
+// private static final Sn
+
+ @Resource
+ private AlarmJobMapper alarmJobMapper;
+
+ public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) {
+ AlarmJob alarmJob = new AlarmJob();
+ alarmJob.setId(snowflake.nextId());
+ alarmJob.setDevcode(devCode);
+ alarmJob.setWellCode(wellCode);
+ alarmJob.setJobStatus("0");
+ alarmJob.setCreateTime(new Date());
+ alarmJob.setJobcode(this.produceJobCode(devTypeName));
+ alarmJob.setJobType(jobType);
+ alarmJobMapper.insert(alarmJob);
+ return alarmJob;
+ }
+
+ /**
+ * 前缀+日期+4位流水号
+ *
+ * @param devTypeName
+ * @return
+ */
+ private String produceJobCode(String devTypeName) {
+ String pre = devTypeName;
+ String dataStr = sdf6.format(new Date());
+ String fix = this.getJobCodeMaxSerial(pre + dataStr);
+ return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001";
+ }
+
+
+ private String getJobCodeMaxSerial(String jobcode) {
+ String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode);
+ String fix = "";
+ if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) {
+ fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4);
+ }
+ return fix;
+ }
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
deleted file mode 100644
index c797e55..0000000
--- a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
+++ /dev/null
@@ -1,68 +0,0 @@
-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/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java
new file mode 100644
index 0000000..8a0f764
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmJob.java
@@ -0,0 +1,165 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 报警工单表
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_job")
+public class AlarmJob extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 工单编号
+ */
+ @TableField("JOBCODE")
+ private String jobcode;
+ /**
+ * 工单类型
+ */
+ @TableField("JOG_TYPE")
+ private String jobType;
+ /**
+ * 井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 工单创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+ /**
+ * 工单状态(0待处理,1待确认,2处理中,3完成)
+ */
+ @TableField("JOB_STATUS")
+ private String jobStatus;
+ /**
+ * 接单人员
+ */
+ @TableField("GET_JOB_PERSON")
+ private Long getJobPerson;
+ /**
+ * 接单时间
+ */
+ @TableField("GET_JOB_TIME")
+ private Date getJobTime;
+ /**
+ * 应接单时间
+ */
+ @TableField("SHOULD_GET_TIME")
+ private Date shouldGetTime;
+ /**
+ * 第一现场情况
+ */
+ @TableField("FIRST_STATE")
+ private String firstState;
+ /**
+ * 第一现场照片
+ */
+ @TableField("FIRST_STATE_PHOTOS")
+ private String firstStatePhotos;
+ /**
+ * 确认人员
+ */
+ @TableField("CONFIRM_JOB_PERSON")
+ private Long confirmJobPerson;
+ /**
+ * 确认时间
+ */
+ @TableField("CONFRIM_JOB_TIME")
+ private Date confrimJobTime;
+ /**
+ * 处理人员
+ */
+ @TableField("HANDLE_JOB_Person")
+ private Long handleJobPerson;
+ /**
+ * 处理时间
+ */
+ @TableField("HANDLE_JOB_TIME")
+ private Date handleJobTime;
+ /**
+ * 维护情况记录
+ */
+ @TableField("HANDLE_MESSAGE")
+ private String handleMessage;
+ /**
+ * 维护图片
+ */
+ @TableField("HANDLE_PHOTOS")
+ private String handlePhotos;
+ /**
+ * 工单流转记录
+ */
+ @TableField("FLOW")
+ private String flow;
+
+ @TableField("JOB_BELONG_TO")
+ private Long jobBelongTo;
+
+ @TableField("JOB_FLAG_DELAY")
+ private String jobFlagDelay;
+
+ @TableField("JOB_FLAG_1")
+ private String jobFlag1;
+
+ @TableField(exist = false)
+ private String alarmValue;
+
+ @TableField(exist = false)
+ private String alarmContentName;
+
+ @TableField(exist = false)
+ private Integer recordId;
+
+ @Override
+ public String toString() {
+ return "AlarmJob{" +
+ "id=" + id +
+ ", jobcode=" + jobcode +
+ ", jogType=" + jobType +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", createTime=" + createTime +
+ ", jobStatus=" + jobStatus +
+ ", getJobPerson=" + getJobPerson +
+ ", getJobTime=" + getJobTime +
+ ", firstState=" + firstState +
+ ", firstStatePhotos=" + firstStatePhotos +
+ ", confirmJobPerson=" + confirmJobPerson +
+ ", confrimJobTime=" + confrimJobTime +
+ ", handleJobPerson=" + handleJobPerson +
+ ", handleJobTime=" + handleJobTime +
+ ", handleMessage=" + handleMessage +
+ ", handlePhotos=" + handlePhotos +
+ ", flow=" + flow +
+ ", recordId=" + recordId +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java
new file mode 100644
index 0000000..88b0b26
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmRecords.java
@@ -0,0 +1,108 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ *
+ *
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_records")
+public class AlarmRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 设备ID
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 闸井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 告警类型
+ */
+ @TableField("ALARM_TYPE")
+ private String alarmType;
+ /**
+ * 告警内容
+ */
+ @TableField("ALARM_CONTENT")
+ private String alarmContent;
+ /**
+ * 告警数值
+ */
+ @TableField("ALARM_VALUE")
+ private String alarmValue;
+ /**
+ * 告警等级
+ */
+ @TableField("ALARM_LEVEL")
+ private Integer alarmLevel;
+ /**
+ * 告警详情
+ */
+ @TableField("ALARM_MSG")
+ private String alarmMessage;
+ /**
+ * 告警时间
+ */
+ @TableField("ALARM_TIME")
+ private Date alarmTime;
+ /**
+ * 告警状态
+ */
+ @TableField("STATUS")
+ private String status;
+ /**
+ * 工单编号
+ */
+ @TableField("JOB_ID")
+ private Long jobId;
+
+ @TableField(exist = false)
+ private Integer jobStatus;
+
+ @Override
+ public String toString() {
+ return "AlarmRecords{" +
+ "id=" + id +
+ ", deviceId=" + deviceId +
+ ", devcode=" + devcode +
+ ", wellCode=" + wellCode +
+ ", alarmType=" + alarmType +
+ ", alarmContent=" + alarmContent +
+ ", alarmValue=" + alarmValue +
+ ", alarmLevel=" + alarmLevel +
+ ", alarmMessage=" + alarmMessage +
+ ", alarmTime=" + alarmTime +
+ ", status=" + status +
+ ", jobId=" + jobId +
+ ", jobStatus=" + jobStatus +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/DataGasDector.java b/src/main/java/com/casic/entity/DataGasDector.java
new file mode 100644
index 0000000..537789a
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasDector.java
@@ -0,0 +1,42 @@
+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 DataGasDector {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ private String devcode;
+ private String wellCode;
+ private String strength;
+
+ private String descn;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
deleted file mode 100644
index c43ccdf..0000000
--- a/src/main/java/com/casic/entity/DataGasReport.java
+++ /dev/null
@@ -1,69 +0,0 @@
-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/entity/DeviceSatatus.java b/src/main/java/com/casic/entity/DeviceSatatus.java
new file mode 100644
index 0000000..bab7903
--- /dev/null
+++ b/src/main/java/com/casic/entity/DeviceSatatus.java
@@ -0,0 +1,19 @@
+package com.casic.entity;
+
+import lombok.Data;
+
+/**
+ * 不使用了
+ *
+ */
+@Data
+public class DeviceSatatus {
+ private String deviceId;
+ private String cell;
+ private String cellTs;
+ private String onlineState;
+ private String onlineTs;
+ private String lastDataId;
+ private String lastDataJson;
+ private String lastDataTs;
+}
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh
new file mode 100644
index 0000000..e14c4c7
--- /dev/null
+++ b/src/main/build/bin/start.sh
@@ -0,0 +1,2 @@
+java -jar ./lib/${project.build.finalName}.jar
+
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
index c55e37d..0887f1f 100644
--- a/src/main/java/com/casic/CasicApplication.java
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -3,8 +3,6 @@
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;
/**
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
index e5351c9..be0de6b 100644
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -1,14 +1,19 @@
package com.casic.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.casic.model.DataReportParam;
-import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
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;
+import java.util.Map;
+
+@Slf4j
@RequestMapping("/data")
@RestController
public class DeviceDataController {
@@ -19,19 +24,16 @@
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 String gasReceiver(@RequestBody Map map) {
+// log.info("---------"+JSON.toJSONString(map));
+// return "200";
+// }
@PostMapping("/gas/receiver")
- public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
- return dataService.heartBeatSave(heartbeatParam);
+ public ResponseData gasReceiver(@RequestBody DataReportParam dataReportParam) {
+ log.info("---------"+JSON.toJSONString(dataReportParam));
+ return dataService.gasReceiver(dataReportParam);
}
}
diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java
new file mode 100644
index 0000000..e5e9c8d
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmJobMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmJob;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface AlarmJobMapper extends BaseMapper {
+
+ @Select("SELECT MAX(jobcode) " +
+ "FROM alarm_job " +
+ "WHERE JOBCODE like '${jobcode}%'")
+ String getJobCodeMaxSerial(@Param("jobcode") String jobcode);
+
+}
diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
new file mode 100644
index 0000000..8da7dcb
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmRecords;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface AlarmRecordsMapper extends BaseMapper {
+
+
+ @Select("SELECT JOB_ID AS \"jobId\"\n " +
+ "FROM alarm_records\n " +
+ "WHERE DEVCODE = #{devcode}\n " +
+ "AND ALARM_CONTENT = #{MsgContent}\n " +
+ "AND STATUS='1'\n " +
+ "AND JOB_ID>0 ")
+ String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+
+ @Update(" UPDATE alarm_records\n" +
+ " SET STATUS='0'\n" +
+ " WHERE DEVCODE = #{devcode}\n" +
+ " AND ALARM_CONTENT = #{MsgContent}\n" +
+ " AND STATUS='1'")
+ Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
index 47e7cce..33ce14a 100644
--- a/src/main/java/com/casic/dao/DataGasMapper.java
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -1,9 +1,48 @@
package com.casic.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.casic.entity.DataGasReport;
+import com.casic.entity.DataGasDector;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+import java.util.Map;
@Mapper
-public interface DataGasMapper extends BaseMapper {
+public interface DataGasMapper extends BaseMapper {
+
+ @Select("select bd.id as \"deviceId\",bwi.WELL_CODE AS \"wellCode\" " +
+ "from bus_device_well bdw " +
+ "join (select id from bus_device where devcode=#{devcode}) bd ON bd.id=bdw.device_id " +
+ "join bus_well_info bwi ON bwi.id=bdw.well_id ")
+ Map getWellCode(@Param("devcode") String devcode);
+
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{onlineState} " +
+ "WHERE devcode=#{devcode} ")
+ void setOfflineByDevcode(@Param("devcode") String devcode,
+ @Param("onlineState") Integer onlineState);
+
+ @Select("SELECT level,high_value " +
+ "FROM alarm_level " +
+ "WHERE device_type=#{deviceType} ")
+ List> getAlarmLevelList(@Param("deviceType") Long deviceType);
+
+ @Select("SELECT devcode " +
+ "FROM data_gas_dector " +
+ "WHERE devcode=#{devcode} " +
+ "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+
+ "ORDER BY logtime DESC " +
+ "LIMIT 1")
+ String getLastData(@Param("minutes") String minutes,
+ @Param("devcode") String devcode);
+
+ @Select("SELECT alarm_content" +
+ "FROM BASE_alarm_content_type" +
+ "where device_type=#{deviceType}")
+ String getGasMsgContent(@Param("deviceType")Long deviceType);
+
+
}
diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
new file mode 100644
index 0000000..5131821
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
@@ -0,0 +1,59 @@
+package com.casic.dao.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmJobMapper;
+import com.casic.entity.AlarmJob;
+import org.springframework.stereotype.Component;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Component
+public class AlarmJobDao {
+
+ private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ private static Snowflake snowflake = new Snowflake(0, 2);
+// private static final Sn
+
+ @Resource
+ private AlarmJobMapper alarmJobMapper;
+
+ public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) {
+ AlarmJob alarmJob = new AlarmJob();
+ alarmJob.setId(snowflake.nextId());
+ alarmJob.setDevcode(devCode);
+ alarmJob.setWellCode(wellCode);
+ alarmJob.setJobStatus("0");
+ alarmJob.setCreateTime(new Date());
+ alarmJob.setJobcode(this.produceJobCode(devTypeName));
+ alarmJob.setJobType(jobType);
+ alarmJobMapper.insert(alarmJob);
+ return alarmJob;
+ }
+
+ /**
+ * 前缀+日期+4位流水号
+ *
+ * @param devTypeName
+ * @return
+ */
+ private String produceJobCode(String devTypeName) {
+ String pre = devTypeName;
+ String dataStr = sdf6.format(new Date());
+ String fix = this.getJobCodeMaxSerial(pre + dataStr);
+ return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001";
+ }
+
+
+ private String getJobCodeMaxSerial(String jobcode) {
+ String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode);
+ String fix = "";
+ if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) {
+ fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4);
+ }
+ return fix;
+ }
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
deleted file mode 100644
index c797e55..0000000
--- a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
+++ /dev/null
@@ -1,68 +0,0 @@
-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/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java
new file mode 100644
index 0000000..8a0f764
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmJob.java
@@ -0,0 +1,165 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 报警工单表
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_job")
+public class AlarmJob extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 工单编号
+ */
+ @TableField("JOBCODE")
+ private String jobcode;
+ /**
+ * 工单类型
+ */
+ @TableField("JOG_TYPE")
+ private String jobType;
+ /**
+ * 井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 工单创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+ /**
+ * 工单状态(0待处理,1待确认,2处理中,3完成)
+ */
+ @TableField("JOB_STATUS")
+ private String jobStatus;
+ /**
+ * 接单人员
+ */
+ @TableField("GET_JOB_PERSON")
+ private Long getJobPerson;
+ /**
+ * 接单时间
+ */
+ @TableField("GET_JOB_TIME")
+ private Date getJobTime;
+ /**
+ * 应接单时间
+ */
+ @TableField("SHOULD_GET_TIME")
+ private Date shouldGetTime;
+ /**
+ * 第一现场情况
+ */
+ @TableField("FIRST_STATE")
+ private String firstState;
+ /**
+ * 第一现场照片
+ */
+ @TableField("FIRST_STATE_PHOTOS")
+ private String firstStatePhotos;
+ /**
+ * 确认人员
+ */
+ @TableField("CONFIRM_JOB_PERSON")
+ private Long confirmJobPerson;
+ /**
+ * 确认时间
+ */
+ @TableField("CONFRIM_JOB_TIME")
+ private Date confrimJobTime;
+ /**
+ * 处理人员
+ */
+ @TableField("HANDLE_JOB_Person")
+ private Long handleJobPerson;
+ /**
+ * 处理时间
+ */
+ @TableField("HANDLE_JOB_TIME")
+ private Date handleJobTime;
+ /**
+ * 维护情况记录
+ */
+ @TableField("HANDLE_MESSAGE")
+ private String handleMessage;
+ /**
+ * 维护图片
+ */
+ @TableField("HANDLE_PHOTOS")
+ private String handlePhotos;
+ /**
+ * 工单流转记录
+ */
+ @TableField("FLOW")
+ private String flow;
+
+ @TableField("JOB_BELONG_TO")
+ private Long jobBelongTo;
+
+ @TableField("JOB_FLAG_DELAY")
+ private String jobFlagDelay;
+
+ @TableField("JOB_FLAG_1")
+ private String jobFlag1;
+
+ @TableField(exist = false)
+ private String alarmValue;
+
+ @TableField(exist = false)
+ private String alarmContentName;
+
+ @TableField(exist = false)
+ private Integer recordId;
+
+ @Override
+ public String toString() {
+ return "AlarmJob{" +
+ "id=" + id +
+ ", jobcode=" + jobcode +
+ ", jogType=" + jobType +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", createTime=" + createTime +
+ ", jobStatus=" + jobStatus +
+ ", getJobPerson=" + getJobPerson +
+ ", getJobTime=" + getJobTime +
+ ", firstState=" + firstState +
+ ", firstStatePhotos=" + firstStatePhotos +
+ ", confirmJobPerson=" + confirmJobPerson +
+ ", confrimJobTime=" + confrimJobTime +
+ ", handleJobPerson=" + handleJobPerson +
+ ", handleJobTime=" + handleJobTime +
+ ", handleMessage=" + handleMessage +
+ ", handlePhotos=" + handlePhotos +
+ ", flow=" + flow +
+ ", recordId=" + recordId +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java
new file mode 100644
index 0000000..88b0b26
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmRecords.java
@@ -0,0 +1,108 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ *
+ *
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_records")
+public class AlarmRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 设备ID
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 闸井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 告警类型
+ */
+ @TableField("ALARM_TYPE")
+ private String alarmType;
+ /**
+ * 告警内容
+ */
+ @TableField("ALARM_CONTENT")
+ private String alarmContent;
+ /**
+ * 告警数值
+ */
+ @TableField("ALARM_VALUE")
+ private String alarmValue;
+ /**
+ * 告警等级
+ */
+ @TableField("ALARM_LEVEL")
+ private Integer alarmLevel;
+ /**
+ * 告警详情
+ */
+ @TableField("ALARM_MSG")
+ private String alarmMessage;
+ /**
+ * 告警时间
+ */
+ @TableField("ALARM_TIME")
+ private Date alarmTime;
+ /**
+ * 告警状态
+ */
+ @TableField("STATUS")
+ private String status;
+ /**
+ * 工单编号
+ */
+ @TableField("JOB_ID")
+ private Long jobId;
+
+ @TableField(exist = false)
+ private Integer jobStatus;
+
+ @Override
+ public String toString() {
+ return "AlarmRecords{" +
+ "id=" + id +
+ ", deviceId=" + deviceId +
+ ", devcode=" + devcode +
+ ", wellCode=" + wellCode +
+ ", alarmType=" + alarmType +
+ ", alarmContent=" + alarmContent +
+ ", alarmValue=" + alarmValue +
+ ", alarmLevel=" + alarmLevel +
+ ", alarmMessage=" + alarmMessage +
+ ", alarmTime=" + alarmTime +
+ ", status=" + status +
+ ", jobId=" + jobId +
+ ", jobStatus=" + jobStatus +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/DataGasDector.java b/src/main/java/com/casic/entity/DataGasDector.java
new file mode 100644
index 0000000..537789a
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasDector.java
@@ -0,0 +1,42 @@
+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 DataGasDector {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ private String devcode;
+ private String wellCode;
+ private String strength;
+
+ private String descn;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
deleted file mode 100644
index c43ccdf..0000000
--- a/src/main/java/com/casic/entity/DataGasReport.java
+++ /dev/null
@@ -1,69 +0,0 @@
-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/entity/DeviceSatatus.java b/src/main/java/com/casic/entity/DeviceSatatus.java
new file mode 100644
index 0000000..bab7903
--- /dev/null
+++ b/src/main/java/com/casic/entity/DeviceSatatus.java
@@ -0,0 +1,19 @@
+package com.casic.entity;
+
+import lombok.Data;
+
+/**
+ * 不使用了
+ *
+ */
+@Data
+public class DeviceSatatus {
+ private String deviceId;
+ private String cell;
+ private String cellTs;
+ private String onlineState;
+ private String onlineTs;
+ private String lastDataId;
+ private String lastDataJson;
+ private String lastDataTs;
+}
diff --git a/src/main/java/com/casic/model/DataContentParam.java b/src/main/java/com/casic/model/DataContentParam.java
new file mode 100644
index 0000000..46d298a
--- /dev/null
+++ b/src/main/java/com/casic/model/DataContentParam.java
@@ -0,0 +1,19 @@
+package com.casic.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DataContentParam {
+ private String msg_type;
+ private String error_val;
+ private String ch_cnt;
+ private String erro_cnt;
+ private String alarm_low_cnt;
+ private String alarm_high_cnt;
+ private String offline_cnt;
+ private List rtd_val;
+ private List adc_val;
+ private List status_val;
+}
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh
new file mode 100644
index 0000000..e14c4c7
--- /dev/null
+++ b/src/main/build/bin/start.sh
@@ -0,0 +1,2 @@
+java -jar ./lib/${project.build.finalName}.jar
+
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
index c55e37d..0887f1f 100644
--- a/src/main/java/com/casic/CasicApplication.java
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -3,8 +3,6 @@
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;
/**
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
index e5351c9..be0de6b 100644
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -1,14 +1,19 @@
package com.casic.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.casic.model.DataReportParam;
-import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
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;
+import java.util.Map;
+
+@Slf4j
@RequestMapping("/data")
@RestController
public class DeviceDataController {
@@ -19,19 +24,16 @@
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 String gasReceiver(@RequestBody Map map) {
+// log.info("---------"+JSON.toJSONString(map));
+// return "200";
+// }
@PostMapping("/gas/receiver")
- public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
- return dataService.heartBeatSave(heartbeatParam);
+ public ResponseData gasReceiver(@RequestBody DataReportParam dataReportParam) {
+ log.info("---------"+JSON.toJSONString(dataReportParam));
+ return dataService.gasReceiver(dataReportParam);
}
}
diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java
new file mode 100644
index 0000000..e5e9c8d
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmJobMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmJob;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface AlarmJobMapper extends BaseMapper {
+
+ @Select("SELECT MAX(jobcode) " +
+ "FROM alarm_job " +
+ "WHERE JOBCODE like '${jobcode}%'")
+ String getJobCodeMaxSerial(@Param("jobcode") String jobcode);
+
+}
diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
new file mode 100644
index 0000000..8da7dcb
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmRecords;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface AlarmRecordsMapper extends BaseMapper {
+
+
+ @Select("SELECT JOB_ID AS \"jobId\"\n " +
+ "FROM alarm_records\n " +
+ "WHERE DEVCODE = #{devcode}\n " +
+ "AND ALARM_CONTENT = #{MsgContent}\n " +
+ "AND STATUS='1'\n " +
+ "AND JOB_ID>0 ")
+ String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+
+ @Update(" UPDATE alarm_records\n" +
+ " SET STATUS='0'\n" +
+ " WHERE DEVCODE = #{devcode}\n" +
+ " AND ALARM_CONTENT = #{MsgContent}\n" +
+ " AND STATUS='1'")
+ Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
index 47e7cce..33ce14a 100644
--- a/src/main/java/com/casic/dao/DataGasMapper.java
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -1,9 +1,48 @@
package com.casic.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.casic.entity.DataGasReport;
+import com.casic.entity.DataGasDector;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+import java.util.Map;
@Mapper
-public interface DataGasMapper extends BaseMapper {
+public interface DataGasMapper extends BaseMapper {
+
+ @Select("select bd.id as \"deviceId\",bwi.WELL_CODE AS \"wellCode\" " +
+ "from bus_device_well bdw " +
+ "join (select id from bus_device where devcode=#{devcode}) bd ON bd.id=bdw.device_id " +
+ "join bus_well_info bwi ON bwi.id=bdw.well_id ")
+ Map getWellCode(@Param("devcode") String devcode);
+
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{onlineState} " +
+ "WHERE devcode=#{devcode} ")
+ void setOfflineByDevcode(@Param("devcode") String devcode,
+ @Param("onlineState") Integer onlineState);
+
+ @Select("SELECT level,high_value " +
+ "FROM alarm_level " +
+ "WHERE device_type=#{deviceType} ")
+ List> getAlarmLevelList(@Param("deviceType") Long deviceType);
+
+ @Select("SELECT devcode " +
+ "FROM data_gas_dector " +
+ "WHERE devcode=#{devcode} " +
+ "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+
+ "ORDER BY logtime DESC " +
+ "LIMIT 1")
+ String getLastData(@Param("minutes") String minutes,
+ @Param("devcode") String devcode);
+
+ @Select("SELECT alarm_content" +
+ "FROM BASE_alarm_content_type" +
+ "where device_type=#{deviceType}")
+ String getGasMsgContent(@Param("deviceType")Long deviceType);
+
+
}
diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
new file mode 100644
index 0000000..5131821
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
@@ -0,0 +1,59 @@
+package com.casic.dao.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmJobMapper;
+import com.casic.entity.AlarmJob;
+import org.springframework.stereotype.Component;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Component
+public class AlarmJobDao {
+
+ private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ private static Snowflake snowflake = new Snowflake(0, 2);
+// private static final Sn
+
+ @Resource
+ private AlarmJobMapper alarmJobMapper;
+
+ public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) {
+ AlarmJob alarmJob = new AlarmJob();
+ alarmJob.setId(snowflake.nextId());
+ alarmJob.setDevcode(devCode);
+ alarmJob.setWellCode(wellCode);
+ alarmJob.setJobStatus("0");
+ alarmJob.setCreateTime(new Date());
+ alarmJob.setJobcode(this.produceJobCode(devTypeName));
+ alarmJob.setJobType(jobType);
+ alarmJobMapper.insert(alarmJob);
+ return alarmJob;
+ }
+
+ /**
+ * 前缀+日期+4位流水号
+ *
+ * @param devTypeName
+ * @return
+ */
+ private String produceJobCode(String devTypeName) {
+ String pre = devTypeName;
+ String dataStr = sdf6.format(new Date());
+ String fix = this.getJobCodeMaxSerial(pre + dataStr);
+ return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001";
+ }
+
+
+ private String getJobCodeMaxSerial(String jobcode) {
+ String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode);
+ String fix = "";
+ if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) {
+ fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4);
+ }
+ return fix;
+ }
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
deleted file mode 100644
index c797e55..0000000
--- a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
+++ /dev/null
@@ -1,68 +0,0 @@
-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/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java
new file mode 100644
index 0000000..8a0f764
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmJob.java
@@ -0,0 +1,165 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 报警工单表
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_job")
+public class AlarmJob extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 工单编号
+ */
+ @TableField("JOBCODE")
+ private String jobcode;
+ /**
+ * 工单类型
+ */
+ @TableField("JOG_TYPE")
+ private String jobType;
+ /**
+ * 井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 工单创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+ /**
+ * 工单状态(0待处理,1待确认,2处理中,3完成)
+ */
+ @TableField("JOB_STATUS")
+ private String jobStatus;
+ /**
+ * 接单人员
+ */
+ @TableField("GET_JOB_PERSON")
+ private Long getJobPerson;
+ /**
+ * 接单时间
+ */
+ @TableField("GET_JOB_TIME")
+ private Date getJobTime;
+ /**
+ * 应接单时间
+ */
+ @TableField("SHOULD_GET_TIME")
+ private Date shouldGetTime;
+ /**
+ * 第一现场情况
+ */
+ @TableField("FIRST_STATE")
+ private String firstState;
+ /**
+ * 第一现场照片
+ */
+ @TableField("FIRST_STATE_PHOTOS")
+ private String firstStatePhotos;
+ /**
+ * 确认人员
+ */
+ @TableField("CONFIRM_JOB_PERSON")
+ private Long confirmJobPerson;
+ /**
+ * 确认时间
+ */
+ @TableField("CONFRIM_JOB_TIME")
+ private Date confrimJobTime;
+ /**
+ * 处理人员
+ */
+ @TableField("HANDLE_JOB_Person")
+ private Long handleJobPerson;
+ /**
+ * 处理时间
+ */
+ @TableField("HANDLE_JOB_TIME")
+ private Date handleJobTime;
+ /**
+ * 维护情况记录
+ */
+ @TableField("HANDLE_MESSAGE")
+ private String handleMessage;
+ /**
+ * 维护图片
+ */
+ @TableField("HANDLE_PHOTOS")
+ private String handlePhotos;
+ /**
+ * 工单流转记录
+ */
+ @TableField("FLOW")
+ private String flow;
+
+ @TableField("JOB_BELONG_TO")
+ private Long jobBelongTo;
+
+ @TableField("JOB_FLAG_DELAY")
+ private String jobFlagDelay;
+
+ @TableField("JOB_FLAG_1")
+ private String jobFlag1;
+
+ @TableField(exist = false)
+ private String alarmValue;
+
+ @TableField(exist = false)
+ private String alarmContentName;
+
+ @TableField(exist = false)
+ private Integer recordId;
+
+ @Override
+ public String toString() {
+ return "AlarmJob{" +
+ "id=" + id +
+ ", jobcode=" + jobcode +
+ ", jogType=" + jobType +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", createTime=" + createTime +
+ ", jobStatus=" + jobStatus +
+ ", getJobPerson=" + getJobPerson +
+ ", getJobTime=" + getJobTime +
+ ", firstState=" + firstState +
+ ", firstStatePhotos=" + firstStatePhotos +
+ ", confirmJobPerson=" + confirmJobPerson +
+ ", confrimJobTime=" + confrimJobTime +
+ ", handleJobPerson=" + handleJobPerson +
+ ", handleJobTime=" + handleJobTime +
+ ", handleMessage=" + handleMessage +
+ ", handlePhotos=" + handlePhotos +
+ ", flow=" + flow +
+ ", recordId=" + recordId +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java
new file mode 100644
index 0000000..88b0b26
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmRecords.java
@@ -0,0 +1,108 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ *
+ *
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_records")
+public class AlarmRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 设备ID
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 闸井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 告警类型
+ */
+ @TableField("ALARM_TYPE")
+ private String alarmType;
+ /**
+ * 告警内容
+ */
+ @TableField("ALARM_CONTENT")
+ private String alarmContent;
+ /**
+ * 告警数值
+ */
+ @TableField("ALARM_VALUE")
+ private String alarmValue;
+ /**
+ * 告警等级
+ */
+ @TableField("ALARM_LEVEL")
+ private Integer alarmLevel;
+ /**
+ * 告警详情
+ */
+ @TableField("ALARM_MSG")
+ private String alarmMessage;
+ /**
+ * 告警时间
+ */
+ @TableField("ALARM_TIME")
+ private Date alarmTime;
+ /**
+ * 告警状态
+ */
+ @TableField("STATUS")
+ private String status;
+ /**
+ * 工单编号
+ */
+ @TableField("JOB_ID")
+ private Long jobId;
+
+ @TableField(exist = false)
+ private Integer jobStatus;
+
+ @Override
+ public String toString() {
+ return "AlarmRecords{" +
+ "id=" + id +
+ ", deviceId=" + deviceId +
+ ", devcode=" + devcode +
+ ", wellCode=" + wellCode +
+ ", alarmType=" + alarmType +
+ ", alarmContent=" + alarmContent +
+ ", alarmValue=" + alarmValue +
+ ", alarmLevel=" + alarmLevel +
+ ", alarmMessage=" + alarmMessage +
+ ", alarmTime=" + alarmTime +
+ ", status=" + status +
+ ", jobId=" + jobId +
+ ", jobStatus=" + jobStatus +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/DataGasDector.java b/src/main/java/com/casic/entity/DataGasDector.java
new file mode 100644
index 0000000..537789a
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasDector.java
@@ -0,0 +1,42 @@
+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 DataGasDector {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ private String devcode;
+ private String wellCode;
+ private String strength;
+
+ private String descn;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
deleted file mode 100644
index c43ccdf..0000000
--- a/src/main/java/com/casic/entity/DataGasReport.java
+++ /dev/null
@@ -1,69 +0,0 @@
-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/entity/DeviceSatatus.java b/src/main/java/com/casic/entity/DeviceSatatus.java
new file mode 100644
index 0000000..bab7903
--- /dev/null
+++ b/src/main/java/com/casic/entity/DeviceSatatus.java
@@ -0,0 +1,19 @@
+package com.casic.entity;
+
+import lombok.Data;
+
+/**
+ * 不使用了
+ *
+ */
+@Data
+public class DeviceSatatus {
+ private String deviceId;
+ private String cell;
+ private String cellTs;
+ private String onlineState;
+ private String onlineTs;
+ private String lastDataId;
+ private String lastDataJson;
+ private String lastDataTs;
+}
diff --git a/src/main/java/com/casic/model/DataContentParam.java b/src/main/java/com/casic/model/DataContentParam.java
new file mode 100644
index 0000000..46d298a
--- /dev/null
+++ b/src/main/java/com/casic/model/DataContentParam.java
@@ -0,0 +1,19 @@
+package com.casic.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DataContentParam {
+ private String msg_type;
+ private String error_val;
+ private String ch_cnt;
+ private String erro_cnt;
+ private String alarm_low_cnt;
+ private String alarm_high_cnt;
+ private String offline_cnt;
+ private List rtd_val;
+ private List adc_val;
+ private List status_val;
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/model/DataReportParam.java b/src/main/java/com/casic/model/DataReportParam.java
index 082814c..754f330 100644
--- a/src/main/java/com/casic/model/DataReportParam.java
+++ b/src/main/java/com/casic/model/DataReportParam.java
@@ -11,25 +11,12 @@
*/
@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;
+ private String iotId;
+ private String requestId;
+ private Object checkFailedData;
+ private String productKey;
+ private String gmtCreate;
+ private String deviceName;
+ private Object items;
}
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh
new file mode 100644
index 0000000..e14c4c7
--- /dev/null
+++ b/src/main/build/bin/start.sh
@@ -0,0 +1,2 @@
+java -jar ./lib/${project.build.finalName}.jar
+
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
index c55e37d..0887f1f 100644
--- a/src/main/java/com/casic/CasicApplication.java
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -3,8 +3,6 @@
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;
/**
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
index e5351c9..be0de6b 100644
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -1,14 +1,19 @@
package com.casic.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.casic.model.DataReportParam;
-import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
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;
+import java.util.Map;
+
+@Slf4j
@RequestMapping("/data")
@RestController
public class DeviceDataController {
@@ -19,19 +24,16 @@
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 String gasReceiver(@RequestBody Map map) {
+// log.info("---------"+JSON.toJSONString(map));
+// return "200";
+// }
@PostMapping("/gas/receiver")
- public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
- return dataService.heartBeatSave(heartbeatParam);
+ public ResponseData gasReceiver(@RequestBody DataReportParam dataReportParam) {
+ log.info("---------"+JSON.toJSONString(dataReportParam));
+ return dataService.gasReceiver(dataReportParam);
}
}
diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java
new file mode 100644
index 0000000..e5e9c8d
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmJobMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmJob;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface AlarmJobMapper extends BaseMapper {
+
+ @Select("SELECT MAX(jobcode) " +
+ "FROM alarm_job " +
+ "WHERE JOBCODE like '${jobcode}%'")
+ String getJobCodeMaxSerial(@Param("jobcode") String jobcode);
+
+}
diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
new file mode 100644
index 0000000..8da7dcb
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmRecords;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface AlarmRecordsMapper extends BaseMapper {
+
+
+ @Select("SELECT JOB_ID AS \"jobId\"\n " +
+ "FROM alarm_records\n " +
+ "WHERE DEVCODE = #{devcode}\n " +
+ "AND ALARM_CONTENT = #{MsgContent}\n " +
+ "AND STATUS='1'\n " +
+ "AND JOB_ID>0 ")
+ String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+
+ @Update(" UPDATE alarm_records\n" +
+ " SET STATUS='0'\n" +
+ " WHERE DEVCODE = #{devcode}\n" +
+ " AND ALARM_CONTENT = #{MsgContent}\n" +
+ " AND STATUS='1'")
+ Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
index 47e7cce..33ce14a 100644
--- a/src/main/java/com/casic/dao/DataGasMapper.java
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -1,9 +1,48 @@
package com.casic.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.casic.entity.DataGasReport;
+import com.casic.entity.DataGasDector;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+import java.util.Map;
@Mapper
-public interface DataGasMapper extends BaseMapper {
+public interface DataGasMapper extends BaseMapper {
+
+ @Select("select bd.id as \"deviceId\",bwi.WELL_CODE AS \"wellCode\" " +
+ "from bus_device_well bdw " +
+ "join (select id from bus_device where devcode=#{devcode}) bd ON bd.id=bdw.device_id " +
+ "join bus_well_info bwi ON bwi.id=bdw.well_id ")
+ Map getWellCode(@Param("devcode") String devcode);
+
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{onlineState} " +
+ "WHERE devcode=#{devcode} ")
+ void setOfflineByDevcode(@Param("devcode") String devcode,
+ @Param("onlineState") Integer onlineState);
+
+ @Select("SELECT level,high_value " +
+ "FROM alarm_level " +
+ "WHERE device_type=#{deviceType} ")
+ List> getAlarmLevelList(@Param("deviceType") Long deviceType);
+
+ @Select("SELECT devcode " +
+ "FROM data_gas_dector " +
+ "WHERE devcode=#{devcode} " +
+ "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+
+ "ORDER BY logtime DESC " +
+ "LIMIT 1")
+ String getLastData(@Param("minutes") String minutes,
+ @Param("devcode") String devcode);
+
+ @Select("SELECT alarm_content" +
+ "FROM BASE_alarm_content_type" +
+ "where device_type=#{deviceType}")
+ String getGasMsgContent(@Param("deviceType")Long deviceType);
+
+
}
diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
new file mode 100644
index 0000000..5131821
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
@@ -0,0 +1,59 @@
+package com.casic.dao.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmJobMapper;
+import com.casic.entity.AlarmJob;
+import org.springframework.stereotype.Component;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Component
+public class AlarmJobDao {
+
+ private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ private static Snowflake snowflake = new Snowflake(0, 2);
+// private static final Sn
+
+ @Resource
+ private AlarmJobMapper alarmJobMapper;
+
+ public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) {
+ AlarmJob alarmJob = new AlarmJob();
+ alarmJob.setId(snowflake.nextId());
+ alarmJob.setDevcode(devCode);
+ alarmJob.setWellCode(wellCode);
+ alarmJob.setJobStatus("0");
+ alarmJob.setCreateTime(new Date());
+ alarmJob.setJobcode(this.produceJobCode(devTypeName));
+ alarmJob.setJobType(jobType);
+ alarmJobMapper.insert(alarmJob);
+ return alarmJob;
+ }
+
+ /**
+ * 前缀+日期+4位流水号
+ *
+ * @param devTypeName
+ * @return
+ */
+ private String produceJobCode(String devTypeName) {
+ String pre = devTypeName;
+ String dataStr = sdf6.format(new Date());
+ String fix = this.getJobCodeMaxSerial(pre + dataStr);
+ return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001";
+ }
+
+
+ private String getJobCodeMaxSerial(String jobcode) {
+ String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode);
+ String fix = "";
+ if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) {
+ fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4);
+ }
+ return fix;
+ }
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
deleted file mode 100644
index c797e55..0000000
--- a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
+++ /dev/null
@@ -1,68 +0,0 @@
-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/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java
new file mode 100644
index 0000000..8a0f764
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmJob.java
@@ -0,0 +1,165 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 报警工单表
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_job")
+public class AlarmJob extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 工单编号
+ */
+ @TableField("JOBCODE")
+ private String jobcode;
+ /**
+ * 工单类型
+ */
+ @TableField("JOG_TYPE")
+ private String jobType;
+ /**
+ * 井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 工单创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+ /**
+ * 工单状态(0待处理,1待确认,2处理中,3完成)
+ */
+ @TableField("JOB_STATUS")
+ private String jobStatus;
+ /**
+ * 接单人员
+ */
+ @TableField("GET_JOB_PERSON")
+ private Long getJobPerson;
+ /**
+ * 接单时间
+ */
+ @TableField("GET_JOB_TIME")
+ private Date getJobTime;
+ /**
+ * 应接单时间
+ */
+ @TableField("SHOULD_GET_TIME")
+ private Date shouldGetTime;
+ /**
+ * 第一现场情况
+ */
+ @TableField("FIRST_STATE")
+ private String firstState;
+ /**
+ * 第一现场照片
+ */
+ @TableField("FIRST_STATE_PHOTOS")
+ private String firstStatePhotos;
+ /**
+ * 确认人员
+ */
+ @TableField("CONFIRM_JOB_PERSON")
+ private Long confirmJobPerson;
+ /**
+ * 确认时间
+ */
+ @TableField("CONFRIM_JOB_TIME")
+ private Date confrimJobTime;
+ /**
+ * 处理人员
+ */
+ @TableField("HANDLE_JOB_Person")
+ private Long handleJobPerson;
+ /**
+ * 处理时间
+ */
+ @TableField("HANDLE_JOB_TIME")
+ private Date handleJobTime;
+ /**
+ * 维护情况记录
+ */
+ @TableField("HANDLE_MESSAGE")
+ private String handleMessage;
+ /**
+ * 维护图片
+ */
+ @TableField("HANDLE_PHOTOS")
+ private String handlePhotos;
+ /**
+ * 工单流转记录
+ */
+ @TableField("FLOW")
+ private String flow;
+
+ @TableField("JOB_BELONG_TO")
+ private Long jobBelongTo;
+
+ @TableField("JOB_FLAG_DELAY")
+ private String jobFlagDelay;
+
+ @TableField("JOB_FLAG_1")
+ private String jobFlag1;
+
+ @TableField(exist = false)
+ private String alarmValue;
+
+ @TableField(exist = false)
+ private String alarmContentName;
+
+ @TableField(exist = false)
+ private Integer recordId;
+
+ @Override
+ public String toString() {
+ return "AlarmJob{" +
+ "id=" + id +
+ ", jobcode=" + jobcode +
+ ", jogType=" + jobType +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", createTime=" + createTime +
+ ", jobStatus=" + jobStatus +
+ ", getJobPerson=" + getJobPerson +
+ ", getJobTime=" + getJobTime +
+ ", firstState=" + firstState +
+ ", firstStatePhotos=" + firstStatePhotos +
+ ", confirmJobPerson=" + confirmJobPerson +
+ ", confrimJobTime=" + confrimJobTime +
+ ", handleJobPerson=" + handleJobPerson +
+ ", handleJobTime=" + handleJobTime +
+ ", handleMessage=" + handleMessage +
+ ", handlePhotos=" + handlePhotos +
+ ", flow=" + flow +
+ ", recordId=" + recordId +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java
new file mode 100644
index 0000000..88b0b26
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmRecords.java
@@ -0,0 +1,108 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ *
+ *
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_records")
+public class AlarmRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 设备ID
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 闸井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 告警类型
+ */
+ @TableField("ALARM_TYPE")
+ private String alarmType;
+ /**
+ * 告警内容
+ */
+ @TableField("ALARM_CONTENT")
+ private String alarmContent;
+ /**
+ * 告警数值
+ */
+ @TableField("ALARM_VALUE")
+ private String alarmValue;
+ /**
+ * 告警等级
+ */
+ @TableField("ALARM_LEVEL")
+ private Integer alarmLevel;
+ /**
+ * 告警详情
+ */
+ @TableField("ALARM_MSG")
+ private String alarmMessage;
+ /**
+ * 告警时间
+ */
+ @TableField("ALARM_TIME")
+ private Date alarmTime;
+ /**
+ * 告警状态
+ */
+ @TableField("STATUS")
+ private String status;
+ /**
+ * 工单编号
+ */
+ @TableField("JOB_ID")
+ private Long jobId;
+
+ @TableField(exist = false)
+ private Integer jobStatus;
+
+ @Override
+ public String toString() {
+ return "AlarmRecords{" +
+ "id=" + id +
+ ", deviceId=" + deviceId +
+ ", devcode=" + devcode +
+ ", wellCode=" + wellCode +
+ ", alarmType=" + alarmType +
+ ", alarmContent=" + alarmContent +
+ ", alarmValue=" + alarmValue +
+ ", alarmLevel=" + alarmLevel +
+ ", alarmMessage=" + alarmMessage +
+ ", alarmTime=" + alarmTime +
+ ", status=" + status +
+ ", jobId=" + jobId +
+ ", jobStatus=" + jobStatus +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/DataGasDector.java b/src/main/java/com/casic/entity/DataGasDector.java
new file mode 100644
index 0000000..537789a
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasDector.java
@@ -0,0 +1,42 @@
+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 DataGasDector {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ private String devcode;
+ private String wellCode;
+ private String strength;
+
+ private String descn;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
deleted file mode 100644
index c43ccdf..0000000
--- a/src/main/java/com/casic/entity/DataGasReport.java
+++ /dev/null
@@ -1,69 +0,0 @@
-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/entity/DeviceSatatus.java b/src/main/java/com/casic/entity/DeviceSatatus.java
new file mode 100644
index 0000000..bab7903
--- /dev/null
+++ b/src/main/java/com/casic/entity/DeviceSatatus.java
@@ -0,0 +1,19 @@
+package com.casic.entity;
+
+import lombok.Data;
+
+/**
+ * 不使用了
+ *
+ */
+@Data
+public class DeviceSatatus {
+ private String deviceId;
+ private String cell;
+ private String cellTs;
+ private String onlineState;
+ private String onlineTs;
+ private String lastDataId;
+ private String lastDataJson;
+ private String lastDataTs;
+}
diff --git a/src/main/java/com/casic/model/DataContentParam.java b/src/main/java/com/casic/model/DataContentParam.java
new file mode 100644
index 0000000..46d298a
--- /dev/null
+++ b/src/main/java/com/casic/model/DataContentParam.java
@@ -0,0 +1,19 @@
+package com.casic.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DataContentParam {
+ private String msg_type;
+ private String error_val;
+ private String ch_cnt;
+ private String erro_cnt;
+ private String alarm_low_cnt;
+ private String alarm_high_cnt;
+ private String offline_cnt;
+ private List rtd_val;
+ private List adc_val;
+ private List status_val;
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/model/DataReportParam.java b/src/main/java/com/casic/model/DataReportParam.java
index 082814c..754f330 100644
--- a/src/main/java/com/casic/model/DataReportParam.java
+++ b/src/main/java/com/casic/model/DataReportParam.java
@@ -11,25 +11,12 @@
*/
@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;
+ private String iotId;
+ private String requestId;
+ private Object checkFailedData;
+ private String productKey;
+ private String gmtCreate;
+ private String deviceName;
+ private Object items;
}
diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java
index d883fe4..457d710 100644
--- a/src/main/java/com/casic/service/DeviceDataService.java
+++ b/src/main/java/com/casic/service/DeviceDataService.java
@@ -3,25 +3,18 @@
import com.casic.model.DataReportParam;
import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
+import org.springframework.web.bind.annotation.RequestBody;
/**
* @author cz
* @date 2022
*/
public interface DeviceDataService {
-
/**
*
* @param dataReportParam
* @return
*/
- ResponseData DeviceDataCommit(DataReportParam dataReportParam);
-
- /**
- *
- * @param heartbeatParam
- * @return
- */
- ResponseData heartBeatSave(HeartbeatParam heartbeatParam);
+ ResponseData gasReceiver(DataReportParam dataReportParam);
}
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh
new file mode 100644
index 0000000..e14c4c7
--- /dev/null
+++ b/src/main/build/bin/start.sh
@@ -0,0 +1,2 @@
+java -jar ./lib/${project.build.finalName}.jar
+
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
index c55e37d..0887f1f 100644
--- a/src/main/java/com/casic/CasicApplication.java
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -3,8 +3,6 @@
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;
/**
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
index e5351c9..be0de6b 100644
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -1,14 +1,19 @@
package com.casic.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.casic.model.DataReportParam;
-import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
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;
+import java.util.Map;
+
+@Slf4j
@RequestMapping("/data")
@RestController
public class DeviceDataController {
@@ -19,19 +24,16 @@
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 String gasReceiver(@RequestBody Map map) {
+// log.info("---------"+JSON.toJSONString(map));
+// return "200";
+// }
@PostMapping("/gas/receiver")
- public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
- return dataService.heartBeatSave(heartbeatParam);
+ public ResponseData gasReceiver(@RequestBody DataReportParam dataReportParam) {
+ log.info("---------"+JSON.toJSONString(dataReportParam));
+ return dataService.gasReceiver(dataReportParam);
}
}
diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java
new file mode 100644
index 0000000..e5e9c8d
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmJobMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmJob;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface AlarmJobMapper extends BaseMapper {
+
+ @Select("SELECT MAX(jobcode) " +
+ "FROM alarm_job " +
+ "WHERE JOBCODE like '${jobcode}%'")
+ String getJobCodeMaxSerial(@Param("jobcode") String jobcode);
+
+}
diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
new file mode 100644
index 0000000..8da7dcb
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmRecords;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface AlarmRecordsMapper extends BaseMapper {
+
+
+ @Select("SELECT JOB_ID AS \"jobId\"\n " +
+ "FROM alarm_records\n " +
+ "WHERE DEVCODE = #{devcode}\n " +
+ "AND ALARM_CONTENT = #{MsgContent}\n " +
+ "AND STATUS='1'\n " +
+ "AND JOB_ID>0 ")
+ String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+
+ @Update(" UPDATE alarm_records\n" +
+ " SET STATUS='0'\n" +
+ " WHERE DEVCODE = #{devcode}\n" +
+ " AND ALARM_CONTENT = #{MsgContent}\n" +
+ " AND STATUS='1'")
+ Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
index 47e7cce..33ce14a 100644
--- a/src/main/java/com/casic/dao/DataGasMapper.java
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -1,9 +1,48 @@
package com.casic.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.casic.entity.DataGasReport;
+import com.casic.entity.DataGasDector;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+import java.util.Map;
@Mapper
-public interface DataGasMapper extends BaseMapper {
+public interface DataGasMapper extends BaseMapper {
+
+ @Select("select bd.id as \"deviceId\",bwi.WELL_CODE AS \"wellCode\" " +
+ "from bus_device_well bdw " +
+ "join (select id from bus_device where devcode=#{devcode}) bd ON bd.id=bdw.device_id " +
+ "join bus_well_info bwi ON bwi.id=bdw.well_id ")
+ Map getWellCode(@Param("devcode") String devcode);
+
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{onlineState} " +
+ "WHERE devcode=#{devcode} ")
+ void setOfflineByDevcode(@Param("devcode") String devcode,
+ @Param("onlineState") Integer onlineState);
+
+ @Select("SELECT level,high_value " +
+ "FROM alarm_level " +
+ "WHERE device_type=#{deviceType} ")
+ List> getAlarmLevelList(@Param("deviceType") Long deviceType);
+
+ @Select("SELECT devcode " +
+ "FROM data_gas_dector " +
+ "WHERE devcode=#{devcode} " +
+ "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+
+ "ORDER BY logtime DESC " +
+ "LIMIT 1")
+ String getLastData(@Param("minutes") String minutes,
+ @Param("devcode") String devcode);
+
+ @Select("SELECT alarm_content" +
+ "FROM BASE_alarm_content_type" +
+ "where device_type=#{deviceType}")
+ String getGasMsgContent(@Param("deviceType")Long deviceType);
+
+
}
diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
new file mode 100644
index 0000000..5131821
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
@@ -0,0 +1,59 @@
+package com.casic.dao.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmJobMapper;
+import com.casic.entity.AlarmJob;
+import org.springframework.stereotype.Component;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Component
+public class AlarmJobDao {
+
+ private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ private static Snowflake snowflake = new Snowflake(0, 2);
+// private static final Sn
+
+ @Resource
+ private AlarmJobMapper alarmJobMapper;
+
+ public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) {
+ AlarmJob alarmJob = new AlarmJob();
+ alarmJob.setId(snowflake.nextId());
+ alarmJob.setDevcode(devCode);
+ alarmJob.setWellCode(wellCode);
+ alarmJob.setJobStatus("0");
+ alarmJob.setCreateTime(new Date());
+ alarmJob.setJobcode(this.produceJobCode(devTypeName));
+ alarmJob.setJobType(jobType);
+ alarmJobMapper.insert(alarmJob);
+ return alarmJob;
+ }
+
+ /**
+ * 前缀+日期+4位流水号
+ *
+ * @param devTypeName
+ * @return
+ */
+ private String produceJobCode(String devTypeName) {
+ String pre = devTypeName;
+ String dataStr = sdf6.format(new Date());
+ String fix = this.getJobCodeMaxSerial(pre + dataStr);
+ return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001";
+ }
+
+
+ private String getJobCodeMaxSerial(String jobcode) {
+ String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode);
+ String fix = "";
+ if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) {
+ fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4);
+ }
+ return fix;
+ }
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
deleted file mode 100644
index c797e55..0000000
--- a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
+++ /dev/null
@@ -1,68 +0,0 @@
-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/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java
new file mode 100644
index 0000000..8a0f764
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmJob.java
@@ -0,0 +1,165 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 报警工单表
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_job")
+public class AlarmJob extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 工单编号
+ */
+ @TableField("JOBCODE")
+ private String jobcode;
+ /**
+ * 工单类型
+ */
+ @TableField("JOG_TYPE")
+ private String jobType;
+ /**
+ * 井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 工单创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+ /**
+ * 工单状态(0待处理,1待确认,2处理中,3完成)
+ */
+ @TableField("JOB_STATUS")
+ private String jobStatus;
+ /**
+ * 接单人员
+ */
+ @TableField("GET_JOB_PERSON")
+ private Long getJobPerson;
+ /**
+ * 接单时间
+ */
+ @TableField("GET_JOB_TIME")
+ private Date getJobTime;
+ /**
+ * 应接单时间
+ */
+ @TableField("SHOULD_GET_TIME")
+ private Date shouldGetTime;
+ /**
+ * 第一现场情况
+ */
+ @TableField("FIRST_STATE")
+ private String firstState;
+ /**
+ * 第一现场照片
+ */
+ @TableField("FIRST_STATE_PHOTOS")
+ private String firstStatePhotos;
+ /**
+ * 确认人员
+ */
+ @TableField("CONFIRM_JOB_PERSON")
+ private Long confirmJobPerson;
+ /**
+ * 确认时间
+ */
+ @TableField("CONFRIM_JOB_TIME")
+ private Date confrimJobTime;
+ /**
+ * 处理人员
+ */
+ @TableField("HANDLE_JOB_Person")
+ private Long handleJobPerson;
+ /**
+ * 处理时间
+ */
+ @TableField("HANDLE_JOB_TIME")
+ private Date handleJobTime;
+ /**
+ * 维护情况记录
+ */
+ @TableField("HANDLE_MESSAGE")
+ private String handleMessage;
+ /**
+ * 维护图片
+ */
+ @TableField("HANDLE_PHOTOS")
+ private String handlePhotos;
+ /**
+ * 工单流转记录
+ */
+ @TableField("FLOW")
+ private String flow;
+
+ @TableField("JOB_BELONG_TO")
+ private Long jobBelongTo;
+
+ @TableField("JOB_FLAG_DELAY")
+ private String jobFlagDelay;
+
+ @TableField("JOB_FLAG_1")
+ private String jobFlag1;
+
+ @TableField(exist = false)
+ private String alarmValue;
+
+ @TableField(exist = false)
+ private String alarmContentName;
+
+ @TableField(exist = false)
+ private Integer recordId;
+
+ @Override
+ public String toString() {
+ return "AlarmJob{" +
+ "id=" + id +
+ ", jobcode=" + jobcode +
+ ", jogType=" + jobType +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", createTime=" + createTime +
+ ", jobStatus=" + jobStatus +
+ ", getJobPerson=" + getJobPerson +
+ ", getJobTime=" + getJobTime +
+ ", firstState=" + firstState +
+ ", firstStatePhotos=" + firstStatePhotos +
+ ", confirmJobPerson=" + confirmJobPerson +
+ ", confrimJobTime=" + confrimJobTime +
+ ", handleJobPerson=" + handleJobPerson +
+ ", handleJobTime=" + handleJobTime +
+ ", handleMessage=" + handleMessage +
+ ", handlePhotos=" + handlePhotos +
+ ", flow=" + flow +
+ ", recordId=" + recordId +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java
new file mode 100644
index 0000000..88b0b26
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmRecords.java
@@ -0,0 +1,108 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ *
+ *
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_records")
+public class AlarmRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 设备ID
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 闸井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 告警类型
+ */
+ @TableField("ALARM_TYPE")
+ private String alarmType;
+ /**
+ * 告警内容
+ */
+ @TableField("ALARM_CONTENT")
+ private String alarmContent;
+ /**
+ * 告警数值
+ */
+ @TableField("ALARM_VALUE")
+ private String alarmValue;
+ /**
+ * 告警等级
+ */
+ @TableField("ALARM_LEVEL")
+ private Integer alarmLevel;
+ /**
+ * 告警详情
+ */
+ @TableField("ALARM_MSG")
+ private String alarmMessage;
+ /**
+ * 告警时间
+ */
+ @TableField("ALARM_TIME")
+ private Date alarmTime;
+ /**
+ * 告警状态
+ */
+ @TableField("STATUS")
+ private String status;
+ /**
+ * 工单编号
+ */
+ @TableField("JOB_ID")
+ private Long jobId;
+
+ @TableField(exist = false)
+ private Integer jobStatus;
+
+ @Override
+ public String toString() {
+ return "AlarmRecords{" +
+ "id=" + id +
+ ", deviceId=" + deviceId +
+ ", devcode=" + devcode +
+ ", wellCode=" + wellCode +
+ ", alarmType=" + alarmType +
+ ", alarmContent=" + alarmContent +
+ ", alarmValue=" + alarmValue +
+ ", alarmLevel=" + alarmLevel +
+ ", alarmMessage=" + alarmMessage +
+ ", alarmTime=" + alarmTime +
+ ", status=" + status +
+ ", jobId=" + jobId +
+ ", jobStatus=" + jobStatus +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/DataGasDector.java b/src/main/java/com/casic/entity/DataGasDector.java
new file mode 100644
index 0000000..537789a
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasDector.java
@@ -0,0 +1,42 @@
+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 DataGasDector {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ private String devcode;
+ private String wellCode;
+ private String strength;
+
+ private String descn;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
deleted file mode 100644
index c43ccdf..0000000
--- a/src/main/java/com/casic/entity/DataGasReport.java
+++ /dev/null
@@ -1,69 +0,0 @@
-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/entity/DeviceSatatus.java b/src/main/java/com/casic/entity/DeviceSatatus.java
new file mode 100644
index 0000000..bab7903
--- /dev/null
+++ b/src/main/java/com/casic/entity/DeviceSatatus.java
@@ -0,0 +1,19 @@
+package com.casic.entity;
+
+import lombok.Data;
+
+/**
+ * 不使用了
+ *
+ */
+@Data
+public class DeviceSatatus {
+ private String deviceId;
+ private String cell;
+ private String cellTs;
+ private String onlineState;
+ private String onlineTs;
+ private String lastDataId;
+ private String lastDataJson;
+ private String lastDataTs;
+}
diff --git a/src/main/java/com/casic/model/DataContentParam.java b/src/main/java/com/casic/model/DataContentParam.java
new file mode 100644
index 0000000..46d298a
--- /dev/null
+++ b/src/main/java/com/casic/model/DataContentParam.java
@@ -0,0 +1,19 @@
+package com.casic.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DataContentParam {
+ private String msg_type;
+ private String error_val;
+ private String ch_cnt;
+ private String erro_cnt;
+ private String alarm_low_cnt;
+ private String alarm_high_cnt;
+ private String offline_cnt;
+ private List rtd_val;
+ private List adc_val;
+ private List status_val;
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/model/DataReportParam.java b/src/main/java/com/casic/model/DataReportParam.java
index 082814c..754f330 100644
--- a/src/main/java/com/casic/model/DataReportParam.java
+++ b/src/main/java/com/casic/model/DataReportParam.java
@@ -11,25 +11,12 @@
*/
@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;
+ private String iotId;
+ private String requestId;
+ private Object checkFailedData;
+ private String productKey;
+ private String gmtCreate;
+ private String deviceName;
+ private Object items;
}
diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java
index d883fe4..457d710 100644
--- a/src/main/java/com/casic/service/DeviceDataService.java
+++ b/src/main/java/com/casic/service/DeviceDataService.java
@@ -3,25 +3,18 @@
import com.casic.model.DataReportParam;
import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
+import org.springframework.web.bind.annotation.RequestBody;
/**
* @author cz
* @date 2022
*/
public interface DeviceDataService {
-
/**
*
* @param dataReportParam
* @return
*/
- ResponseData DeviceDataCommit(DataReportParam dataReportParam);
-
- /**
- *
- * @param heartbeatParam
- * @return
- */
- ResponseData heartBeatSave(HeartbeatParam heartbeatParam);
+ ResponseData gasReceiver(DataReportParam dataReportParam);
}
diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
index 93f0685..e473f0c 100644
--- a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
+++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
@@ -1,58 +1,49 @@
package com.casic.service.impl;
-import com.casic.dao.impl.DeviceDataMapper;
+import com.alibaba.druid.util.StringUtils;
+import com.alibaba.fastjson.JSON;
import com.casic.model.*;
import com.casic.service.DeviceDataService;
+import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import java.util.Map;
+
/**
* @author cz
- * @date 2022-6-20
+ * @date 2022-9-26
*/
@Slf4j
@Service
public class DeviceDataServiceImpl implements DeviceDataService {
- @Autowired
- DeviceDataMapper deviceDataMapper;
+ private final NormalDataProcessor normalDataProcessor;
- /**
- * @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;
+ public DeviceDataServiceImpl(NormalDataProcessor normalDataProcessor) {
+ this.normalDataProcessor = normalDataProcessor;
}
- /**
- * @param heartbeatParam
- * @return
- */
- public ResponseData heartBeatSave(HeartbeatParam heartbeatParam) {
+ public ResponseData gasReceiver(DataReportParam dataReportParam) {
ResponseData responseData = new ResponseData();
try {
- deviceDataMapper.editDeviceData(heartbeatParam);
+ Map> updDataMap = new ObjectMapper().convertValue(dataReportParam.getItems(), Map.class);
+ DataContentParam dataContentParam = JSON.parseObject(updDataMap.get("updData").get("value"), DataContentParam.class);
+ Long uptime = Long.valueOf(String.valueOf(updDataMap.get("updData").get("time")));
+ if (StringUtils.isEmpty(dataReportParam.getDeviceName())) {
+ responseData.setCode(200);
+ responseData.setMessage("没有设备编号");
+ return responseData;
+ }
+ normalDataProcessor.normalDataProvider(dataContentParam, uptime, dataReportParam.getDeviceName());
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);
+ log.error("主题:设备数据上报出现错误,异常信息为{}", sqlex);
}
return responseData;
}
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh
new file mode 100644
index 0000000..e14c4c7
--- /dev/null
+++ b/src/main/build/bin/start.sh
@@ -0,0 +1,2 @@
+java -jar ./lib/${project.build.finalName}.jar
+
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
index c55e37d..0887f1f 100644
--- a/src/main/java/com/casic/CasicApplication.java
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -3,8 +3,6 @@
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;
/**
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
index e5351c9..be0de6b 100644
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -1,14 +1,19 @@
package com.casic.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.casic.model.DataReportParam;
-import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
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;
+import java.util.Map;
+
+@Slf4j
@RequestMapping("/data")
@RestController
public class DeviceDataController {
@@ -19,19 +24,16 @@
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 String gasReceiver(@RequestBody Map map) {
+// log.info("---------"+JSON.toJSONString(map));
+// return "200";
+// }
@PostMapping("/gas/receiver")
- public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
- return dataService.heartBeatSave(heartbeatParam);
+ public ResponseData gasReceiver(@RequestBody DataReportParam dataReportParam) {
+ log.info("---------"+JSON.toJSONString(dataReportParam));
+ return dataService.gasReceiver(dataReportParam);
}
}
diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java
new file mode 100644
index 0000000..e5e9c8d
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmJobMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmJob;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface AlarmJobMapper extends BaseMapper {
+
+ @Select("SELECT MAX(jobcode) " +
+ "FROM alarm_job " +
+ "WHERE JOBCODE like '${jobcode}%'")
+ String getJobCodeMaxSerial(@Param("jobcode") String jobcode);
+
+}
diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
new file mode 100644
index 0000000..8da7dcb
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmRecords;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface AlarmRecordsMapper extends BaseMapper {
+
+
+ @Select("SELECT JOB_ID AS \"jobId\"\n " +
+ "FROM alarm_records\n " +
+ "WHERE DEVCODE = #{devcode}\n " +
+ "AND ALARM_CONTENT = #{MsgContent}\n " +
+ "AND STATUS='1'\n " +
+ "AND JOB_ID>0 ")
+ String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+
+ @Update(" UPDATE alarm_records\n" +
+ " SET STATUS='0'\n" +
+ " WHERE DEVCODE = #{devcode}\n" +
+ " AND ALARM_CONTENT = #{MsgContent}\n" +
+ " AND STATUS='1'")
+ Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
index 47e7cce..33ce14a 100644
--- a/src/main/java/com/casic/dao/DataGasMapper.java
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -1,9 +1,48 @@
package com.casic.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.casic.entity.DataGasReport;
+import com.casic.entity.DataGasDector;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+import java.util.Map;
@Mapper
-public interface DataGasMapper extends BaseMapper {
+public interface DataGasMapper extends BaseMapper {
+
+ @Select("select bd.id as \"deviceId\",bwi.WELL_CODE AS \"wellCode\" " +
+ "from bus_device_well bdw " +
+ "join (select id from bus_device where devcode=#{devcode}) bd ON bd.id=bdw.device_id " +
+ "join bus_well_info bwi ON bwi.id=bdw.well_id ")
+ Map getWellCode(@Param("devcode") String devcode);
+
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{onlineState} " +
+ "WHERE devcode=#{devcode} ")
+ void setOfflineByDevcode(@Param("devcode") String devcode,
+ @Param("onlineState") Integer onlineState);
+
+ @Select("SELECT level,high_value " +
+ "FROM alarm_level " +
+ "WHERE device_type=#{deviceType} ")
+ List> getAlarmLevelList(@Param("deviceType") Long deviceType);
+
+ @Select("SELECT devcode " +
+ "FROM data_gas_dector " +
+ "WHERE devcode=#{devcode} " +
+ "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+
+ "ORDER BY logtime DESC " +
+ "LIMIT 1")
+ String getLastData(@Param("minutes") String minutes,
+ @Param("devcode") String devcode);
+
+ @Select("SELECT alarm_content" +
+ "FROM BASE_alarm_content_type" +
+ "where device_type=#{deviceType}")
+ String getGasMsgContent(@Param("deviceType")Long deviceType);
+
+
}
diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
new file mode 100644
index 0000000..5131821
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
@@ -0,0 +1,59 @@
+package com.casic.dao.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmJobMapper;
+import com.casic.entity.AlarmJob;
+import org.springframework.stereotype.Component;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Component
+public class AlarmJobDao {
+
+ private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ private static Snowflake snowflake = new Snowflake(0, 2);
+// private static final Sn
+
+ @Resource
+ private AlarmJobMapper alarmJobMapper;
+
+ public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) {
+ AlarmJob alarmJob = new AlarmJob();
+ alarmJob.setId(snowflake.nextId());
+ alarmJob.setDevcode(devCode);
+ alarmJob.setWellCode(wellCode);
+ alarmJob.setJobStatus("0");
+ alarmJob.setCreateTime(new Date());
+ alarmJob.setJobcode(this.produceJobCode(devTypeName));
+ alarmJob.setJobType(jobType);
+ alarmJobMapper.insert(alarmJob);
+ return alarmJob;
+ }
+
+ /**
+ * 前缀+日期+4位流水号
+ *
+ * @param devTypeName
+ * @return
+ */
+ private String produceJobCode(String devTypeName) {
+ String pre = devTypeName;
+ String dataStr = sdf6.format(new Date());
+ String fix = this.getJobCodeMaxSerial(pre + dataStr);
+ return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001";
+ }
+
+
+ private String getJobCodeMaxSerial(String jobcode) {
+ String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode);
+ String fix = "";
+ if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) {
+ fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4);
+ }
+ return fix;
+ }
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
deleted file mode 100644
index c797e55..0000000
--- a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
+++ /dev/null
@@ -1,68 +0,0 @@
-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/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java
new file mode 100644
index 0000000..8a0f764
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmJob.java
@@ -0,0 +1,165 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 报警工单表
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_job")
+public class AlarmJob extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 工单编号
+ */
+ @TableField("JOBCODE")
+ private String jobcode;
+ /**
+ * 工单类型
+ */
+ @TableField("JOG_TYPE")
+ private String jobType;
+ /**
+ * 井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 工单创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+ /**
+ * 工单状态(0待处理,1待确认,2处理中,3完成)
+ */
+ @TableField("JOB_STATUS")
+ private String jobStatus;
+ /**
+ * 接单人员
+ */
+ @TableField("GET_JOB_PERSON")
+ private Long getJobPerson;
+ /**
+ * 接单时间
+ */
+ @TableField("GET_JOB_TIME")
+ private Date getJobTime;
+ /**
+ * 应接单时间
+ */
+ @TableField("SHOULD_GET_TIME")
+ private Date shouldGetTime;
+ /**
+ * 第一现场情况
+ */
+ @TableField("FIRST_STATE")
+ private String firstState;
+ /**
+ * 第一现场照片
+ */
+ @TableField("FIRST_STATE_PHOTOS")
+ private String firstStatePhotos;
+ /**
+ * 确认人员
+ */
+ @TableField("CONFIRM_JOB_PERSON")
+ private Long confirmJobPerson;
+ /**
+ * 确认时间
+ */
+ @TableField("CONFRIM_JOB_TIME")
+ private Date confrimJobTime;
+ /**
+ * 处理人员
+ */
+ @TableField("HANDLE_JOB_Person")
+ private Long handleJobPerson;
+ /**
+ * 处理时间
+ */
+ @TableField("HANDLE_JOB_TIME")
+ private Date handleJobTime;
+ /**
+ * 维护情况记录
+ */
+ @TableField("HANDLE_MESSAGE")
+ private String handleMessage;
+ /**
+ * 维护图片
+ */
+ @TableField("HANDLE_PHOTOS")
+ private String handlePhotos;
+ /**
+ * 工单流转记录
+ */
+ @TableField("FLOW")
+ private String flow;
+
+ @TableField("JOB_BELONG_TO")
+ private Long jobBelongTo;
+
+ @TableField("JOB_FLAG_DELAY")
+ private String jobFlagDelay;
+
+ @TableField("JOB_FLAG_1")
+ private String jobFlag1;
+
+ @TableField(exist = false)
+ private String alarmValue;
+
+ @TableField(exist = false)
+ private String alarmContentName;
+
+ @TableField(exist = false)
+ private Integer recordId;
+
+ @Override
+ public String toString() {
+ return "AlarmJob{" +
+ "id=" + id +
+ ", jobcode=" + jobcode +
+ ", jogType=" + jobType +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", createTime=" + createTime +
+ ", jobStatus=" + jobStatus +
+ ", getJobPerson=" + getJobPerson +
+ ", getJobTime=" + getJobTime +
+ ", firstState=" + firstState +
+ ", firstStatePhotos=" + firstStatePhotos +
+ ", confirmJobPerson=" + confirmJobPerson +
+ ", confrimJobTime=" + confrimJobTime +
+ ", handleJobPerson=" + handleJobPerson +
+ ", handleJobTime=" + handleJobTime +
+ ", handleMessage=" + handleMessage +
+ ", handlePhotos=" + handlePhotos +
+ ", flow=" + flow +
+ ", recordId=" + recordId +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java
new file mode 100644
index 0000000..88b0b26
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmRecords.java
@@ -0,0 +1,108 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ *
+ *
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_records")
+public class AlarmRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 设备ID
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 闸井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 告警类型
+ */
+ @TableField("ALARM_TYPE")
+ private String alarmType;
+ /**
+ * 告警内容
+ */
+ @TableField("ALARM_CONTENT")
+ private String alarmContent;
+ /**
+ * 告警数值
+ */
+ @TableField("ALARM_VALUE")
+ private String alarmValue;
+ /**
+ * 告警等级
+ */
+ @TableField("ALARM_LEVEL")
+ private Integer alarmLevel;
+ /**
+ * 告警详情
+ */
+ @TableField("ALARM_MSG")
+ private String alarmMessage;
+ /**
+ * 告警时间
+ */
+ @TableField("ALARM_TIME")
+ private Date alarmTime;
+ /**
+ * 告警状态
+ */
+ @TableField("STATUS")
+ private String status;
+ /**
+ * 工单编号
+ */
+ @TableField("JOB_ID")
+ private Long jobId;
+
+ @TableField(exist = false)
+ private Integer jobStatus;
+
+ @Override
+ public String toString() {
+ return "AlarmRecords{" +
+ "id=" + id +
+ ", deviceId=" + deviceId +
+ ", devcode=" + devcode +
+ ", wellCode=" + wellCode +
+ ", alarmType=" + alarmType +
+ ", alarmContent=" + alarmContent +
+ ", alarmValue=" + alarmValue +
+ ", alarmLevel=" + alarmLevel +
+ ", alarmMessage=" + alarmMessage +
+ ", alarmTime=" + alarmTime +
+ ", status=" + status +
+ ", jobId=" + jobId +
+ ", jobStatus=" + jobStatus +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/DataGasDector.java b/src/main/java/com/casic/entity/DataGasDector.java
new file mode 100644
index 0000000..537789a
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasDector.java
@@ -0,0 +1,42 @@
+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 DataGasDector {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ private String devcode;
+ private String wellCode;
+ private String strength;
+
+ private String descn;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
deleted file mode 100644
index c43ccdf..0000000
--- a/src/main/java/com/casic/entity/DataGasReport.java
+++ /dev/null
@@ -1,69 +0,0 @@
-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/entity/DeviceSatatus.java b/src/main/java/com/casic/entity/DeviceSatatus.java
new file mode 100644
index 0000000..bab7903
--- /dev/null
+++ b/src/main/java/com/casic/entity/DeviceSatatus.java
@@ -0,0 +1,19 @@
+package com.casic.entity;
+
+import lombok.Data;
+
+/**
+ * 不使用了
+ *
+ */
+@Data
+public class DeviceSatatus {
+ private String deviceId;
+ private String cell;
+ private String cellTs;
+ private String onlineState;
+ private String onlineTs;
+ private String lastDataId;
+ private String lastDataJson;
+ private String lastDataTs;
+}
diff --git a/src/main/java/com/casic/model/DataContentParam.java b/src/main/java/com/casic/model/DataContentParam.java
new file mode 100644
index 0000000..46d298a
--- /dev/null
+++ b/src/main/java/com/casic/model/DataContentParam.java
@@ -0,0 +1,19 @@
+package com.casic.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DataContentParam {
+ private String msg_type;
+ private String error_val;
+ private String ch_cnt;
+ private String erro_cnt;
+ private String alarm_low_cnt;
+ private String alarm_high_cnt;
+ private String offline_cnt;
+ private List rtd_val;
+ private List adc_val;
+ private List status_val;
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/model/DataReportParam.java b/src/main/java/com/casic/model/DataReportParam.java
index 082814c..754f330 100644
--- a/src/main/java/com/casic/model/DataReportParam.java
+++ b/src/main/java/com/casic/model/DataReportParam.java
@@ -11,25 +11,12 @@
*/
@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;
+ private String iotId;
+ private String requestId;
+ private Object checkFailedData;
+ private String productKey;
+ private String gmtCreate;
+ private String deviceName;
+ private Object items;
}
diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java
index d883fe4..457d710 100644
--- a/src/main/java/com/casic/service/DeviceDataService.java
+++ b/src/main/java/com/casic/service/DeviceDataService.java
@@ -3,25 +3,18 @@
import com.casic.model.DataReportParam;
import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
+import org.springframework.web.bind.annotation.RequestBody;
/**
* @author cz
* @date 2022
*/
public interface DeviceDataService {
-
/**
*
* @param dataReportParam
* @return
*/
- ResponseData DeviceDataCommit(DataReportParam dataReportParam);
-
- /**
- *
- * @param heartbeatParam
- * @return
- */
- ResponseData heartBeatSave(HeartbeatParam heartbeatParam);
+ ResponseData gasReceiver(DataReportParam dataReportParam);
}
diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
index 93f0685..e473f0c 100644
--- a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
+++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
@@ -1,58 +1,49 @@
package com.casic.service.impl;
-import com.casic.dao.impl.DeviceDataMapper;
+import com.alibaba.druid.util.StringUtils;
+import com.alibaba.fastjson.JSON;
import com.casic.model.*;
import com.casic.service.DeviceDataService;
+import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import java.util.Map;
+
/**
* @author cz
- * @date 2022-6-20
+ * @date 2022-9-26
*/
@Slf4j
@Service
public class DeviceDataServiceImpl implements DeviceDataService {
- @Autowired
- DeviceDataMapper deviceDataMapper;
+ private final NormalDataProcessor normalDataProcessor;
- /**
- * @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;
+ public DeviceDataServiceImpl(NormalDataProcessor normalDataProcessor) {
+ this.normalDataProcessor = normalDataProcessor;
}
- /**
- * @param heartbeatParam
- * @return
- */
- public ResponseData heartBeatSave(HeartbeatParam heartbeatParam) {
+ public ResponseData gasReceiver(DataReportParam dataReportParam) {
ResponseData responseData = new ResponseData();
try {
- deviceDataMapper.editDeviceData(heartbeatParam);
+ Map> updDataMap = new ObjectMapper().convertValue(dataReportParam.getItems(), Map.class);
+ DataContentParam dataContentParam = JSON.parseObject(updDataMap.get("updData").get("value"), DataContentParam.class);
+ Long uptime = Long.valueOf(String.valueOf(updDataMap.get("updData").get("time")));
+ if (StringUtils.isEmpty(dataReportParam.getDeviceName())) {
+ responseData.setCode(200);
+ responseData.setMessage("没有设备编号");
+ return responseData;
+ }
+ normalDataProcessor.normalDataProvider(dataContentParam, uptime, dataReportParam.getDeviceName());
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);
+ log.error("主题:设备数据上报出现错误,异常信息为{}", sqlex);
}
return responseData;
}
diff --git a/src/main/java/com/casic/service/impl/NormalDataProcessor.java b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
new file mode 100644
index 0000000..3f7630a
--- /dev/null
+++ b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
@@ -0,0 +1,164 @@
+package com.casic.service.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmRecordsMapper;
+import com.casic.dao.DataGasMapper;
+import com.casic.dao.impl.AlarmJobDao;
+import com.casic.entity.AlarmJob;
+import com.casic.entity.AlarmRecords;
+import com.casic.entity.DataGasDector;
+import com.casic.model.DataContentParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Component
+public class NormalDataProcessor {
+
+ public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ @Value("${casic.device.gas-dector.type}")
+ private Long deviceType;
+ @Value("${casic.device.gas-dector.minutes}")
+ private String minutes;
+ @Value("${casic.device.gas-dector.enable-local}")
+ private Boolean enableLocal;
+ @Resource
+ private DataGasMapper dataGasMapper;
+ @Autowired
+ private AlarmJobDao alarmJobDao;
+ @Resource
+ private AlarmRecordsMapper alarmRecordsMapper;
+ private static Snowflake snowflake = new Snowflake(0, 2);
+
+ public void normalDataProvider(DataContentParam dataReportParam, Long timeStamp, String devcode) {
+ Map gasMap = dataGasMapper.getWellCode(devcode);
+ if (ObjectUtils.isEmpty(gasMap)) {
+ log.info("没有该设备编号录入" + devcode);
+ if (enableLocal) {
+ return;
+ }
+ }
+ Boolean updateFlag = false;
+ if (ObjectUtils.isEmpty(dataGasMapper.getLastData(minutes, devcode))) {
+ updateFlag = this.saveNormalData(dataReportParam, timeStamp, devcode, gasMap);
+ }
+ this.dataTaskJudge(dataReportParam, devcode, timeStamp, gasMap, updateFlag);
+ return;
+ }
+
+ /**
+ * 自定义时间存库
+ *
+ * @param dataReportParam
+ * @param timeStamp
+ * @param devcode
+ * @param gasMap
+ */
+ private Boolean saveNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap) {
+ Boolean updateFlag = false;
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ List dataReportFilter = dataReportParam.getRtd_val().stream().filter(
+ data -> {
+ return data != -1;
+ }
+ ).collect(Collectors.toList());
+ if (dataReportFilter.size() > 0 && dataReportFilter.get(dataReportFilter.size() - 1) != 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 1);
+ updateFlag = true;
+ } else if (dataReportFilter.get(dataReportFilter.size() - 1) == 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 0);
+ }
+ dataReportFilter.forEach(
+ data -> {
+ if (data != 65535) {
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+ }
+ );
+ return updateFlag;
+ }
+
+ /**
+ * 报警就存库
+ *
+ * @param dataReportParam
+ * @param devcode
+ * @param timeStamp
+ * @param gasMap
+ */
+ private void dataTaskJudge(DataContentParam dataReportParam, String devcode, Long timeStamp, Map gasMap, Boolean updateFlag) {
+ List> alarmLevelList = dataGasMapper.getAlarmLevelList(deviceType);
+ String wellCode = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "";
+ Long deviceId = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? Long.valueOf(String.valueOf(gasMap.get("deviceId"))) : -1;
+ final String gasMsgContent=dataGasMapper.getGasMsgContent(deviceType);
+ dataReportParam.getRtd_val().stream().filter(
+ dataReport -> {
+ return dataReport != -1 && dataReport != 65535;
+ }
+ ).forEach(
+ dataReport -> {
+ for (Map alarmLevelMap : alarmLevelList) {
+ if (dataReport > Float.valueOf(String.valueOf(alarmLevelMap.get("high_value")))) {
+ AlarmRecords alarmRecord = new AlarmRecords();
+ alarmRecord.setId(snowflake.nextId());
+ alarmRecord.setDeviceId(deviceId);
+ alarmRecord.setDevcode(devcode);
+ alarmRecord.setWellCode(wellCode);
+ alarmRecord.setAlarmType("1"); // 业务报警
+ alarmRecord.setAlarmContent("燃气报警");
+ alarmRecord.setAlarmValue(String.valueOf(dataReport));
+ alarmRecord.setAlarmTime(new Date());
+ alarmRecord.setStatus("1");
+ alarmRecord.setAlarmLevel(Integer.valueOf(alarmLevelMap.get("level").toString()));
+ alarmRecord.setAlarmMessage("燃气报警");
+ String jobId = alarmRecordsMapper.isOldAlarmRecord(devcode, "燃气报警");
+ // 超出报警阈值 生成一条报警消息
+ if (!StringUtils.isEmpty(jobId)) {
+ alarmRecordsMapper.updateOldAlarmRecord(devcode, "燃气报警");
+ alarmRecord.setJobId(Long.valueOf(jobId));
+ } else {
+ AlarmJob alarmJob = alarmJobDao.saveData(devcode, wellCode, "RQZD", "1");
+ alarmRecord.setJobId(alarmJob.getId());
+ }
+ alarmRecordsMapper.insert(alarmRecord);
+ if (!updateFlag) {
+ alarmNormalData(dataReportParam, timeStamp, devcode, gasMap, dataReport);
+ }
+ break;
+ }
+ }
+ }
+ );
+ }
+
+ private void alarmNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap, Integer data) {
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+
+}
+
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh
new file mode 100644
index 0000000..e14c4c7
--- /dev/null
+++ b/src/main/build/bin/start.sh
@@ -0,0 +1,2 @@
+java -jar ./lib/${project.build.finalName}.jar
+
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
index c55e37d..0887f1f 100644
--- a/src/main/java/com/casic/CasicApplication.java
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -3,8 +3,6 @@
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;
/**
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
index e5351c9..be0de6b 100644
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -1,14 +1,19 @@
package com.casic.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.casic.model.DataReportParam;
-import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
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;
+import java.util.Map;
+
+@Slf4j
@RequestMapping("/data")
@RestController
public class DeviceDataController {
@@ -19,19 +24,16 @@
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 String gasReceiver(@RequestBody Map map) {
+// log.info("---------"+JSON.toJSONString(map));
+// return "200";
+// }
@PostMapping("/gas/receiver")
- public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
- return dataService.heartBeatSave(heartbeatParam);
+ public ResponseData gasReceiver(@RequestBody DataReportParam dataReportParam) {
+ log.info("---------"+JSON.toJSONString(dataReportParam));
+ return dataService.gasReceiver(dataReportParam);
}
}
diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java
new file mode 100644
index 0000000..e5e9c8d
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmJobMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmJob;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface AlarmJobMapper extends BaseMapper {
+
+ @Select("SELECT MAX(jobcode) " +
+ "FROM alarm_job " +
+ "WHERE JOBCODE like '${jobcode}%'")
+ String getJobCodeMaxSerial(@Param("jobcode") String jobcode);
+
+}
diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
new file mode 100644
index 0000000..8da7dcb
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmRecords;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface AlarmRecordsMapper extends BaseMapper {
+
+
+ @Select("SELECT JOB_ID AS \"jobId\"\n " +
+ "FROM alarm_records\n " +
+ "WHERE DEVCODE = #{devcode}\n " +
+ "AND ALARM_CONTENT = #{MsgContent}\n " +
+ "AND STATUS='1'\n " +
+ "AND JOB_ID>0 ")
+ String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+
+ @Update(" UPDATE alarm_records\n" +
+ " SET STATUS='0'\n" +
+ " WHERE DEVCODE = #{devcode}\n" +
+ " AND ALARM_CONTENT = #{MsgContent}\n" +
+ " AND STATUS='1'")
+ Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
index 47e7cce..33ce14a 100644
--- a/src/main/java/com/casic/dao/DataGasMapper.java
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -1,9 +1,48 @@
package com.casic.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.casic.entity.DataGasReport;
+import com.casic.entity.DataGasDector;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+import java.util.Map;
@Mapper
-public interface DataGasMapper extends BaseMapper {
+public interface DataGasMapper extends BaseMapper {
+
+ @Select("select bd.id as \"deviceId\",bwi.WELL_CODE AS \"wellCode\" " +
+ "from bus_device_well bdw " +
+ "join (select id from bus_device where devcode=#{devcode}) bd ON bd.id=bdw.device_id " +
+ "join bus_well_info bwi ON bwi.id=bdw.well_id ")
+ Map getWellCode(@Param("devcode") String devcode);
+
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{onlineState} " +
+ "WHERE devcode=#{devcode} ")
+ void setOfflineByDevcode(@Param("devcode") String devcode,
+ @Param("onlineState") Integer onlineState);
+
+ @Select("SELECT level,high_value " +
+ "FROM alarm_level " +
+ "WHERE device_type=#{deviceType} ")
+ List> getAlarmLevelList(@Param("deviceType") Long deviceType);
+
+ @Select("SELECT devcode " +
+ "FROM data_gas_dector " +
+ "WHERE devcode=#{devcode} " +
+ "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+
+ "ORDER BY logtime DESC " +
+ "LIMIT 1")
+ String getLastData(@Param("minutes") String minutes,
+ @Param("devcode") String devcode);
+
+ @Select("SELECT alarm_content" +
+ "FROM BASE_alarm_content_type" +
+ "where device_type=#{deviceType}")
+ String getGasMsgContent(@Param("deviceType")Long deviceType);
+
+
}
diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
new file mode 100644
index 0000000..5131821
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
@@ -0,0 +1,59 @@
+package com.casic.dao.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmJobMapper;
+import com.casic.entity.AlarmJob;
+import org.springframework.stereotype.Component;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Component
+public class AlarmJobDao {
+
+ private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ private static Snowflake snowflake = new Snowflake(0, 2);
+// private static final Sn
+
+ @Resource
+ private AlarmJobMapper alarmJobMapper;
+
+ public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) {
+ AlarmJob alarmJob = new AlarmJob();
+ alarmJob.setId(snowflake.nextId());
+ alarmJob.setDevcode(devCode);
+ alarmJob.setWellCode(wellCode);
+ alarmJob.setJobStatus("0");
+ alarmJob.setCreateTime(new Date());
+ alarmJob.setJobcode(this.produceJobCode(devTypeName));
+ alarmJob.setJobType(jobType);
+ alarmJobMapper.insert(alarmJob);
+ return alarmJob;
+ }
+
+ /**
+ * 前缀+日期+4位流水号
+ *
+ * @param devTypeName
+ * @return
+ */
+ private String produceJobCode(String devTypeName) {
+ String pre = devTypeName;
+ String dataStr = sdf6.format(new Date());
+ String fix = this.getJobCodeMaxSerial(pre + dataStr);
+ return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001";
+ }
+
+
+ private String getJobCodeMaxSerial(String jobcode) {
+ String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode);
+ String fix = "";
+ if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) {
+ fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4);
+ }
+ return fix;
+ }
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
deleted file mode 100644
index c797e55..0000000
--- a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
+++ /dev/null
@@ -1,68 +0,0 @@
-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/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java
new file mode 100644
index 0000000..8a0f764
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmJob.java
@@ -0,0 +1,165 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 报警工单表
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_job")
+public class AlarmJob extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 工单编号
+ */
+ @TableField("JOBCODE")
+ private String jobcode;
+ /**
+ * 工单类型
+ */
+ @TableField("JOG_TYPE")
+ private String jobType;
+ /**
+ * 井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 工单创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+ /**
+ * 工单状态(0待处理,1待确认,2处理中,3完成)
+ */
+ @TableField("JOB_STATUS")
+ private String jobStatus;
+ /**
+ * 接单人员
+ */
+ @TableField("GET_JOB_PERSON")
+ private Long getJobPerson;
+ /**
+ * 接单时间
+ */
+ @TableField("GET_JOB_TIME")
+ private Date getJobTime;
+ /**
+ * 应接单时间
+ */
+ @TableField("SHOULD_GET_TIME")
+ private Date shouldGetTime;
+ /**
+ * 第一现场情况
+ */
+ @TableField("FIRST_STATE")
+ private String firstState;
+ /**
+ * 第一现场照片
+ */
+ @TableField("FIRST_STATE_PHOTOS")
+ private String firstStatePhotos;
+ /**
+ * 确认人员
+ */
+ @TableField("CONFIRM_JOB_PERSON")
+ private Long confirmJobPerson;
+ /**
+ * 确认时间
+ */
+ @TableField("CONFRIM_JOB_TIME")
+ private Date confrimJobTime;
+ /**
+ * 处理人员
+ */
+ @TableField("HANDLE_JOB_Person")
+ private Long handleJobPerson;
+ /**
+ * 处理时间
+ */
+ @TableField("HANDLE_JOB_TIME")
+ private Date handleJobTime;
+ /**
+ * 维护情况记录
+ */
+ @TableField("HANDLE_MESSAGE")
+ private String handleMessage;
+ /**
+ * 维护图片
+ */
+ @TableField("HANDLE_PHOTOS")
+ private String handlePhotos;
+ /**
+ * 工单流转记录
+ */
+ @TableField("FLOW")
+ private String flow;
+
+ @TableField("JOB_BELONG_TO")
+ private Long jobBelongTo;
+
+ @TableField("JOB_FLAG_DELAY")
+ private String jobFlagDelay;
+
+ @TableField("JOB_FLAG_1")
+ private String jobFlag1;
+
+ @TableField(exist = false)
+ private String alarmValue;
+
+ @TableField(exist = false)
+ private String alarmContentName;
+
+ @TableField(exist = false)
+ private Integer recordId;
+
+ @Override
+ public String toString() {
+ return "AlarmJob{" +
+ "id=" + id +
+ ", jobcode=" + jobcode +
+ ", jogType=" + jobType +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", createTime=" + createTime +
+ ", jobStatus=" + jobStatus +
+ ", getJobPerson=" + getJobPerson +
+ ", getJobTime=" + getJobTime +
+ ", firstState=" + firstState +
+ ", firstStatePhotos=" + firstStatePhotos +
+ ", confirmJobPerson=" + confirmJobPerson +
+ ", confrimJobTime=" + confrimJobTime +
+ ", handleJobPerson=" + handleJobPerson +
+ ", handleJobTime=" + handleJobTime +
+ ", handleMessage=" + handleMessage +
+ ", handlePhotos=" + handlePhotos +
+ ", flow=" + flow +
+ ", recordId=" + recordId +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java
new file mode 100644
index 0000000..88b0b26
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmRecords.java
@@ -0,0 +1,108 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ *
+ *
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_records")
+public class AlarmRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 设备ID
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 闸井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 告警类型
+ */
+ @TableField("ALARM_TYPE")
+ private String alarmType;
+ /**
+ * 告警内容
+ */
+ @TableField("ALARM_CONTENT")
+ private String alarmContent;
+ /**
+ * 告警数值
+ */
+ @TableField("ALARM_VALUE")
+ private String alarmValue;
+ /**
+ * 告警等级
+ */
+ @TableField("ALARM_LEVEL")
+ private Integer alarmLevel;
+ /**
+ * 告警详情
+ */
+ @TableField("ALARM_MSG")
+ private String alarmMessage;
+ /**
+ * 告警时间
+ */
+ @TableField("ALARM_TIME")
+ private Date alarmTime;
+ /**
+ * 告警状态
+ */
+ @TableField("STATUS")
+ private String status;
+ /**
+ * 工单编号
+ */
+ @TableField("JOB_ID")
+ private Long jobId;
+
+ @TableField(exist = false)
+ private Integer jobStatus;
+
+ @Override
+ public String toString() {
+ return "AlarmRecords{" +
+ "id=" + id +
+ ", deviceId=" + deviceId +
+ ", devcode=" + devcode +
+ ", wellCode=" + wellCode +
+ ", alarmType=" + alarmType +
+ ", alarmContent=" + alarmContent +
+ ", alarmValue=" + alarmValue +
+ ", alarmLevel=" + alarmLevel +
+ ", alarmMessage=" + alarmMessage +
+ ", alarmTime=" + alarmTime +
+ ", status=" + status +
+ ", jobId=" + jobId +
+ ", jobStatus=" + jobStatus +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/DataGasDector.java b/src/main/java/com/casic/entity/DataGasDector.java
new file mode 100644
index 0000000..537789a
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasDector.java
@@ -0,0 +1,42 @@
+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 DataGasDector {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ private String devcode;
+ private String wellCode;
+ private String strength;
+
+ private String descn;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
deleted file mode 100644
index c43ccdf..0000000
--- a/src/main/java/com/casic/entity/DataGasReport.java
+++ /dev/null
@@ -1,69 +0,0 @@
-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/entity/DeviceSatatus.java b/src/main/java/com/casic/entity/DeviceSatatus.java
new file mode 100644
index 0000000..bab7903
--- /dev/null
+++ b/src/main/java/com/casic/entity/DeviceSatatus.java
@@ -0,0 +1,19 @@
+package com.casic.entity;
+
+import lombok.Data;
+
+/**
+ * 不使用了
+ *
+ */
+@Data
+public class DeviceSatatus {
+ private String deviceId;
+ private String cell;
+ private String cellTs;
+ private String onlineState;
+ private String onlineTs;
+ private String lastDataId;
+ private String lastDataJson;
+ private String lastDataTs;
+}
diff --git a/src/main/java/com/casic/model/DataContentParam.java b/src/main/java/com/casic/model/DataContentParam.java
new file mode 100644
index 0000000..46d298a
--- /dev/null
+++ b/src/main/java/com/casic/model/DataContentParam.java
@@ -0,0 +1,19 @@
+package com.casic.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DataContentParam {
+ private String msg_type;
+ private String error_val;
+ private String ch_cnt;
+ private String erro_cnt;
+ private String alarm_low_cnt;
+ private String alarm_high_cnt;
+ private String offline_cnt;
+ private List rtd_val;
+ private List adc_val;
+ private List status_val;
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/model/DataReportParam.java b/src/main/java/com/casic/model/DataReportParam.java
index 082814c..754f330 100644
--- a/src/main/java/com/casic/model/DataReportParam.java
+++ b/src/main/java/com/casic/model/DataReportParam.java
@@ -11,25 +11,12 @@
*/
@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;
+ private String iotId;
+ private String requestId;
+ private Object checkFailedData;
+ private String productKey;
+ private String gmtCreate;
+ private String deviceName;
+ private Object items;
}
diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java
index d883fe4..457d710 100644
--- a/src/main/java/com/casic/service/DeviceDataService.java
+++ b/src/main/java/com/casic/service/DeviceDataService.java
@@ -3,25 +3,18 @@
import com.casic.model.DataReportParam;
import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
+import org.springframework.web.bind.annotation.RequestBody;
/**
* @author cz
* @date 2022
*/
public interface DeviceDataService {
-
/**
*
* @param dataReportParam
* @return
*/
- ResponseData DeviceDataCommit(DataReportParam dataReportParam);
-
- /**
- *
- * @param heartbeatParam
- * @return
- */
- ResponseData heartBeatSave(HeartbeatParam heartbeatParam);
+ ResponseData gasReceiver(DataReportParam dataReportParam);
}
diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
index 93f0685..e473f0c 100644
--- a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
+++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
@@ -1,58 +1,49 @@
package com.casic.service.impl;
-import com.casic.dao.impl.DeviceDataMapper;
+import com.alibaba.druid.util.StringUtils;
+import com.alibaba.fastjson.JSON;
import com.casic.model.*;
import com.casic.service.DeviceDataService;
+import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import java.util.Map;
+
/**
* @author cz
- * @date 2022-6-20
+ * @date 2022-9-26
*/
@Slf4j
@Service
public class DeviceDataServiceImpl implements DeviceDataService {
- @Autowired
- DeviceDataMapper deviceDataMapper;
+ private final NormalDataProcessor normalDataProcessor;
- /**
- * @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;
+ public DeviceDataServiceImpl(NormalDataProcessor normalDataProcessor) {
+ this.normalDataProcessor = normalDataProcessor;
}
- /**
- * @param heartbeatParam
- * @return
- */
- public ResponseData heartBeatSave(HeartbeatParam heartbeatParam) {
+ public ResponseData gasReceiver(DataReportParam dataReportParam) {
ResponseData responseData = new ResponseData();
try {
- deviceDataMapper.editDeviceData(heartbeatParam);
+ Map> updDataMap = new ObjectMapper().convertValue(dataReportParam.getItems(), Map.class);
+ DataContentParam dataContentParam = JSON.parseObject(updDataMap.get("updData").get("value"), DataContentParam.class);
+ Long uptime = Long.valueOf(String.valueOf(updDataMap.get("updData").get("time")));
+ if (StringUtils.isEmpty(dataReportParam.getDeviceName())) {
+ responseData.setCode(200);
+ responseData.setMessage("没有设备编号");
+ return responseData;
+ }
+ normalDataProcessor.normalDataProvider(dataContentParam, uptime, dataReportParam.getDeviceName());
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);
+ log.error("主题:设备数据上报出现错误,异常信息为{}", sqlex);
}
return responseData;
}
diff --git a/src/main/java/com/casic/service/impl/NormalDataProcessor.java b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
new file mode 100644
index 0000000..3f7630a
--- /dev/null
+++ b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
@@ -0,0 +1,164 @@
+package com.casic.service.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmRecordsMapper;
+import com.casic.dao.DataGasMapper;
+import com.casic.dao.impl.AlarmJobDao;
+import com.casic.entity.AlarmJob;
+import com.casic.entity.AlarmRecords;
+import com.casic.entity.DataGasDector;
+import com.casic.model.DataContentParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Component
+public class NormalDataProcessor {
+
+ public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ @Value("${casic.device.gas-dector.type}")
+ private Long deviceType;
+ @Value("${casic.device.gas-dector.minutes}")
+ private String minutes;
+ @Value("${casic.device.gas-dector.enable-local}")
+ private Boolean enableLocal;
+ @Resource
+ private DataGasMapper dataGasMapper;
+ @Autowired
+ private AlarmJobDao alarmJobDao;
+ @Resource
+ private AlarmRecordsMapper alarmRecordsMapper;
+ private static Snowflake snowflake = new Snowflake(0, 2);
+
+ public void normalDataProvider(DataContentParam dataReportParam, Long timeStamp, String devcode) {
+ Map gasMap = dataGasMapper.getWellCode(devcode);
+ if (ObjectUtils.isEmpty(gasMap)) {
+ log.info("没有该设备编号录入" + devcode);
+ if (enableLocal) {
+ return;
+ }
+ }
+ Boolean updateFlag = false;
+ if (ObjectUtils.isEmpty(dataGasMapper.getLastData(minutes, devcode))) {
+ updateFlag = this.saveNormalData(dataReportParam, timeStamp, devcode, gasMap);
+ }
+ this.dataTaskJudge(dataReportParam, devcode, timeStamp, gasMap, updateFlag);
+ return;
+ }
+
+ /**
+ * 自定义时间存库
+ *
+ * @param dataReportParam
+ * @param timeStamp
+ * @param devcode
+ * @param gasMap
+ */
+ private Boolean saveNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap) {
+ Boolean updateFlag = false;
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ List dataReportFilter = dataReportParam.getRtd_val().stream().filter(
+ data -> {
+ return data != -1;
+ }
+ ).collect(Collectors.toList());
+ if (dataReportFilter.size() > 0 && dataReportFilter.get(dataReportFilter.size() - 1) != 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 1);
+ updateFlag = true;
+ } else if (dataReportFilter.get(dataReportFilter.size() - 1) == 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 0);
+ }
+ dataReportFilter.forEach(
+ data -> {
+ if (data != 65535) {
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+ }
+ );
+ return updateFlag;
+ }
+
+ /**
+ * 报警就存库
+ *
+ * @param dataReportParam
+ * @param devcode
+ * @param timeStamp
+ * @param gasMap
+ */
+ private void dataTaskJudge(DataContentParam dataReportParam, String devcode, Long timeStamp, Map gasMap, Boolean updateFlag) {
+ List> alarmLevelList = dataGasMapper.getAlarmLevelList(deviceType);
+ String wellCode = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "";
+ Long deviceId = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? Long.valueOf(String.valueOf(gasMap.get("deviceId"))) : -1;
+ final String gasMsgContent=dataGasMapper.getGasMsgContent(deviceType);
+ dataReportParam.getRtd_val().stream().filter(
+ dataReport -> {
+ return dataReport != -1 && dataReport != 65535;
+ }
+ ).forEach(
+ dataReport -> {
+ for (Map alarmLevelMap : alarmLevelList) {
+ if (dataReport > Float.valueOf(String.valueOf(alarmLevelMap.get("high_value")))) {
+ AlarmRecords alarmRecord = new AlarmRecords();
+ alarmRecord.setId(snowflake.nextId());
+ alarmRecord.setDeviceId(deviceId);
+ alarmRecord.setDevcode(devcode);
+ alarmRecord.setWellCode(wellCode);
+ alarmRecord.setAlarmType("1"); // 业务报警
+ alarmRecord.setAlarmContent("燃气报警");
+ alarmRecord.setAlarmValue(String.valueOf(dataReport));
+ alarmRecord.setAlarmTime(new Date());
+ alarmRecord.setStatus("1");
+ alarmRecord.setAlarmLevel(Integer.valueOf(alarmLevelMap.get("level").toString()));
+ alarmRecord.setAlarmMessage("燃气报警");
+ String jobId = alarmRecordsMapper.isOldAlarmRecord(devcode, "燃气报警");
+ // 超出报警阈值 生成一条报警消息
+ if (!StringUtils.isEmpty(jobId)) {
+ alarmRecordsMapper.updateOldAlarmRecord(devcode, "燃气报警");
+ alarmRecord.setJobId(Long.valueOf(jobId));
+ } else {
+ AlarmJob alarmJob = alarmJobDao.saveData(devcode, wellCode, "RQZD", "1");
+ alarmRecord.setJobId(alarmJob.getId());
+ }
+ alarmRecordsMapper.insert(alarmRecord);
+ if (!updateFlag) {
+ alarmNormalData(dataReportParam, timeStamp, devcode, gasMap, dataReport);
+ }
+ break;
+ }
+ }
+ }
+ );
+ }
+
+ private void alarmNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap, Integer data) {
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+
+}
+
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index fac2afe..f8a06a6 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -1,40 +1,19 @@
server:
- port: 11556
+ port: 11320
################### 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
+ driver-class-name: org.postgresql.Driver
+ url: jdbc:postgresql://111.198.10.15:11209/smartwell_zq_cs
+ 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
- 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
+ level.com.casic: info
file:
path: logs/
name: missiles.log
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh
new file mode 100644
index 0000000..e14c4c7
--- /dev/null
+++ b/src/main/build/bin/start.sh
@@ -0,0 +1,2 @@
+java -jar ./lib/${project.build.finalName}.jar
+
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
index c55e37d..0887f1f 100644
--- a/src/main/java/com/casic/CasicApplication.java
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -3,8 +3,6 @@
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;
/**
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
index e5351c9..be0de6b 100644
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -1,14 +1,19 @@
package com.casic.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.casic.model.DataReportParam;
-import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
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;
+import java.util.Map;
+
+@Slf4j
@RequestMapping("/data")
@RestController
public class DeviceDataController {
@@ -19,19 +24,16 @@
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 String gasReceiver(@RequestBody Map map) {
+// log.info("---------"+JSON.toJSONString(map));
+// return "200";
+// }
@PostMapping("/gas/receiver")
- public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
- return dataService.heartBeatSave(heartbeatParam);
+ public ResponseData gasReceiver(@RequestBody DataReportParam dataReportParam) {
+ log.info("---------"+JSON.toJSONString(dataReportParam));
+ return dataService.gasReceiver(dataReportParam);
}
}
diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java
new file mode 100644
index 0000000..e5e9c8d
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmJobMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmJob;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface AlarmJobMapper extends BaseMapper {
+
+ @Select("SELECT MAX(jobcode) " +
+ "FROM alarm_job " +
+ "WHERE JOBCODE like '${jobcode}%'")
+ String getJobCodeMaxSerial(@Param("jobcode") String jobcode);
+
+}
diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
new file mode 100644
index 0000000..8da7dcb
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmRecords;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface AlarmRecordsMapper extends BaseMapper {
+
+
+ @Select("SELECT JOB_ID AS \"jobId\"\n " +
+ "FROM alarm_records\n " +
+ "WHERE DEVCODE = #{devcode}\n " +
+ "AND ALARM_CONTENT = #{MsgContent}\n " +
+ "AND STATUS='1'\n " +
+ "AND JOB_ID>0 ")
+ String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+
+ @Update(" UPDATE alarm_records\n" +
+ " SET STATUS='0'\n" +
+ " WHERE DEVCODE = #{devcode}\n" +
+ " AND ALARM_CONTENT = #{MsgContent}\n" +
+ " AND STATUS='1'")
+ Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
index 47e7cce..33ce14a 100644
--- a/src/main/java/com/casic/dao/DataGasMapper.java
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -1,9 +1,48 @@
package com.casic.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.casic.entity.DataGasReport;
+import com.casic.entity.DataGasDector;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+import java.util.Map;
@Mapper
-public interface DataGasMapper extends BaseMapper {
+public interface DataGasMapper extends BaseMapper {
+
+ @Select("select bd.id as \"deviceId\",bwi.WELL_CODE AS \"wellCode\" " +
+ "from bus_device_well bdw " +
+ "join (select id from bus_device where devcode=#{devcode}) bd ON bd.id=bdw.device_id " +
+ "join bus_well_info bwi ON bwi.id=bdw.well_id ")
+ Map getWellCode(@Param("devcode") String devcode);
+
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{onlineState} " +
+ "WHERE devcode=#{devcode} ")
+ void setOfflineByDevcode(@Param("devcode") String devcode,
+ @Param("onlineState") Integer onlineState);
+
+ @Select("SELECT level,high_value " +
+ "FROM alarm_level " +
+ "WHERE device_type=#{deviceType} ")
+ List> getAlarmLevelList(@Param("deviceType") Long deviceType);
+
+ @Select("SELECT devcode " +
+ "FROM data_gas_dector " +
+ "WHERE devcode=#{devcode} " +
+ "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+
+ "ORDER BY logtime DESC " +
+ "LIMIT 1")
+ String getLastData(@Param("minutes") String minutes,
+ @Param("devcode") String devcode);
+
+ @Select("SELECT alarm_content" +
+ "FROM BASE_alarm_content_type" +
+ "where device_type=#{deviceType}")
+ String getGasMsgContent(@Param("deviceType")Long deviceType);
+
+
}
diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
new file mode 100644
index 0000000..5131821
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
@@ -0,0 +1,59 @@
+package com.casic.dao.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmJobMapper;
+import com.casic.entity.AlarmJob;
+import org.springframework.stereotype.Component;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Component
+public class AlarmJobDao {
+
+ private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ private static Snowflake snowflake = new Snowflake(0, 2);
+// private static final Sn
+
+ @Resource
+ private AlarmJobMapper alarmJobMapper;
+
+ public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) {
+ AlarmJob alarmJob = new AlarmJob();
+ alarmJob.setId(snowflake.nextId());
+ alarmJob.setDevcode(devCode);
+ alarmJob.setWellCode(wellCode);
+ alarmJob.setJobStatus("0");
+ alarmJob.setCreateTime(new Date());
+ alarmJob.setJobcode(this.produceJobCode(devTypeName));
+ alarmJob.setJobType(jobType);
+ alarmJobMapper.insert(alarmJob);
+ return alarmJob;
+ }
+
+ /**
+ * 前缀+日期+4位流水号
+ *
+ * @param devTypeName
+ * @return
+ */
+ private String produceJobCode(String devTypeName) {
+ String pre = devTypeName;
+ String dataStr = sdf6.format(new Date());
+ String fix = this.getJobCodeMaxSerial(pre + dataStr);
+ return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001";
+ }
+
+
+ private String getJobCodeMaxSerial(String jobcode) {
+ String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode);
+ String fix = "";
+ if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) {
+ fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4);
+ }
+ return fix;
+ }
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
deleted file mode 100644
index c797e55..0000000
--- a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
+++ /dev/null
@@ -1,68 +0,0 @@
-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/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java
new file mode 100644
index 0000000..8a0f764
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmJob.java
@@ -0,0 +1,165 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 报警工单表
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_job")
+public class AlarmJob extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 工单编号
+ */
+ @TableField("JOBCODE")
+ private String jobcode;
+ /**
+ * 工单类型
+ */
+ @TableField("JOG_TYPE")
+ private String jobType;
+ /**
+ * 井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 工单创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+ /**
+ * 工单状态(0待处理,1待确认,2处理中,3完成)
+ */
+ @TableField("JOB_STATUS")
+ private String jobStatus;
+ /**
+ * 接单人员
+ */
+ @TableField("GET_JOB_PERSON")
+ private Long getJobPerson;
+ /**
+ * 接单时间
+ */
+ @TableField("GET_JOB_TIME")
+ private Date getJobTime;
+ /**
+ * 应接单时间
+ */
+ @TableField("SHOULD_GET_TIME")
+ private Date shouldGetTime;
+ /**
+ * 第一现场情况
+ */
+ @TableField("FIRST_STATE")
+ private String firstState;
+ /**
+ * 第一现场照片
+ */
+ @TableField("FIRST_STATE_PHOTOS")
+ private String firstStatePhotos;
+ /**
+ * 确认人员
+ */
+ @TableField("CONFIRM_JOB_PERSON")
+ private Long confirmJobPerson;
+ /**
+ * 确认时间
+ */
+ @TableField("CONFRIM_JOB_TIME")
+ private Date confrimJobTime;
+ /**
+ * 处理人员
+ */
+ @TableField("HANDLE_JOB_Person")
+ private Long handleJobPerson;
+ /**
+ * 处理时间
+ */
+ @TableField("HANDLE_JOB_TIME")
+ private Date handleJobTime;
+ /**
+ * 维护情况记录
+ */
+ @TableField("HANDLE_MESSAGE")
+ private String handleMessage;
+ /**
+ * 维护图片
+ */
+ @TableField("HANDLE_PHOTOS")
+ private String handlePhotos;
+ /**
+ * 工单流转记录
+ */
+ @TableField("FLOW")
+ private String flow;
+
+ @TableField("JOB_BELONG_TO")
+ private Long jobBelongTo;
+
+ @TableField("JOB_FLAG_DELAY")
+ private String jobFlagDelay;
+
+ @TableField("JOB_FLAG_1")
+ private String jobFlag1;
+
+ @TableField(exist = false)
+ private String alarmValue;
+
+ @TableField(exist = false)
+ private String alarmContentName;
+
+ @TableField(exist = false)
+ private Integer recordId;
+
+ @Override
+ public String toString() {
+ return "AlarmJob{" +
+ "id=" + id +
+ ", jobcode=" + jobcode +
+ ", jogType=" + jobType +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", createTime=" + createTime +
+ ", jobStatus=" + jobStatus +
+ ", getJobPerson=" + getJobPerson +
+ ", getJobTime=" + getJobTime +
+ ", firstState=" + firstState +
+ ", firstStatePhotos=" + firstStatePhotos +
+ ", confirmJobPerson=" + confirmJobPerson +
+ ", confrimJobTime=" + confrimJobTime +
+ ", handleJobPerson=" + handleJobPerson +
+ ", handleJobTime=" + handleJobTime +
+ ", handleMessage=" + handleMessage +
+ ", handlePhotos=" + handlePhotos +
+ ", flow=" + flow +
+ ", recordId=" + recordId +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java
new file mode 100644
index 0000000..88b0b26
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmRecords.java
@@ -0,0 +1,108 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ *
+ *
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_records")
+public class AlarmRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 设备ID
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 闸井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 告警类型
+ */
+ @TableField("ALARM_TYPE")
+ private String alarmType;
+ /**
+ * 告警内容
+ */
+ @TableField("ALARM_CONTENT")
+ private String alarmContent;
+ /**
+ * 告警数值
+ */
+ @TableField("ALARM_VALUE")
+ private String alarmValue;
+ /**
+ * 告警等级
+ */
+ @TableField("ALARM_LEVEL")
+ private Integer alarmLevel;
+ /**
+ * 告警详情
+ */
+ @TableField("ALARM_MSG")
+ private String alarmMessage;
+ /**
+ * 告警时间
+ */
+ @TableField("ALARM_TIME")
+ private Date alarmTime;
+ /**
+ * 告警状态
+ */
+ @TableField("STATUS")
+ private String status;
+ /**
+ * 工单编号
+ */
+ @TableField("JOB_ID")
+ private Long jobId;
+
+ @TableField(exist = false)
+ private Integer jobStatus;
+
+ @Override
+ public String toString() {
+ return "AlarmRecords{" +
+ "id=" + id +
+ ", deviceId=" + deviceId +
+ ", devcode=" + devcode +
+ ", wellCode=" + wellCode +
+ ", alarmType=" + alarmType +
+ ", alarmContent=" + alarmContent +
+ ", alarmValue=" + alarmValue +
+ ", alarmLevel=" + alarmLevel +
+ ", alarmMessage=" + alarmMessage +
+ ", alarmTime=" + alarmTime +
+ ", status=" + status +
+ ", jobId=" + jobId +
+ ", jobStatus=" + jobStatus +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/DataGasDector.java b/src/main/java/com/casic/entity/DataGasDector.java
new file mode 100644
index 0000000..537789a
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasDector.java
@@ -0,0 +1,42 @@
+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 DataGasDector {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ private String devcode;
+ private String wellCode;
+ private String strength;
+
+ private String descn;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
deleted file mode 100644
index c43ccdf..0000000
--- a/src/main/java/com/casic/entity/DataGasReport.java
+++ /dev/null
@@ -1,69 +0,0 @@
-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/entity/DeviceSatatus.java b/src/main/java/com/casic/entity/DeviceSatatus.java
new file mode 100644
index 0000000..bab7903
--- /dev/null
+++ b/src/main/java/com/casic/entity/DeviceSatatus.java
@@ -0,0 +1,19 @@
+package com.casic.entity;
+
+import lombok.Data;
+
+/**
+ * 不使用了
+ *
+ */
+@Data
+public class DeviceSatatus {
+ private String deviceId;
+ private String cell;
+ private String cellTs;
+ private String onlineState;
+ private String onlineTs;
+ private String lastDataId;
+ private String lastDataJson;
+ private String lastDataTs;
+}
diff --git a/src/main/java/com/casic/model/DataContentParam.java b/src/main/java/com/casic/model/DataContentParam.java
new file mode 100644
index 0000000..46d298a
--- /dev/null
+++ b/src/main/java/com/casic/model/DataContentParam.java
@@ -0,0 +1,19 @@
+package com.casic.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DataContentParam {
+ private String msg_type;
+ private String error_val;
+ private String ch_cnt;
+ private String erro_cnt;
+ private String alarm_low_cnt;
+ private String alarm_high_cnt;
+ private String offline_cnt;
+ private List rtd_val;
+ private List adc_val;
+ private List status_val;
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/model/DataReportParam.java b/src/main/java/com/casic/model/DataReportParam.java
index 082814c..754f330 100644
--- a/src/main/java/com/casic/model/DataReportParam.java
+++ b/src/main/java/com/casic/model/DataReportParam.java
@@ -11,25 +11,12 @@
*/
@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;
+ private String iotId;
+ private String requestId;
+ private Object checkFailedData;
+ private String productKey;
+ private String gmtCreate;
+ private String deviceName;
+ private Object items;
}
diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java
index d883fe4..457d710 100644
--- a/src/main/java/com/casic/service/DeviceDataService.java
+++ b/src/main/java/com/casic/service/DeviceDataService.java
@@ -3,25 +3,18 @@
import com.casic.model.DataReportParam;
import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
+import org.springframework.web.bind.annotation.RequestBody;
/**
* @author cz
* @date 2022
*/
public interface DeviceDataService {
-
/**
*
* @param dataReportParam
* @return
*/
- ResponseData DeviceDataCommit(DataReportParam dataReportParam);
-
- /**
- *
- * @param heartbeatParam
- * @return
- */
- ResponseData heartBeatSave(HeartbeatParam heartbeatParam);
+ ResponseData gasReceiver(DataReportParam dataReportParam);
}
diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
index 93f0685..e473f0c 100644
--- a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
+++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
@@ -1,58 +1,49 @@
package com.casic.service.impl;
-import com.casic.dao.impl.DeviceDataMapper;
+import com.alibaba.druid.util.StringUtils;
+import com.alibaba.fastjson.JSON;
import com.casic.model.*;
import com.casic.service.DeviceDataService;
+import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import java.util.Map;
+
/**
* @author cz
- * @date 2022-6-20
+ * @date 2022-9-26
*/
@Slf4j
@Service
public class DeviceDataServiceImpl implements DeviceDataService {
- @Autowired
- DeviceDataMapper deviceDataMapper;
+ private final NormalDataProcessor normalDataProcessor;
- /**
- * @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;
+ public DeviceDataServiceImpl(NormalDataProcessor normalDataProcessor) {
+ this.normalDataProcessor = normalDataProcessor;
}
- /**
- * @param heartbeatParam
- * @return
- */
- public ResponseData heartBeatSave(HeartbeatParam heartbeatParam) {
+ public ResponseData gasReceiver(DataReportParam dataReportParam) {
ResponseData responseData = new ResponseData();
try {
- deviceDataMapper.editDeviceData(heartbeatParam);
+ Map> updDataMap = new ObjectMapper().convertValue(dataReportParam.getItems(), Map.class);
+ DataContentParam dataContentParam = JSON.parseObject(updDataMap.get("updData").get("value"), DataContentParam.class);
+ Long uptime = Long.valueOf(String.valueOf(updDataMap.get("updData").get("time")));
+ if (StringUtils.isEmpty(dataReportParam.getDeviceName())) {
+ responseData.setCode(200);
+ responseData.setMessage("没有设备编号");
+ return responseData;
+ }
+ normalDataProcessor.normalDataProvider(dataContentParam, uptime, dataReportParam.getDeviceName());
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);
+ log.error("主题:设备数据上报出现错误,异常信息为{}", sqlex);
}
return responseData;
}
diff --git a/src/main/java/com/casic/service/impl/NormalDataProcessor.java b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
new file mode 100644
index 0000000..3f7630a
--- /dev/null
+++ b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
@@ -0,0 +1,164 @@
+package com.casic.service.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmRecordsMapper;
+import com.casic.dao.DataGasMapper;
+import com.casic.dao.impl.AlarmJobDao;
+import com.casic.entity.AlarmJob;
+import com.casic.entity.AlarmRecords;
+import com.casic.entity.DataGasDector;
+import com.casic.model.DataContentParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Component
+public class NormalDataProcessor {
+
+ public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ @Value("${casic.device.gas-dector.type}")
+ private Long deviceType;
+ @Value("${casic.device.gas-dector.minutes}")
+ private String minutes;
+ @Value("${casic.device.gas-dector.enable-local}")
+ private Boolean enableLocal;
+ @Resource
+ private DataGasMapper dataGasMapper;
+ @Autowired
+ private AlarmJobDao alarmJobDao;
+ @Resource
+ private AlarmRecordsMapper alarmRecordsMapper;
+ private static Snowflake snowflake = new Snowflake(0, 2);
+
+ public void normalDataProvider(DataContentParam dataReportParam, Long timeStamp, String devcode) {
+ Map gasMap = dataGasMapper.getWellCode(devcode);
+ if (ObjectUtils.isEmpty(gasMap)) {
+ log.info("没有该设备编号录入" + devcode);
+ if (enableLocal) {
+ return;
+ }
+ }
+ Boolean updateFlag = false;
+ if (ObjectUtils.isEmpty(dataGasMapper.getLastData(minutes, devcode))) {
+ updateFlag = this.saveNormalData(dataReportParam, timeStamp, devcode, gasMap);
+ }
+ this.dataTaskJudge(dataReportParam, devcode, timeStamp, gasMap, updateFlag);
+ return;
+ }
+
+ /**
+ * 自定义时间存库
+ *
+ * @param dataReportParam
+ * @param timeStamp
+ * @param devcode
+ * @param gasMap
+ */
+ private Boolean saveNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap) {
+ Boolean updateFlag = false;
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ List dataReportFilter = dataReportParam.getRtd_val().stream().filter(
+ data -> {
+ return data != -1;
+ }
+ ).collect(Collectors.toList());
+ if (dataReportFilter.size() > 0 && dataReportFilter.get(dataReportFilter.size() - 1) != 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 1);
+ updateFlag = true;
+ } else if (dataReportFilter.get(dataReportFilter.size() - 1) == 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 0);
+ }
+ dataReportFilter.forEach(
+ data -> {
+ if (data != 65535) {
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+ }
+ );
+ return updateFlag;
+ }
+
+ /**
+ * 报警就存库
+ *
+ * @param dataReportParam
+ * @param devcode
+ * @param timeStamp
+ * @param gasMap
+ */
+ private void dataTaskJudge(DataContentParam dataReportParam, String devcode, Long timeStamp, Map gasMap, Boolean updateFlag) {
+ List> alarmLevelList = dataGasMapper.getAlarmLevelList(deviceType);
+ String wellCode = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "";
+ Long deviceId = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? Long.valueOf(String.valueOf(gasMap.get("deviceId"))) : -1;
+ final String gasMsgContent=dataGasMapper.getGasMsgContent(deviceType);
+ dataReportParam.getRtd_val().stream().filter(
+ dataReport -> {
+ return dataReport != -1 && dataReport != 65535;
+ }
+ ).forEach(
+ dataReport -> {
+ for (Map alarmLevelMap : alarmLevelList) {
+ if (dataReport > Float.valueOf(String.valueOf(alarmLevelMap.get("high_value")))) {
+ AlarmRecords alarmRecord = new AlarmRecords();
+ alarmRecord.setId(snowflake.nextId());
+ alarmRecord.setDeviceId(deviceId);
+ alarmRecord.setDevcode(devcode);
+ alarmRecord.setWellCode(wellCode);
+ alarmRecord.setAlarmType("1"); // 业务报警
+ alarmRecord.setAlarmContent("燃气报警");
+ alarmRecord.setAlarmValue(String.valueOf(dataReport));
+ alarmRecord.setAlarmTime(new Date());
+ alarmRecord.setStatus("1");
+ alarmRecord.setAlarmLevel(Integer.valueOf(alarmLevelMap.get("level").toString()));
+ alarmRecord.setAlarmMessage("燃气报警");
+ String jobId = alarmRecordsMapper.isOldAlarmRecord(devcode, "燃气报警");
+ // 超出报警阈值 生成一条报警消息
+ if (!StringUtils.isEmpty(jobId)) {
+ alarmRecordsMapper.updateOldAlarmRecord(devcode, "燃气报警");
+ alarmRecord.setJobId(Long.valueOf(jobId));
+ } else {
+ AlarmJob alarmJob = alarmJobDao.saveData(devcode, wellCode, "RQZD", "1");
+ alarmRecord.setJobId(alarmJob.getId());
+ }
+ alarmRecordsMapper.insert(alarmRecord);
+ if (!updateFlag) {
+ alarmNormalData(dataReportParam, timeStamp, devcode, gasMap, dataReport);
+ }
+ break;
+ }
+ }
+ }
+ );
+ }
+
+ private void alarmNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap, Integer data) {
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+
+}
+
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index fac2afe..f8a06a6 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -1,40 +1,19 @@
server:
- port: 11556
+ port: 11320
################### 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
+ driver-class-name: org.postgresql.Driver
+ url: jdbc:postgresql://111.198.10.15:11209/smartwell_zq_cs
+ 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
- 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
+ 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
index 86411e6..ffc01e9 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -19,18 +19,11 @@
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
+ device:
+ gas-dector:
+ type: 101
+ minutes: 60
+ enable-local: false
+# type 可燃气体的设备类型
+# minutes: 燃气外协设备上传数据的分钟数
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh
new file mode 100644
index 0000000..e14c4c7
--- /dev/null
+++ b/src/main/build/bin/start.sh
@@ -0,0 +1,2 @@
+java -jar ./lib/${project.build.finalName}.jar
+
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
index c55e37d..0887f1f 100644
--- a/src/main/java/com/casic/CasicApplication.java
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -3,8 +3,6 @@
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;
/**
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
index e5351c9..be0de6b 100644
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -1,14 +1,19 @@
package com.casic.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.casic.model.DataReportParam;
-import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
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;
+import java.util.Map;
+
+@Slf4j
@RequestMapping("/data")
@RestController
public class DeviceDataController {
@@ -19,19 +24,16 @@
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 String gasReceiver(@RequestBody Map map) {
+// log.info("---------"+JSON.toJSONString(map));
+// return "200";
+// }
@PostMapping("/gas/receiver")
- public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
- return dataService.heartBeatSave(heartbeatParam);
+ public ResponseData gasReceiver(@RequestBody DataReportParam dataReportParam) {
+ log.info("---------"+JSON.toJSONString(dataReportParam));
+ return dataService.gasReceiver(dataReportParam);
}
}
diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java
new file mode 100644
index 0000000..e5e9c8d
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmJobMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmJob;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface AlarmJobMapper extends BaseMapper {
+
+ @Select("SELECT MAX(jobcode) " +
+ "FROM alarm_job " +
+ "WHERE JOBCODE like '${jobcode}%'")
+ String getJobCodeMaxSerial(@Param("jobcode") String jobcode);
+
+}
diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
new file mode 100644
index 0000000..8da7dcb
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmRecords;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface AlarmRecordsMapper extends BaseMapper {
+
+
+ @Select("SELECT JOB_ID AS \"jobId\"\n " +
+ "FROM alarm_records\n " +
+ "WHERE DEVCODE = #{devcode}\n " +
+ "AND ALARM_CONTENT = #{MsgContent}\n " +
+ "AND STATUS='1'\n " +
+ "AND JOB_ID>0 ")
+ String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+
+ @Update(" UPDATE alarm_records\n" +
+ " SET STATUS='0'\n" +
+ " WHERE DEVCODE = #{devcode}\n" +
+ " AND ALARM_CONTENT = #{MsgContent}\n" +
+ " AND STATUS='1'")
+ Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
index 47e7cce..33ce14a 100644
--- a/src/main/java/com/casic/dao/DataGasMapper.java
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -1,9 +1,48 @@
package com.casic.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.casic.entity.DataGasReport;
+import com.casic.entity.DataGasDector;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+import java.util.Map;
@Mapper
-public interface DataGasMapper extends BaseMapper {
+public interface DataGasMapper extends BaseMapper {
+
+ @Select("select bd.id as \"deviceId\",bwi.WELL_CODE AS \"wellCode\" " +
+ "from bus_device_well bdw " +
+ "join (select id from bus_device where devcode=#{devcode}) bd ON bd.id=bdw.device_id " +
+ "join bus_well_info bwi ON bwi.id=bdw.well_id ")
+ Map getWellCode(@Param("devcode") String devcode);
+
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{onlineState} " +
+ "WHERE devcode=#{devcode} ")
+ void setOfflineByDevcode(@Param("devcode") String devcode,
+ @Param("onlineState") Integer onlineState);
+
+ @Select("SELECT level,high_value " +
+ "FROM alarm_level " +
+ "WHERE device_type=#{deviceType} ")
+ List> getAlarmLevelList(@Param("deviceType") Long deviceType);
+
+ @Select("SELECT devcode " +
+ "FROM data_gas_dector " +
+ "WHERE devcode=#{devcode} " +
+ "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+
+ "ORDER BY logtime DESC " +
+ "LIMIT 1")
+ String getLastData(@Param("minutes") String minutes,
+ @Param("devcode") String devcode);
+
+ @Select("SELECT alarm_content" +
+ "FROM BASE_alarm_content_type" +
+ "where device_type=#{deviceType}")
+ String getGasMsgContent(@Param("deviceType")Long deviceType);
+
+
}
diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
new file mode 100644
index 0000000..5131821
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
@@ -0,0 +1,59 @@
+package com.casic.dao.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmJobMapper;
+import com.casic.entity.AlarmJob;
+import org.springframework.stereotype.Component;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Component
+public class AlarmJobDao {
+
+ private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ private static Snowflake snowflake = new Snowflake(0, 2);
+// private static final Sn
+
+ @Resource
+ private AlarmJobMapper alarmJobMapper;
+
+ public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) {
+ AlarmJob alarmJob = new AlarmJob();
+ alarmJob.setId(snowflake.nextId());
+ alarmJob.setDevcode(devCode);
+ alarmJob.setWellCode(wellCode);
+ alarmJob.setJobStatus("0");
+ alarmJob.setCreateTime(new Date());
+ alarmJob.setJobcode(this.produceJobCode(devTypeName));
+ alarmJob.setJobType(jobType);
+ alarmJobMapper.insert(alarmJob);
+ return alarmJob;
+ }
+
+ /**
+ * 前缀+日期+4位流水号
+ *
+ * @param devTypeName
+ * @return
+ */
+ private String produceJobCode(String devTypeName) {
+ String pre = devTypeName;
+ String dataStr = sdf6.format(new Date());
+ String fix = this.getJobCodeMaxSerial(pre + dataStr);
+ return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001";
+ }
+
+
+ private String getJobCodeMaxSerial(String jobcode) {
+ String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode);
+ String fix = "";
+ if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) {
+ fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4);
+ }
+ return fix;
+ }
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
deleted file mode 100644
index c797e55..0000000
--- a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
+++ /dev/null
@@ -1,68 +0,0 @@
-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/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java
new file mode 100644
index 0000000..8a0f764
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmJob.java
@@ -0,0 +1,165 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 报警工单表
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_job")
+public class AlarmJob extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 工单编号
+ */
+ @TableField("JOBCODE")
+ private String jobcode;
+ /**
+ * 工单类型
+ */
+ @TableField("JOG_TYPE")
+ private String jobType;
+ /**
+ * 井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 工单创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+ /**
+ * 工单状态(0待处理,1待确认,2处理中,3完成)
+ */
+ @TableField("JOB_STATUS")
+ private String jobStatus;
+ /**
+ * 接单人员
+ */
+ @TableField("GET_JOB_PERSON")
+ private Long getJobPerson;
+ /**
+ * 接单时间
+ */
+ @TableField("GET_JOB_TIME")
+ private Date getJobTime;
+ /**
+ * 应接单时间
+ */
+ @TableField("SHOULD_GET_TIME")
+ private Date shouldGetTime;
+ /**
+ * 第一现场情况
+ */
+ @TableField("FIRST_STATE")
+ private String firstState;
+ /**
+ * 第一现场照片
+ */
+ @TableField("FIRST_STATE_PHOTOS")
+ private String firstStatePhotos;
+ /**
+ * 确认人员
+ */
+ @TableField("CONFIRM_JOB_PERSON")
+ private Long confirmJobPerson;
+ /**
+ * 确认时间
+ */
+ @TableField("CONFRIM_JOB_TIME")
+ private Date confrimJobTime;
+ /**
+ * 处理人员
+ */
+ @TableField("HANDLE_JOB_Person")
+ private Long handleJobPerson;
+ /**
+ * 处理时间
+ */
+ @TableField("HANDLE_JOB_TIME")
+ private Date handleJobTime;
+ /**
+ * 维护情况记录
+ */
+ @TableField("HANDLE_MESSAGE")
+ private String handleMessage;
+ /**
+ * 维护图片
+ */
+ @TableField("HANDLE_PHOTOS")
+ private String handlePhotos;
+ /**
+ * 工单流转记录
+ */
+ @TableField("FLOW")
+ private String flow;
+
+ @TableField("JOB_BELONG_TO")
+ private Long jobBelongTo;
+
+ @TableField("JOB_FLAG_DELAY")
+ private String jobFlagDelay;
+
+ @TableField("JOB_FLAG_1")
+ private String jobFlag1;
+
+ @TableField(exist = false)
+ private String alarmValue;
+
+ @TableField(exist = false)
+ private String alarmContentName;
+
+ @TableField(exist = false)
+ private Integer recordId;
+
+ @Override
+ public String toString() {
+ return "AlarmJob{" +
+ "id=" + id +
+ ", jobcode=" + jobcode +
+ ", jogType=" + jobType +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", createTime=" + createTime +
+ ", jobStatus=" + jobStatus +
+ ", getJobPerson=" + getJobPerson +
+ ", getJobTime=" + getJobTime +
+ ", firstState=" + firstState +
+ ", firstStatePhotos=" + firstStatePhotos +
+ ", confirmJobPerson=" + confirmJobPerson +
+ ", confrimJobTime=" + confrimJobTime +
+ ", handleJobPerson=" + handleJobPerson +
+ ", handleJobTime=" + handleJobTime +
+ ", handleMessage=" + handleMessage +
+ ", handlePhotos=" + handlePhotos +
+ ", flow=" + flow +
+ ", recordId=" + recordId +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java
new file mode 100644
index 0000000..88b0b26
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmRecords.java
@@ -0,0 +1,108 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ *
+ *
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_records")
+public class AlarmRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 设备ID
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 闸井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 告警类型
+ */
+ @TableField("ALARM_TYPE")
+ private String alarmType;
+ /**
+ * 告警内容
+ */
+ @TableField("ALARM_CONTENT")
+ private String alarmContent;
+ /**
+ * 告警数值
+ */
+ @TableField("ALARM_VALUE")
+ private String alarmValue;
+ /**
+ * 告警等级
+ */
+ @TableField("ALARM_LEVEL")
+ private Integer alarmLevel;
+ /**
+ * 告警详情
+ */
+ @TableField("ALARM_MSG")
+ private String alarmMessage;
+ /**
+ * 告警时间
+ */
+ @TableField("ALARM_TIME")
+ private Date alarmTime;
+ /**
+ * 告警状态
+ */
+ @TableField("STATUS")
+ private String status;
+ /**
+ * 工单编号
+ */
+ @TableField("JOB_ID")
+ private Long jobId;
+
+ @TableField(exist = false)
+ private Integer jobStatus;
+
+ @Override
+ public String toString() {
+ return "AlarmRecords{" +
+ "id=" + id +
+ ", deviceId=" + deviceId +
+ ", devcode=" + devcode +
+ ", wellCode=" + wellCode +
+ ", alarmType=" + alarmType +
+ ", alarmContent=" + alarmContent +
+ ", alarmValue=" + alarmValue +
+ ", alarmLevel=" + alarmLevel +
+ ", alarmMessage=" + alarmMessage +
+ ", alarmTime=" + alarmTime +
+ ", status=" + status +
+ ", jobId=" + jobId +
+ ", jobStatus=" + jobStatus +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/DataGasDector.java b/src/main/java/com/casic/entity/DataGasDector.java
new file mode 100644
index 0000000..537789a
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasDector.java
@@ -0,0 +1,42 @@
+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 DataGasDector {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ private String devcode;
+ private String wellCode;
+ private String strength;
+
+ private String descn;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
deleted file mode 100644
index c43ccdf..0000000
--- a/src/main/java/com/casic/entity/DataGasReport.java
+++ /dev/null
@@ -1,69 +0,0 @@
-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/entity/DeviceSatatus.java b/src/main/java/com/casic/entity/DeviceSatatus.java
new file mode 100644
index 0000000..bab7903
--- /dev/null
+++ b/src/main/java/com/casic/entity/DeviceSatatus.java
@@ -0,0 +1,19 @@
+package com.casic.entity;
+
+import lombok.Data;
+
+/**
+ * 不使用了
+ *
+ */
+@Data
+public class DeviceSatatus {
+ private String deviceId;
+ private String cell;
+ private String cellTs;
+ private String onlineState;
+ private String onlineTs;
+ private String lastDataId;
+ private String lastDataJson;
+ private String lastDataTs;
+}
diff --git a/src/main/java/com/casic/model/DataContentParam.java b/src/main/java/com/casic/model/DataContentParam.java
new file mode 100644
index 0000000..46d298a
--- /dev/null
+++ b/src/main/java/com/casic/model/DataContentParam.java
@@ -0,0 +1,19 @@
+package com.casic.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DataContentParam {
+ private String msg_type;
+ private String error_val;
+ private String ch_cnt;
+ private String erro_cnt;
+ private String alarm_low_cnt;
+ private String alarm_high_cnt;
+ private String offline_cnt;
+ private List rtd_val;
+ private List adc_val;
+ private List status_val;
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/model/DataReportParam.java b/src/main/java/com/casic/model/DataReportParam.java
index 082814c..754f330 100644
--- a/src/main/java/com/casic/model/DataReportParam.java
+++ b/src/main/java/com/casic/model/DataReportParam.java
@@ -11,25 +11,12 @@
*/
@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;
+ private String iotId;
+ private String requestId;
+ private Object checkFailedData;
+ private String productKey;
+ private String gmtCreate;
+ private String deviceName;
+ private Object items;
}
diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java
index d883fe4..457d710 100644
--- a/src/main/java/com/casic/service/DeviceDataService.java
+++ b/src/main/java/com/casic/service/DeviceDataService.java
@@ -3,25 +3,18 @@
import com.casic.model.DataReportParam;
import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
+import org.springframework.web.bind.annotation.RequestBody;
/**
* @author cz
* @date 2022
*/
public interface DeviceDataService {
-
/**
*
* @param dataReportParam
* @return
*/
- ResponseData DeviceDataCommit(DataReportParam dataReportParam);
-
- /**
- *
- * @param heartbeatParam
- * @return
- */
- ResponseData heartBeatSave(HeartbeatParam heartbeatParam);
+ ResponseData gasReceiver(DataReportParam dataReportParam);
}
diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
index 93f0685..e473f0c 100644
--- a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
+++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
@@ -1,58 +1,49 @@
package com.casic.service.impl;
-import com.casic.dao.impl.DeviceDataMapper;
+import com.alibaba.druid.util.StringUtils;
+import com.alibaba.fastjson.JSON;
import com.casic.model.*;
import com.casic.service.DeviceDataService;
+import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import java.util.Map;
+
/**
* @author cz
- * @date 2022-6-20
+ * @date 2022-9-26
*/
@Slf4j
@Service
public class DeviceDataServiceImpl implements DeviceDataService {
- @Autowired
- DeviceDataMapper deviceDataMapper;
+ private final NormalDataProcessor normalDataProcessor;
- /**
- * @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;
+ public DeviceDataServiceImpl(NormalDataProcessor normalDataProcessor) {
+ this.normalDataProcessor = normalDataProcessor;
}
- /**
- * @param heartbeatParam
- * @return
- */
- public ResponseData heartBeatSave(HeartbeatParam heartbeatParam) {
+ public ResponseData gasReceiver(DataReportParam dataReportParam) {
ResponseData responseData = new ResponseData();
try {
- deviceDataMapper.editDeviceData(heartbeatParam);
+ Map> updDataMap = new ObjectMapper().convertValue(dataReportParam.getItems(), Map.class);
+ DataContentParam dataContentParam = JSON.parseObject(updDataMap.get("updData").get("value"), DataContentParam.class);
+ Long uptime = Long.valueOf(String.valueOf(updDataMap.get("updData").get("time")));
+ if (StringUtils.isEmpty(dataReportParam.getDeviceName())) {
+ responseData.setCode(200);
+ responseData.setMessage("没有设备编号");
+ return responseData;
+ }
+ normalDataProcessor.normalDataProvider(dataContentParam, uptime, dataReportParam.getDeviceName());
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);
+ log.error("主题:设备数据上报出现错误,异常信息为{}", sqlex);
}
return responseData;
}
diff --git a/src/main/java/com/casic/service/impl/NormalDataProcessor.java b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
new file mode 100644
index 0000000..3f7630a
--- /dev/null
+++ b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
@@ -0,0 +1,164 @@
+package com.casic.service.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmRecordsMapper;
+import com.casic.dao.DataGasMapper;
+import com.casic.dao.impl.AlarmJobDao;
+import com.casic.entity.AlarmJob;
+import com.casic.entity.AlarmRecords;
+import com.casic.entity.DataGasDector;
+import com.casic.model.DataContentParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Component
+public class NormalDataProcessor {
+
+ public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ @Value("${casic.device.gas-dector.type}")
+ private Long deviceType;
+ @Value("${casic.device.gas-dector.minutes}")
+ private String minutes;
+ @Value("${casic.device.gas-dector.enable-local}")
+ private Boolean enableLocal;
+ @Resource
+ private DataGasMapper dataGasMapper;
+ @Autowired
+ private AlarmJobDao alarmJobDao;
+ @Resource
+ private AlarmRecordsMapper alarmRecordsMapper;
+ private static Snowflake snowflake = new Snowflake(0, 2);
+
+ public void normalDataProvider(DataContentParam dataReportParam, Long timeStamp, String devcode) {
+ Map gasMap = dataGasMapper.getWellCode(devcode);
+ if (ObjectUtils.isEmpty(gasMap)) {
+ log.info("没有该设备编号录入" + devcode);
+ if (enableLocal) {
+ return;
+ }
+ }
+ Boolean updateFlag = false;
+ if (ObjectUtils.isEmpty(dataGasMapper.getLastData(minutes, devcode))) {
+ updateFlag = this.saveNormalData(dataReportParam, timeStamp, devcode, gasMap);
+ }
+ this.dataTaskJudge(dataReportParam, devcode, timeStamp, gasMap, updateFlag);
+ return;
+ }
+
+ /**
+ * 自定义时间存库
+ *
+ * @param dataReportParam
+ * @param timeStamp
+ * @param devcode
+ * @param gasMap
+ */
+ private Boolean saveNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap) {
+ Boolean updateFlag = false;
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ List dataReportFilter = dataReportParam.getRtd_val().stream().filter(
+ data -> {
+ return data != -1;
+ }
+ ).collect(Collectors.toList());
+ if (dataReportFilter.size() > 0 && dataReportFilter.get(dataReportFilter.size() - 1) != 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 1);
+ updateFlag = true;
+ } else if (dataReportFilter.get(dataReportFilter.size() - 1) == 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 0);
+ }
+ dataReportFilter.forEach(
+ data -> {
+ if (data != 65535) {
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+ }
+ );
+ return updateFlag;
+ }
+
+ /**
+ * 报警就存库
+ *
+ * @param dataReportParam
+ * @param devcode
+ * @param timeStamp
+ * @param gasMap
+ */
+ private void dataTaskJudge(DataContentParam dataReportParam, String devcode, Long timeStamp, Map gasMap, Boolean updateFlag) {
+ List> alarmLevelList = dataGasMapper.getAlarmLevelList(deviceType);
+ String wellCode = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "";
+ Long deviceId = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? Long.valueOf(String.valueOf(gasMap.get("deviceId"))) : -1;
+ final String gasMsgContent=dataGasMapper.getGasMsgContent(deviceType);
+ dataReportParam.getRtd_val().stream().filter(
+ dataReport -> {
+ return dataReport != -1 && dataReport != 65535;
+ }
+ ).forEach(
+ dataReport -> {
+ for (Map alarmLevelMap : alarmLevelList) {
+ if (dataReport > Float.valueOf(String.valueOf(alarmLevelMap.get("high_value")))) {
+ AlarmRecords alarmRecord = new AlarmRecords();
+ alarmRecord.setId(snowflake.nextId());
+ alarmRecord.setDeviceId(deviceId);
+ alarmRecord.setDevcode(devcode);
+ alarmRecord.setWellCode(wellCode);
+ alarmRecord.setAlarmType("1"); // 业务报警
+ alarmRecord.setAlarmContent("燃气报警");
+ alarmRecord.setAlarmValue(String.valueOf(dataReport));
+ alarmRecord.setAlarmTime(new Date());
+ alarmRecord.setStatus("1");
+ alarmRecord.setAlarmLevel(Integer.valueOf(alarmLevelMap.get("level").toString()));
+ alarmRecord.setAlarmMessage("燃气报警");
+ String jobId = alarmRecordsMapper.isOldAlarmRecord(devcode, "燃气报警");
+ // 超出报警阈值 生成一条报警消息
+ if (!StringUtils.isEmpty(jobId)) {
+ alarmRecordsMapper.updateOldAlarmRecord(devcode, "燃气报警");
+ alarmRecord.setJobId(Long.valueOf(jobId));
+ } else {
+ AlarmJob alarmJob = alarmJobDao.saveData(devcode, wellCode, "RQZD", "1");
+ alarmRecord.setJobId(alarmJob.getId());
+ }
+ alarmRecordsMapper.insert(alarmRecord);
+ if (!updateFlag) {
+ alarmNormalData(dataReportParam, timeStamp, devcode, gasMap, dataReport);
+ }
+ break;
+ }
+ }
+ }
+ );
+ }
+
+ private void alarmNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap, Integer data) {
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+
+}
+
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index fac2afe..f8a06a6 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -1,40 +1,19 @@
server:
- port: 11556
+ port: 11320
################### 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
+ driver-class-name: org.postgresql.Driver
+ url: jdbc:postgresql://111.198.10.15:11209/smartwell_zq_cs
+ 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
- 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
+ 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
index 86411e6..ffc01e9 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -19,18 +19,11 @@
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
+ device:
+ gas-dector:
+ type: 101
+ minutes: 60
+ enable-local: false
+# type 可燃气体的设备类型
+# minutes: 燃气外协设备上传数据的分钟数
\ No newline at end of file
diff --git a/target/classes/application-dev.yml b/target/classes/application-dev.yml
new file mode 100644
index 0000000..fac2afe
--- /dev/null
+++ b/target/classes/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/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh
new file mode 100644
index 0000000..e14c4c7
--- /dev/null
+++ b/src/main/build/bin/start.sh
@@ -0,0 +1,2 @@
+java -jar ./lib/${project.build.finalName}.jar
+
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
index c55e37d..0887f1f 100644
--- a/src/main/java/com/casic/CasicApplication.java
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -3,8 +3,6 @@
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;
/**
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
index e5351c9..be0de6b 100644
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -1,14 +1,19 @@
package com.casic.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.casic.model.DataReportParam;
-import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
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;
+import java.util.Map;
+
+@Slf4j
@RequestMapping("/data")
@RestController
public class DeviceDataController {
@@ -19,19 +24,16 @@
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 String gasReceiver(@RequestBody Map map) {
+// log.info("---------"+JSON.toJSONString(map));
+// return "200";
+// }
@PostMapping("/gas/receiver")
- public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
- return dataService.heartBeatSave(heartbeatParam);
+ public ResponseData gasReceiver(@RequestBody DataReportParam dataReportParam) {
+ log.info("---------"+JSON.toJSONString(dataReportParam));
+ return dataService.gasReceiver(dataReportParam);
}
}
diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java
new file mode 100644
index 0000000..e5e9c8d
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmJobMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmJob;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface AlarmJobMapper extends BaseMapper {
+
+ @Select("SELECT MAX(jobcode) " +
+ "FROM alarm_job " +
+ "WHERE JOBCODE like '${jobcode}%'")
+ String getJobCodeMaxSerial(@Param("jobcode") String jobcode);
+
+}
diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
new file mode 100644
index 0000000..8da7dcb
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmRecords;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface AlarmRecordsMapper extends BaseMapper {
+
+
+ @Select("SELECT JOB_ID AS \"jobId\"\n " +
+ "FROM alarm_records\n " +
+ "WHERE DEVCODE = #{devcode}\n " +
+ "AND ALARM_CONTENT = #{MsgContent}\n " +
+ "AND STATUS='1'\n " +
+ "AND JOB_ID>0 ")
+ String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+
+ @Update(" UPDATE alarm_records\n" +
+ " SET STATUS='0'\n" +
+ " WHERE DEVCODE = #{devcode}\n" +
+ " AND ALARM_CONTENT = #{MsgContent}\n" +
+ " AND STATUS='1'")
+ Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
index 47e7cce..33ce14a 100644
--- a/src/main/java/com/casic/dao/DataGasMapper.java
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -1,9 +1,48 @@
package com.casic.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.casic.entity.DataGasReport;
+import com.casic.entity.DataGasDector;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+import java.util.Map;
@Mapper
-public interface DataGasMapper extends BaseMapper {
+public interface DataGasMapper extends BaseMapper {
+
+ @Select("select bd.id as \"deviceId\",bwi.WELL_CODE AS \"wellCode\" " +
+ "from bus_device_well bdw " +
+ "join (select id from bus_device where devcode=#{devcode}) bd ON bd.id=bdw.device_id " +
+ "join bus_well_info bwi ON bwi.id=bdw.well_id ")
+ Map getWellCode(@Param("devcode") String devcode);
+
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{onlineState} " +
+ "WHERE devcode=#{devcode} ")
+ void setOfflineByDevcode(@Param("devcode") String devcode,
+ @Param("onlineState") Integer onlineState);
+
+ @Select("SELECT level,high_value " +
+ "FROM alarm_level " +
+ "WHERE device_type=#{deviceType} ")
+ List> getAlarmLevelList(@Param("deviceType") Long deviceType);
+
+ @Select("SELECT devcode " +
+ "FROM data_gas_dector " +
+ "WHERE devcode=#{devcode} " +
+ "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+
+ "ORDER BY logtime DESC " +
+ "LIMIT 1")
+ String getLastData(@Param("minutes") String minutes,
+ @Param("devcode") String devcode);
+
+ @Select("SELECT alarm_content" +
+ "FROM BASE_alarm_content_type" +
+ "where device_type=#{deviceType}")
+ String getGasMsgContent(@Param("deviceType")Long deviceType);
+
+
}
diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
new file mode 100644
index 0000000..5131821
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
@@ -0,0 +1,59 @@
+package com.casic.dao.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmJobMapper;
+import com.casic.entity.AlarmJob;
+import org.springframework.stereotype.Component;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Component
+public class AlarmJobDao {
+
+ private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ private static Snowflake snowflake = new Snowflake(0, 2);
+// private static final Sn
+
+ @Resource
+ private AlarmJobMapper alarmJobMapper;
+
+ public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) {
+ AlarmJob alarmJob = new AlarmJob();
+ alarmJob.setId(snowflake.nextId());
+ alarmJob.setDevcode(devCode);
+ alarmJob.setWellCode(wellCode);
+ alarmJob.setJobStatus("0");
+ alarmJob.setCreateTime(new Date());
+ alarmJob.setJobcode(this.produceJobCode(devTypeName));
+ alarmJob.setJobType(jobType);
+ alarmJobMapper.insert(alarmJob);
+ return alarmJob;
+ }
+
+ /**
+ * 前缀+日期+4位流水号
+ *
+ * @param devTypeName
+ * @return
+ */
+ private String produceJobCode(String devTypeName) {
+ String pre = devTypeName;
+ String dataStr = sdf6.format(new Date());
+ String fix = this.getJobCodeMaxSerial(pre + dataStr);
+ return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001";
+ }
+
+
+ private String getJobCodeMaxSerial(String jobcode) {
+ String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode);
+ String fix = "";
+ if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) {
+ fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4);
+ }
+ return fix;
+ }
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
deleted file mode 100644
index c797e55..0000000
--- a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
+++ /dev/null
@@ -1,68 +0,0 @@
-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/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java
new file mode 100644
index 0000000..8a0f764
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmJob.java
@@ -0,0 +1,165 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 报警工单表
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_job")
+public class AlarmJob extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 工单编号
+ */
+ @TableField("JOBCODE")
+ private String jobcode;
+ /**
+ * 工单类型
+ */
+ @TableField("JOG_TYPE")
+ private String jobType;
+ /**
+ * 井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 工单创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+ /**
+ * 工单状态(0待处理,1待确认,2处理中,3完成)
+ */
+ @TableField("JOB_STATUS")
+ private String jobStatus;
+ /**
+ * 接单人员
+ */
+ @TableField("GET_JOB_PERSON")
+ private Long getJobPerson;
+ /**
+ * 接单时间
+ */
+ @TableField("GET_JOB_TIME")
+ private Date getJobTime;
+ /**
+ * 应接单时间
+ */
+ @TableField("SHOULD_GET_TIME")
+ private Date shouldGetTime;
+ /**
+ * 第一现场情况
+ */
+ @TableField("FIRST_STATE")
+ private String firstState;
+ /**
+ * 第一现场照片
+ */
+ @TableField("FIRST_STATE_PHOTOS")
+ private String firstStatePhotos;
+ /**
+ * 确认人员
+ */
+ @TableField("CONFIRM_JOB_PERSON")
+ private Long confirmJobPerson;
+ /**
+ * 确认时间
+ */
+ @TableField("CONFRIM_JOB_TIME")
+ private Date confrimJobTime;
+ /**
+ * 处理人员
+ */
+ @TableField("HANDLE_JOB_Person")
+ private Long handleJobPerson;
+ /**
+ * 处理时间
+ */
+ @TableField("HANDLE_JOB_TIME")
+ private Date handleJobTime;
+ /**
+ * 维护情况记录
+ */
+ @TableField("HANDLE_MESSAGE")
+ private String handleMessage;
+ /**
+ * 维护图片
+ */
+ @TableField("HANDLE_PHOTOS")
+ private String handlePhotos;
+ /**
+ * 工单流转记录
+ */
+ @TableField("FLOW")
+ private String flow;
+
+ @TableField("JOB_BELONG_TO")
+ private Long jobBelongTo;
+
+ @TableField("JOB_FLAG_DELAY")
+ private String jobFlagDelay;
+
+ @TableField("JOB_FLAG_1")
+ private String jobFlag1;
+
+ @TableField(exist = false)
+ private String alarmValue;
+
+ @TableField(exist = false)
+ private String alarmContentName;
+
+ @TableField(exist = false)
+ private Integer recordId;
+
+ @Override
+ public String toString() {
+ return "AlarmJob{" +
+ "id=" + id +
+ ", jobcode=" + jobcode +
+ ", jogType=" + jobType +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", createTime=" + createTime +
+ ", jobStatus=" + jobStatus +
+ ", getJobPerson=" + getJobPerson +
+ ", getJobTime=" + getJobTime +
+ ", firstState=" + firstState +
+ ", firstStatePhotos=" + firstStatePhotos +
+ ", confirmJobPerson=" + confirmJobPerson +
+ ", confrimJobTime=" + confrimJobTime +
+ ", handleJobPerson=" + handleJobPerson +
+ ", handleJobTime=" + handleJobTime +
+ ", handleMessage=" + handleMessage +
+ ", handlePhotos=" + handlePhotos +
+ ", flow=" + flow +
+ ", recordId=" + recordId +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java
new file mode 100644
index 0000000..88b0b26
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmRecords.java
@@ -0,0 +1,108 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ *
+ *
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_records")
+public class AlarmRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 设备ID
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 闸井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 告警类型
+ */
+ @TableField("ALARM_TYPE")
+ private String alarmType;
+ /**
+ * 告警内容
+ */
+ @TableField("ALARM_CONTENT")
+ private String alarmContent;
+ /**
+ * 告警数值
+ */
+ @TableField("ALARM_VALUE")
+ private String alarmValue;
+ /**
+ * 告警等级
+ */
+ @TableField("ALARM_LEVEL")
+ private Integer alarmLevel;
+ /**
+ * 告警详情
+ */
+ @TableField("ALARM_MSG")
+ private String alarmMessage;
+ /**
+ * 告警时间
+ */
+ @TableField("ALARM_TIME")
+ private Date alarmTime;
+ /**
+ * 告警状态
+ */
+ @TableField("STATUS")
+ private String status;
+ /**
+ * 工单编号
+ */
+ @TableField("JOB_ID")
+ private Long jobId;
+
+ @TableField(exist = false)
+ private Integer jobStatus;
+
+ @Override
+ public String toString() {
+ return "AlarmRecords{" +
+ "id=" + id +
+ ", deviceId=" + deviceId +
+ ", devcode=" + devcode +
+ ", wellCode=" + wellCode +
+ ", alarmType=" + alarmType +
+ ", alarmContent=" + alarmContent +
+ ", alarmValue=" + alarmValue +
+ ", alarmLevel=" + alarmLevel +
+ ", alarmMessage=" + alarmMessage +
+ ", alarmTime=" + alarmTime +
+ ", status=" + status +
+ ", jobId=" + jobId +
+ ", jobStatus=" + jobStatus +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/DataGasDector.java b/src/main/java/com/casic/entity/DataGasDector.java
new file mode 100644
index 0000000..537789a
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasDector.java
@@ -0,0 +1,42 @@
+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 DataGasDector {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ private String devcode;
+ private String wellCode;
+ private String strength;
+
+ private String descn;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
deleted file mode 100644
index c43ccdf..0000000
--- a/src/main/java/com/casic/entity/DataGasReport.java
+++ /dev/null
@@ -1,69 +0,0 @@
-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/entity/DeviceSatatus.java b/src/main/java/com/casic/entity/DeviceSatatus.java
new file mode 100644
index 0000000..bab7903
--- /dev/null
+++ b/src/main/java/com/casic/entity/DeviceSatatus.java
@@ -0,0 +1,19 @@
+package com.casic.entity;
+
+import lombok.Data;
+
+/**
+ * 不使用了
+ *
+ */
+@Data
+public class DeviceSatatus {
+ private String deviceId;
+ private String cell;
+ private String cellTs;
+ private String onlineState;
+ private String onlineTs;
+ private String lastDataId;
+ private String lastDataJson;
+ private String lastDataTs;
+}
diff --git a/src/main/java/com/casic/model/DataContentParam.java b/src/main/java/com/casic/model/DataContentParam.java
new file mode 100644
index 0000000..46d298a
--- /dev/null
+++ b/src/main/java/com/casic/model/DataContentParam.java
@@ -0,0 +1,19 @@
+package com.casic.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DataContentParam {
+ private String msg_type;
+ private String error_val;
+ private String ch_cnt;
+ private String erro_cnt;
+ private String alarm_low_cnt;
+ private String alarm_high_cnt;
+ private String offline_cnt;
+ private List rtd_val;
+ private List adc_val;
+ private List status_val;
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/model/DataReportParam.java b/src/main/java/com/casic/model/DataReportParam.java
index 082814c..754f330 100644
--- a/src/main/java/com/casic/model/DataReportParam.java
+++ b/src/main/java/com/casic/model/DataReportParam.java
@@ -11,25 +11,12 @@
*/
@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;
+ private String iotId;
+ private String requestId;
+ private Object checkFailedData;
+ private String productKey;
+ private String gmtCreate;
+ private String deviceName;
+ private Object items;
}
diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java
index d883fe4..457d710 100644
--- a/src/main/java/com/casic/service/DeviceDataService.java
+++ b/src/main/java/com/casic/service/DeviceDataService.java
@@ -3,25 +3,18 @@
import com.casic.model.DataReportParam;
import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
+import org.springframework.web.bind.annotation.RequestBody;
/**
* @author cz
* @date 2022
*/
public interface DeviceDataService {
-
/**
*
* @param dataReportParam
* @return
*/
- ResponseData DeviceDataCommit(DataReportParam dataReportParam);
-
- /**
- *
- * @param heartbeatParam
- * @return
- */
- ResponseData heartBeatSave(HeartbeatParam heartbeatParam);
+ ResponseData gasReceiver(DataReportParam dataReportParam);
}
diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
index 93f0685..e473f0c 100644
--- a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
+++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
@@ -1,58 +1,49 @@
package com.casic.service.impl;
-import com.casic.dao.impl.DeviceDataMapper;
+import com.alibaba.druid.util.StringUtils;
+import com.alibaba.fastjson.JSON;
import com.casic.model.*;
import com.casic.service.DeviceDataService;
+import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import java.util.Map;
+
/**
* @author cz
- * @date 2022-6-20
+ * @date 2022-9-26
*/
@Slf4j
@Service
public class DeviceDataServiceImpl implements DeviceDataService {
- @Autowired
- DeviceDataMapper deviceDataMapper;
+ private final NormalDataProcessor normalDataProcessor;
- /**
- * @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;
+ public DeviceDataServiceImpl(NormalDataProcessor normalDataProcessor) {
+ this.normalDataProcessor = normalDataProcessor;
}
- /**
- * @param heartbeatParam
- * @return
- */
- public ResponseData heartBeatSave(HeartbeatParam heartbeatParam) {
+ public ResponseData gasReceiver(DataReportParam dataReportParam) {
ResponseData responseData = new ResponseData();
try {
- deviceDataMapper.editDeviceData(heartbeatParam);
+ Map> updDataMap = new ObjectMapper().convertValue(dataReportParam.getItems(), Map.class);
+ DataContentParam dataContentParam = JSON.parseObject(updDataMap.get("updData").get("value"), DataContentParam.class);
+ Long uptime = Long.valueOf(String.valueOf(updDataMap.get("updData").get("time")));
+ if (StringUtils.isEmpty(dataReportParam.getDeviceName())) {
+ responseData.setCode(200);
+ responseData.setMessage("没有设备编号");
+ return responseData;
+ }
+ normalDataProcessor.normalDataProvider(dataContentParam, uptime, dataReportParam.getDeviceName());
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);
+ log.error("主题:设备数据上报出现错误,异常信息为{}", sqlex);
}
return responseData;
}
diff --git a/src/main/java/com/casic/service/impl/NormalDataProcessor.java b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
new file mode 100644
index 0000000..3f7630a
--- /dev/null
+++ b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
@@ -0,0 +1,164 @@
+package com.casic.service.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmRecordsMapper;
+import com.casic.dao.DataGasMapper;
+import com.casic.dao.impl.AlarmJobDao;
+import com.casic.entity.AlarmJob;
+import com.casic.entity.AlarmRecords;
+import com.casic.entity.DataGasDector;
+import com.casic.model.DataContentParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Component
+public class NormalDataProcessor {
+
+ public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ @Value("${casic.device.gas-dector.type}")
+ private Long deviceType;
+ @Value("${casic.device.gas-dector.minutes}")
+ private String minutes;
+ @Value("${casic.device.gas-dector.enable-local}")
+ private Boolean enableLocal;
+ @Resource
+ private DataGasMapper dataGasMapper;
+ @Autowired
+ private AlarmJobDao alarmJobDao;
+ @Resource
+ private AlarmRecordsMapper alarmRecordsMapper;
+ private static Snowflake snowflake = new Snowflake(0, 2);
+
+ public void normalDataProvider(DataContentParam dataReportParam, Long timeStamp, String devcode) {
+ Map gasMap = dataGasMapper.getWellCode(devcode);
+ if (ObjectUtils.isEmpty(gasMap)) {
+ log.info("没有该设备编号录入" + devcode);
+ if (enableLocal) {
+ return;
+ }
+ }
+ Boolean updateFlag = false;
+ if (ObjectUtils.isEmpty(dataGasMapper.getLastData(minutes, devcode))) {
+ updateFlag = this.saveNormalData(dataReportParam, timeStamp, devcode, gasMap);
+ }
+ this.dataTaskJudge(dataReportParam, devcode, timeStamp, gasMap, updateFlag);
+ return;
+ }
+
+ /**
+ * 自定义时间存库
+ *
+ * @param dataReportParam
+ * @param timeStamp
+ * @param devcode
+ * @param gasMap
+ */
+ private Boolean saveNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap) {
+ Boolean updateFlag = false;
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ List dataReportFilter = dataReportParam.getRtd_val().stream().filter(
+ data -> {
+ return data != -1;
+ }
+ ).collect(Collectors.toList());
+ if (dataReportFilter.size() > 0 && dataReportFilter.get(dataReportFilter.size() - 1) != 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 1);
+ updateFlag = true;
+ } else if (dataReportFilter.get(dataReportFilter.size() - 1) == 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 0);
+ }
+ dataReportFilter.forEach(
+ data -> {
+ if (data != 65535) {
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+ }
+ );
+ return updateFlag;
+ }
+
+ /**
+ * 报警就存库
+ *
+ * @param dataReportParam
+ * @param devcode
+ * @param timeStamp
+ * @param gasMap
+ */
+ private void dataTaskJudge(DataContentParam dataReportParam, String devcode, Long timeStamp, Map gasMap, Boolean updateFlag) {
+ List> alarmLevelList = dataGasMapper.getAlarmLevelList(deviceType);
+ String wellCode = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "";
+ Long deviceId = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? Long.valueOf(String.valueOf(gasMap.get("deviceId"))) : -1;
+ final String gasMsgContent=dataGasMapper.getGasMsgContent(deviceType);
+ dataReportParam.getRtd_val().stream().filter(
+ dataReport -> {
+ return dataReport != -1 && dataReport != 65535;
+ }
+ ).forEach(
+ dataReport -> {
+ for (Map alarmLevelMap : alarmLevelList) {
+ if (dataReport > Float.valueOf(String.valueOf(alarmLevelMap.get("high_value")))) {
+ AlarmRecords alarmRecord = new AlarmRecords();
+ alarmRecord.setId(snowflake.nextId());
+ alarmRecord.setDeviceId(deviceId);
+ alarmRecord.setDevcode(devcode);
+ alarmRecord.setWellCode(wellCode);
+ alarmRecord.setAlarmType("1"); // 业务报警
+ alarmRecord.setAlarmContent("燃气报警");
+ alarmRecord.setAlarmValue(String.valueOf(dataReport));
+ alarmRecord.setAlarmTime(new Date());
+ alarmRecord.setStatus("1");
+ alarmRecord.setAlarmLevel(Integer.valueOf(alarmLevelMap.get("level").toString()));
+ alarmRecord.setAlarmMessage("燃气报警");
+ String jobId = alarmRecordsMapper.isOldAlarmRecord(devcode, "燃气报警");
+ // 超出报警阈值 生成一条报警消息
+ if (!StringUtils.isEmpty(jobId)) {
+ alarmRecordsMapper.updateOldAlarmRecord(devcode, "燃气报警");
+ alarmRecord.setJobId(Long.valueOf(jobId));
+ } else {
+ AlarmJob alarmJob = alarmJobDao.saveData(devcode, wellCode, "RQZD", "1");
+ alarmRecord.setJobId(alarmJob.getId());
+ }
+ alarmRecordsMapper.insert(alarmRecord);
+ if (!updateFlag) {
+ alarmNormalData(dataReportParam, timeStamp, devcode, gasMap, dataReport);
+ }
+ break;
+ }
+ }
+ }
+ );
+ }
+
+ private void alarmNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap, Integer data) {
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+
+}
+
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index fac2afe..f8a06a6 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -1,40 +1,19 @@
server:
- port: 11556
+ port: 11320
################### 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
+ driver-class-name: org.postgresql.Driver
+ url: jdbc:postgresql://111.198.10.15:11209/smartwell_zq_cs
+ 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
- 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
+ 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
index 86411e6..ffc01e9 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -19,18 +19,11 @@
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
+ device:
+ gas-dector:
+ type: 101
+ minutes: 60
+ enable-local: false
+# type 可燃气体的设备类型
+# minutes: 燃气外协设备上传数据的分钟数
\ No newline at end of file
diff --git a/target/classes/application-dev.yml b/target/classes/application-dev.yml
new file mode 100644
index 0000000..fac2afe
--- /dev/null
+++ b/target/classes/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/target/classes/application-postgre.yml b/target/classes/application-postgre.yml
new file mode 100644
index 0000000..2b7f69c
--- /dev/null
+++ b/target/classes/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/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh
new file mode 100644
index 0000000..e14c4c7
--- /dev/null
+++ b/src/main/build/bin/start.sh
@@ -0,0 +1,2 @@
+java -jar ./lib/${project.build.finalName}.jar
+
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
index c55e37d..0887f1f 100644
--- a/src/main/java/com/casic/CasicApplication.java
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -3,8 +3,6 @@
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;
/**
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
index e5351c9..be0de6b 100644
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -1,14 +1,19 @@
package com.casic.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.casic.model.DataReportParam;
-import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
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;
+import java.util.Map;
+
+@Slf4j
@RequestMapping("/data")
@RestController
public class DeviceDataController {
@@ -19,19 +24,16 @@
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 String gasReceiver(@RequestBody Map map) {
+// log.info("---------"+JSON.toJSONString(map));
+// return "200";
+// }
@PostMapping("/gas/receiver")
- public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
- return dataService.heartBeatSave(heartbeatParam);
+ public ResponseData gasReceiver(@RequestBody DataReportParam dataReportParam) {
+ log.info("---------"+JSON.toJSONString(dataReportParam));
+ return dataService.gasReceiver(dataReportParam);
}
}
diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java
new file mode 100644
index 0000000..e5e9c8d
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmJobMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmJob;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface AlarmJobMapper extends BaseMapper {
+
+ @Select("SELECT MAX(jobcode) " +
+ "FROM alarm_job " +
+ "WHERE JOBCODE like '${jobcode}%'")
+ String getJobCodeMaxSerial(@Param("jobcode") String jobcode);
+
+}
diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
new file mode 100644
index 0000000..8da7dcb
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmRecords;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface AlarmRecordsMapper extends BaseMapper {
+
+
+ @Select("SELECT JOB_ID AS \"jobId\"\n " +
+ "FROM alarm_records\n " +
+ "WHERE DEVCODE = #{devcode}\n " +
+ "AND ALARM_CONTENT = #{MsgContent}\n " +
+ "AND STATUS='1'\n " +
+ "AND JOB_ID>0 ")
+ String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+
+ @Update(" UPDATE alarm_records\n" +
+ " SET STATUS='0'\n" +
+ " WHERE DEVCODE = #{devcode}\n" +
+ " AND ALARM_CONTENT = #{MsgContent}\n" +
+ " AND STATUS='1'")
+ Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
index 47e7cce..33ce14a 100644
--- a/src/main/java/com/casic/dao/DataGasMapper.java
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -1,9 +1,48 @@
package com.casic.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.casic.entity.DataGasReport;
+import com.casic.entity.DataGasDector;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+import java.util.Map;
@Mapper
-public interface DataGasMapper extends BaseMapper {
+public interface DataGasMapper extends BaseMapper {
+
+ @Select("select bd.id as \"deviceId\",bwi.WELL_CODE AS \"wellCode\" " +
+ "from bus_device_well bdw " +
+ "join (select id from bus_device where devcode=#{devcode}) bd ON bd.id=bdw.device_id " +
+ "join bus_well_info bwi ON bwi.id=bdw.well_id ")
+ Map getWellCode(@Param("devcode") String devcode);
+
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{onlineState} " +
+ "WHERE devcode=#{devcode} ")
+ void setOfflineByDevcode(@Param("devcode") String devcode,
+ @Param("onlineState") Integer onlineState);
+
+ @Select("SELECT level,high_value " +
+ "FROM alarm_level " +
+ "WHERE device_type=#{deviceType} ")
+ List> getAlarmLevelList(@Param("deviceType") Long deviceType);
+
+ @Select("SELECT devcode " +
+ "FROM data_gas_dector " +
+ "WHERE devcode=#{devcode} " +
+ "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+
+ "ORDER BY logtime DESC " +
+ "LIMIT 1")
+ String getLastData(@Param("minutes") String minutes,
+ @Param("devcode") String devcode);
+
+ @Select("SELECT alarm_content" +
+ "FROM BASE_alarm_content_type" +
+ "where device_type=#{deviceType}")
+ String getGasMsgContent(@Param("deviceType")Long deviceType);
+
+
}
diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
new file mode 100644
index 0000000..5131821
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
@@ -0,0 +1,59 @@
+package com.casic.dao.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmJobMapper;
+import com.casic.entity.AlarmJob;
+import org.springframework.stereotype.Component;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Component
+public class AlarmJobDao {
+
+ private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ private static Snowflake snowflake = new Snowflake(0, 2);
+// private static final Sn
+
+ @Resource
+ private AlarmJobMapper alarmJobMapper;
+
+ public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) {
+ AlarmJob alarmJob = new AlarmJob();
+ alarmJob.setId(snowflake.nextId());
+ alarmJob.setDevcode(devCode);
+ alarmJob.setWellCode(wellCode);
+ alarmJob.setJobStatus("0");
+ alarmJob.setCreateTime(new Date());
+ alarmJob.setJobcode(this.produceJobCode(devTypeName));
+ alarmJob.setJobType(jobType);
+ alarmJobMapper.insert(alarmJob);
+ return alarmJob;
+ }
+
+ /**
+ * 前缀+日期+4位流水号
+ *
+ * @param devTypeName
+ * @return
+ */
+ private String produceJobCode(String devTypeName) {
+ String pre = devTypeName;
+ String dataStr = sdf6.format(new Date());
+ String fix = this.getJobCodeMaxSerial(pre + dataStr);
+ return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001";
+ }
+
+
+ private String getJobCodeMaxSerial(String jobcode) {
+ String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode);
+ String fix = "";
+ if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) {
+ fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4);
+ }
+ return fix;
+ }
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
deleted file mode 100644
index c797e55..0000000
--- a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
+++ /dev/null
@@ -1,68 +0,0 @@
-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/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java
new file mode 100644
index 0000000..8a0f764
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmJob.java
@@ -0,0 +1,165 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 报警工单表
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_job")
+public class AlarmJob extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 工单编号
+ */
+ @TableField("JOBCODE")
+ private String jobcode;
+ /**
+ * 工单类型
+ */
+ @TableField("JOG_TYPE")
+ private String jobType;
+ /**
+ * 井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 工单创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+ /**
+ * 工单状态(0待处理,1待确认,2处理中,3完成)
+ */
+ @TableField("JOB_STATUS")
+ private String jobStatus;
+ /**
+ * 接单人员
+ */
+ @TableField("GET_JOB_PERSON")
+ private Long getJobPerson;
+ /**
+ * 接单时间
+ */
+ @TableField("GET_JOB_TIME")
+ private Date getJobTime;
+ /**
+ * 应接单时间
+ */
+ @TableField("SHOULD_GET_TIME")
+ private Date shouldGetTime;
+ /**
+ * 第一现场情况
+ */
+ @TableField("FIRST_STATE")
+ private String firstState;
+ /**
+ * 第一现场照片
+ */
+ @TableField("FIRST_STATE_PHOTOS")
+ private String firstStatePhotos;
+ /**
+ * 确认人员
+ */
+ @TableField("CONFIRM_JOB_PERSON")
+ private Long confirmJobPerson;
+ /**
+ * 确认时间
+ */
+ @TableField("CONFRIM_JOB_TIME")
+ private Date confrimJobTime;
+ /**
+ * 处理人员
+ */
+ @TableField("HANDLE_JOB_Person")
+ private Long handleJobPerson;
+ /**
+ * 处理时间
+ */
+ @TableField("HANDLE_JOB_TIME")
+ private Date handleJobTime;
+ /**
+ * 维护情况记录
+ */
+ @TableField("HANDLE_MESSAGE")
+ private String handleMessage;
+ /**
+ * 维护图片
+ */
+ @TableField("HANDLE_PHOTOS")
+ private String handlePhotos;
+ /**
+ * 工单流转记录
+ */
+ @TableField("FLOW")
+ private String flow;
+
+ @TableField("JOB_BELONG_TO")
+ private Long jobBelongTo;
+
+ @TableField("JOB_FLAG_DELAY")
+ private String jobFlagDelay;
+
+ @TableField("JOB_FLAG_1")
+ private String jobFlag1;
+
+ @TableField(exist = false)
+ private String alarmValue;
+
+ @TableField(exist = false)
+ private String alarmContentName;
+
+ @TableField(exist = false)
+ private Integer recordId;
+
+ @Override
+ public String toString() {
+ return "AlarmJob{" +
+ "id=" + id +
+ ", jobcode=" + jobcode +
+ ", jogType=" + jobType +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", createTime=" + createTime +
+ ", jobStatus=" + jobStatus +
+ ", getJobPerson=" + getJobPerson +
+ ", getJobTime=" + getJobTime +
+ ", firstState=" + firstState +
+ ", firstStatePhotos=" + firstStatePhotos +
+ ", confirmJobPerson=" + confirmJobPerson +
+ ", confrimJobTime=" + confrimJobTime +
+ ", handleJobPerson=" + handleJobPerson +
+ ", handleJobTime=" + handleJobTime +
+ ", handleMessage=" + handleMessage +
+ ", handlePhotos=" + handlePhotos +
+ ", flow=" + flow +
+ ", recordId=" + recordId +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java
new file mode 100644
index 0000000..88b0b26
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmRecords.java
@@ -0,0 +1,108 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ *
+ *
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_records")
+public class AlarmRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 设备ID
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 闸井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 告警类型
+ */
+ @TableField("ALARM_TYPE")
+ private String alarmType;
+ /**
+ * 告警内容
+ */
+ @TableField("ALARM_CONTENT")
+ private String alarmContent;
+ /**
+ * 告警数值
+ */
+ @TableField("ALARM_VALUE")
+ private String alarmValue;
+ /**
+ * 告警等级
+ */
+ @TableField("ALARM_LEVEL")
+ private Integer alarmLevel;
+ /**
+ * 告警详情
+ */
+ @TableField("ALARM_MSG")
+ private String alarmMessage;
+ /**
+ * 告警时间
+ */
+ @TableField("ALARM_TIME")
+ private Date alarmTime;
+ /**
+ * 告警状态
+ */
+ @TableField("STATUS")
+ private String status;
+ /**
+ * 工单编号
+ */
+ @TableField("JOB_ID")
+ private Long jobId;
+
+ @TableField(exist = false)
+ private Integer jobStatus;
+
+ @Override
+ public String toString() {
+ return "AlarmRecords{" +
+ "id=" + id +
+ ", deviceId=" + deviceId +
+ ", devcode=" + devcode +
+ ", wellCode=" + wellCode +
+ ", alarmType=" + alarmType +
+ ", alarmContent=" + alarmContent +
+ ", alarmValue=" + alarmValue +
+ ", alarmLevel=" + alarmLevel +
+ ", alarmMessage=" + alarmMessage +
+ ", alarmTime=" + alarmTime +
+ ", status=" + status +
+ ", jobId=" + jobId +
+ ", jobStatus=" + jobStatus +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/DataGasDector.java b/src/main/java/com/casic/entity/DataGasDector.java
new file mode 100644
index 0000000..537789a
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasDector.java
@@ -0,0 +1,42 @@
+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 DataGasDector {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ private String devcode;
+ private String wellCode;
+ private String strength;
+
+ private String descn;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
deleted file mode 100644
index c43ccdf..0000000
--- a/src/main/java/com/casic/entity/DataGasReport.java
+++ /dev/null
@@ -1,69 +0,0 @@
-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/entity/DeviceSatatus.java b/src/main/java/com/casic/entity/DeviceSatatus.java
new file mode 100644
index 0000000..bab7903
--- /dev/null
+++ b/src/main/java/com/casic/entity/DeviceSatatus.java
@@ -0,0 +1,19 @@
+package com.casic.entity;
+
+import lombok.Data;
+
+/**
+ * 不使用了
+ *
+ */
+@Data
+public class DeviceSatatus {
+ private String deviceId;
+ private String cell;
+ private String cellTs;
+ private String onlineState;
+ private String onlineTs;
+ private String lastDataId;
+ private String lastDataJson;
+ private String lastDataTs;
+}
diff --git a/src/main/java/com/casic/model/DataContentParam.java b/src/main/java/com/casic/model/DataContentParam.java
new file mode 100644
index 0000000..46d298a
--- /dev/null
+++ b/src/main/java/com/casic/model/DataContentParam.java
@@ -0,0 +1,19 @@
+package com.casic.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DataContentParam {
+ private String msg_type;
+ private String error_val;
+ private String ch_cnt;
+ private String erro_cnt;
+ private String alarm_low_cnt;
+ private String alarm_high_cnt;
+ private String offline_cnt;
+ private List rtd_val;
+ private List adc_val;
+ private List status_val;
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/model/DataReportParam.java b/src/main/java/com/casic/model/DataReportParam.java
index 082814c..754f330 100644
--- a/src/main/java/com/casic/model/DataReportParam.java
+++ b/src/main/java/com/casic/model/DataReportParam.java
@@ -11,25 +11,12 @@
*/
@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;
+ private String iotId;
+ private String requestId;
+ private Object checkFailedData;
+ private String productKey;
+ private String gmtCreate;
+ private String deviceName;
+ private Object items;
}
diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java
index d883fe4..457d710 100644
--- a/src/main/java/com/casic/service/DeviceDataService.java
+++ b/src/main/java/com/casic/service/DeviceDataService.java
@@ -3,25 +3,18 @@
import com.casic.model.DataReportParam;
import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
+import org.springframework.web.bind.annotation.RequestBody;
/**
* @author cz
* @date 2022
*/
public interface DeviceDataService {
-
/**
*
* @param dataReportParam
* @return
*/
- ResponseData DeviceDataCommit(DataReportParam dataReportParam);
-
- /**
- *
- * @param heartbeatParam
- * @return
- */
- ResponseData heartBeatSave(HeartbeatParam heartbeatParam);
+ ResponseData gasReceiver(DataReportParam dataReportParam);
}
diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
index 93f0685..e473f0c 100644
--- a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
+++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
@@ -1,58 +1,49 @@
package com.casic.service.impl;
-import com.casic.dao.impl.DeviceDataMapper;
+import com.alibaba.druid.util.StringUtils;
+import com.alibaba.fastjson.JSON;
import com.casic.model.*;
import com.casic.service.DeviceDataService;
+import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import java.util.Map;
+
/**
* @author cz
- * @date 2022-6-20
+ * @date 2022-9-26
*/
@Slf4j
@Service
public class DeviceDataServiceImpl implements DeviceDataService {
- @Autowired
- DeviceDataMapper deviceDataMapper;
+ private final NormalDataProcessor normalDataProcessor;
- /**
- * @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;
+ public DeviceDataServiceImpl(NormalDataProcessor normalDataProcessor) {
+ this.normalDataProcessor = normalDataProcessor;
}
- /**
- * @param heartbeatParam
- * @return
- */
- public ResponseData heartBeatSave(HeartbeatParam heartbeatParam) {
+ public ResponseData gasReceiver(DataReportParam dataReportParam) {
ResponseData responseData = new ResponseData();
try {
- deviceDataMapper.editDeviceData(heartbeatParam);
+ Map> updDataMap = new ObjectMapper().convertValue(dataReportParam.getItems(), Map.class);
+ DataContentParam dataContentParam = JSON.parseObject(updDataMap.get("updData").get("value"), DataContentParam.class);
+ Long uptime = Long.valueOf(String.valueOf(updDataMap.get("updData").get("time")));
+ if (StringUtils.isEmpty(dataReportParam.getDeviceName())) {
+ responseData.setCode(200);
+ responseData.setMessage("没有设备编号");
+ return responseData;
+ }
+ normalDataProcessor.normalDataProvider(dataContentParam, uptime, dataReportParam.getDeviceName());
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);
+ log.error("主题:设备数据上报出现错误,异常信息为{}", sqlex);
}
return responseData;
}
diff --git a/src/main/java/com/casic/service/impl/NormalDataProcessor.java b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
new file mode 100644
index 0000000..3f7630a
--- /dev/null
+++ b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
@@ -0,0 +1,164 @@
+package com.casic.service.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmRecordsMapper;
+import com.casic.dao.DataGasMapper;
+import com.casic.dao.impl.AlarmJobDao;
+import com.casic.entity.AlarmJob;
+import com.casic.entity.AlarmRecords;
+import com.casic.entity.DataGasDector;
+import com.casic.model.DataContentParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Component
+public class NormalDataProcessor {
+
+ public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ @Value("${casic.device.gas-dector.type}")
+ private Long deviceType;
+ @Value("${casic.device.gas-dector.minutes}")
+ private String minutes;
+ @Value("${casic.device.gas-dector.enable-local}")
+ private Boolean enableLocal;
+ @Resource
+ private DataGasMapper dataGasMapper;
+ @Autowired
+ private AlarmJobDao alarmJobDao;
+ @Resource
+ private AlarmRecordsMapper alarmRecordsMapper;
+ private static Snowflake snowflake = new Snowflake(0, 2);
+
+ public void normalDataProvider(DataContentParam dataReportParam, Long timeStamp, String devcode) {
+ Map gasMap = dataGasMapper.getWellCode(devcode);
+ if (ObjectUtils.isEmpty(gasMap)) {
+ log.info("没有该设备编号录入" + devcode);
+ if (enableLocal) {
+ return;
+ }
+ }
+ Boolean updateFlag = false;
+ if (ObjectUtils.isEmpty(dataGasMapper.getLastData(minutes, devcode))) {
+ updateFlag = this.saveNormalData(dataReportParam, timeStamp, devcode, gasMap);
+ }
+ this.dataTaskJudge(dataReportParam, devcode, timeStamp, gasMap, updateFlag);
+ return;
+ }
+
+ /**
+ * 自定义时间存库
+ *
+ * @param dataReportParam
+ * @param timeStamp
+ * @param devcode
+ * @param gasMap
+ */
+ private Boolean saveNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap) {
+ Boolean updateFlag = false;
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ List dataReportFilter = dataReportParam.getRtd_val().stream().filter(
+ data -> {
+ return data != -1;
+ }
+ ).collect(Collectors.toList());
+ if (dataReportFilter.size() > 0 && dataReportFilter.get(dataReportFilter.size() - 1) != 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 1);
+ updateFlag = true;
+ } else if (dataReportFilter.get(dataReportFilter.size() - 1) == 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 0);
+ }
+ dataReportFilter.forEach(
+ data -> {
+ if (data != 65535) {
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+ }
+ );
+ return updateFlag;
+ }
+
+ /**
+ * 报警就存库
+ *
+ * @param dataReportParam
+ * @param devcode
+ * @param timeStamp
+ * @param gasMap
+ */
+ private void dataTaskJudge(DataContentParam dataReportParam, String devcode, Long timeStamp, Map gasMap, Boolean updateFlag) {
+ List> alarmLevelList = dataGasMapper.getAlarmLevelList(deviceType);
+ String wellCode = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "";
+ Long deviceId = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? Long.valueOf(String.valueOf(gasMap.get("deviceId"))) : -1;
+ final String gasMsgContent=dataGasMapper.getGasMsgContent(deviceType);
+ dataReportParam.getRtd_val().stream().filter(
+ dataReport -> {
+ return dataReport != -1 && dataReport != 65535;
+ }
+ ).forEach(
+ dataReport -> {
+ for (Map alarmLevelMap : alarmLevelList) {
+ if (dataReport > Float.valueOf(String.valueOf(alarmLevelMap.get("high_value")))) {
+ AlarmRecords alarmRecord = new AlarmRecords();
+ alarmRecord.setId(snowflake.nextId());
+ alarmRecord.setDeviceId(deviceId);
+ alarmRecord.setDevcode(devcode);
+ alarmRecord.setWellCode(wellCode);
+ alarmRecord.setAlarmType("1"); // 业务报警
+ alarmRecord.setAlarmContent("燃气报警");
+ alarmRecord.setAlarmValue(String.valueOf(dataReport));
+ alarmRecord.setAlarmTime(new Date());
+ alarmRecord.setStatus("1");
+ alarmRecord.setAlarmLevel(Integer.valueOf(alarmLevelMap.get("level").toString()));
+ alarmRecord.setAlarmMessage("燃气报警");
+ String jobId = alarmRecordsMapper.isOldAlarmRecord(devcode, "燃气报警");
+ // 超出报警阈值 生成一条报警消息
+ if (!StringUtils.isEmpty(jobId)) {
+ alarmRecordsMapper.updateOldAlarmRecord(devcode, "燃气报警");
+ alarmRecord.setJobId(Long.valueOf(jobId));
+ } else {
+ AlarmJob alarmJob = alarmJobDao.saveData(devcode, wellCode, "RQZD", "1");
+ alarmRecord.setJobId(alarmJob.getId());
+ }
+ alarmRecordsMapper.insert(alarmRecord);
+ if (!updateFlag) {
+ alarmNormalData(dataReportParam, timeStamp, devcode, gasMap, dataReport);
+ }
+ break;
+ }
+ }
+ }
+ );
+ }
+
+ private void alarmNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap, Integer data) {
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+
+}
+
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index fac2afe..f8a06a6 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -1,40 +1,19 @@
server:
- port: 11556
+ port: 11320
################### 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
+ driver-class-name: org.postgresql.Driver
+ url: jdbc:postgresql://111.198.10.15:11209/smartwell_zq_cs
+ 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
- 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
+ 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
index 86411e6..ffc01e9 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -19,18 +19,11 @@
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
+ device:
+ gas-dector:
+ type: 101
+ minutes: 60
+ enable-local: false
+# type 可燃气体的设备类型
+# minutes: 燃气外协设备上传数据的分钟数
\ No newline at end of file
diff --git a/target/classes/application-dev.yml b/target/classes/application-dev.yml
new file mode 100644
index 0000000..fac2afe
--- /dev/null
+++ b/target/classes/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/target/classes/application-postgre.yml b/target/classes/application-postgre.yml
new file mode 100644
index 0000000..2b7f69c
--- /dev/null
+++ b/target/classes/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/target/classes/application.yml b/target/classes/application.yml
new file mode 100644
index 0000000..86411e6
--- /dev/null
+++ b/target/classes/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
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh
new file mode 100644
index 0000000..e14c4c7
--- /dev/null
+++ b/src/main/build/bin/start.sh
@@ -0,0 +1,2 @@
+java -jar ./lib/${project.build.finalName}.jar
+
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
index c55e37d..0887f1f 100644
--- a/src/main/java/com/casic/CasicApplication.java
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -3,8 +3,6 @@
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;
/**
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
index e5351c9..be0de6b 100644
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -1,14 +1,19 @@
package com.casic.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.casic.model.DataReportParam;
-import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
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;
+import java.util.Map;
+
+@Slf4j
@RequestMapping("/data")
@RestController
public class DeviceDataController {
@@ -19,19 +24,16 @@
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 String gasReceiver(@RequestBody Map map) {
+// log.info("---------"+JSON.toJSONString(map));
+// return "200";
+// }
@PostMapping("/gas/receiver")
- public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
- return dataService.heartBeatSave(heartbeatParam);
+ public ResponseData gasReceiver(@RequestBody DataReportParam dataReportParam) {
+ log.info("---------"+JSON.toJSONString(dataReportParam));
+ return dataService.gasReceiver(dataReportParam);
}
}
diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java
new file mode 100644
index 0000000..e5e9c8d
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmJobMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmJob;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface AlarmJobMapper extends BaseMapper {
+
+ @Select("SELECT MAX(jobcode) " +
+ "FROM alarm_job " +
+ "WHERE JOBCODE like '${jobcode}%'")
+ String getJobCodeMaxSerial(@Param("jobcode") String jobcode);
+
+}
diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
new file mode 100644
index 0000000..8da7dcb
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmRecords;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface AlarmRecordsMapper extends BaseMapper {
+
+
+ @Select("SELECT JOB_ID AS \"jobId\"\n " +
+ "FROM alarm_records\n " +
+ "WHERE DEVCODE = #{devcode}\n " +
+ "AND ALARM_CONTENT = #{MsgContent}\n " +
+ "AND STATUS='1'\n " +
+ "AND JOB_ID>0 ")
+ String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+
+ @Update(" UPDATE alarm_records\n" +
+ " SET STATUS='0'\n" +
+ " WHERE DEVCODE = #{devcode}\n" +
+ " AND ALARM_CONTENT = #{MsgContent}\n" +
+ " AND STATUS='1'")
+ Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
index 47e7cce..33ce14a 100644
--- a/src/main/java/com/casic/dao/DataGasMapper.java
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -1,9 +1,48 @@
package com.casic.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.casic.entity.DataGasReport;
+import com.casic.entity.DataGasDector;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+import java.util.Map;
@Mapper
-public interface DataGasMapper extends BaseMapper {
+public interface DataGasMapper extends BaseMapper {
+
+ @Select("select bd.id as \"deviceId\",bwi.WELL_CODE AS \"wellCode\" " +
+ "from bus_device_well bdw " +
+ "join (select id from bus_device where devcode=#{devcode}) bd ON bd.id=bdw.device_id " +
+ "join bus_well_info bwi ON bwi.id=bdw.well_id ")
+ Map getWellCode(@Param("devcode") String devcode);
+
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{onlineState} " +
+ "WHERE devcode=#{devcode} ")
+ void setOfflineByDevcode(@Param("devcode") String devcode,
+ @Param("onlineState") Integer onlineState);
+
+ @Select("SELECT level,high_value " +
+ "FROM alarm_level " +
+ "WHERE device_type=#{deviceType} ")
+ List> getAlarmLevelList(@Param("deviceType") Long deviceType);
+
+ @Select("SELECT devcode " +
+ "FROM data_gas_dector " +
+ "WHERE devcode=#{devcode} " +
+ "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+
+ "ORDER BY logtime DESC " +
+ "LIMIT 1")
+ String getLastData(@Param("minutes") String minutes,
+ @Param("devcode") String devcode);
+
+ @Select("SELECT alarm_content" +
+ "FROM BASE_alarm_content_type" +
+ "where device_type=#{deviceType}")
+ String getGasMsgContent(@Param("deviceType")Long deviceType);
+
+
}
diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
new file mode 100644
index 0000000..5131821
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
@@ -0,0 +1,59 @@
+package com.casic.dao.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmJobMapper;
+import com.casic.entity.AlarmJob;
+import org.springframework.stereotype.Component;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Component
+public class AlarmJobDao {
+
+ private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ private static Snowflake snowflake = new Snowflake(0, 2);
+// private static final Sn
+
+ @Resource
+ private AlarmJobMapper alarmJobMapper;
+
+ public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) {
+ AlarmJob alarmJob = new AlarmJob();
+ alarmJob.setId(snowflake.nextId());
+ alarmJob.setDevcode(devCode);
+ alarmJob.setWellCode(wellCode);
+ alarmJob.setJobStatus("0");
+ alarmJob.setCreateTime(new Date());
+ alarmJob.setJobcode(this.produceJobCode(devTypeName));
+ alarmJob.setJobType(jobType);
+ alarmJobMapper.insert(alarmJob);
+ return alarmJob;
+ }
+
+ /**
+ * 前缀+日期+4位流水号
+ *
+ * @param devTypeName
+ * @return
+ */
+ private String produceJobCode(String devTypeName) {
+ String pre = devTypeName;
+ String dataStr = sdf6.format(new Date());
+ String fix = this.getJobCodeMaxSerial(pre + dataStr);
+ return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001";
+ }
+
+
+ private String getJobCodeMaxSerial(String jobcode) {
+ String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode);
+ String fix = "";
+ if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) {
+ fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4);
+ }
+ return fix;
+ }
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
deleted file mode 100644
index c797e55..0000000
--- a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
+++ /dev/null
@@ -1,68 +0,0 @@
-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/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java
new file mode 100644
index 0000000..8a0f764
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmJob.java
@@ -0,0 +1,165 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 报警工单表
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_job")
+public class AlarmJob extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 工单编号
+ */
+ @TableField("JOBCODE")
+ private String jobcode;
+ /**
+ * 工单类型
+ */
+ @TableField("JOG_TYPE")
+ private String jobType;
+ /**
+ * 井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 工单创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+ /**
+ * 工单状态(0待处理,1待确认,2处理中,3完成)
+ */
+ @TableField("JOB_STATUS")
+ private String jobStatus;
+ /**
+ * 接单人员
+ */
+ @TableField("GET_JOB_PERSON")
+ private Long getJobPerson;
+ /**
+ * 接单时间
+ */
+ @TableField("GET_JOB_TIME")
+ private Date getJobTime;
+ /**
+ * 应接单时间
+ */
+ @TableField("SHOULD_GET_TIME")
+ private Date shouldGetTime;
+ /**
+ * 第一现场情况
+ */
+ @TableField("FIRST_STATE")
+ private String firstState;
+ /**
+ * 第一现场照片
+ */
+ @TableField("FIRST_STATE_PHOTOS")
+ private String firstStatePhotos;
+ /**
+ * 确认人员
+ */
+ @TableField("CONFIRM_JOB_PERSON")
+ private Long confirmJobPerson;
+ /**
+ * 确认时间
+ */
+ @TableField("CONFRIM_JOB_TIME")
+ private Date confrimJobTime;
+ /**
+ * 处理人员
+ */
+ @TableField("HANDLE_JOB_Person")
+ private Long handleJobPerson;
+ /**
+ * 处理时间
+ */
+ @TableField("HANDLE_JOB_TIME")
+ private Date handleJobTime;
+ /**
+ * 维护情况记录
+ */
+ @TableField("HANDLE_MESSAGE")
+ private String handleMessage;
+ /**
+ * 维护图片
+ */
+ @TableField("HANDLE_PHOTOS")
+ private String handlePhotos;
+ /**
+ * 工单流转记录
+ */
+ @TableField("FLOW")
+ private String flow;
+
+ @TableField("JOB_BELONG_TO")
+ private Long jobBelongTo;
+
+ @TableField("JOB_FLAG_DELAY")
+ private String jobFlagDelay;
+
+ @TableField("JOB_FLAG_1")
+ private String jobFlag1;
+
+ @TableField(exist = false)
+ private String alarmValue;
+
+ @TableField(exist = false)
+ private String alarmContentName;
+
+ @TableField(exist = false)
+ private Integer recordId;
+
+ @Override
+ public String toString() {
+ return "AlarmJob{" +
+ "id=" + id +
+ ", jobcode=" + jobcode +
+ ", jogType=" + jobType +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", createTime=" + createTime +
+ ", jobStatus=" + jobStatus +
+ ", getJobPerson=" + getJobPerson +
+ ", getJobTime=" + getJobTime +
+ ", firstState=" + firstState +
+ ", firstStatePhotos=" + firstStatePhotos +
+ ", confirmJobPerson=" + confirmJobPerson +
+ ", confrimJobTime=" + confrimJobTime +
+ ", handleJobPerson=" + handleJobPerson +
+ ", handleJobTime=" + handleJobTime +
+ ", handleMessage=" + handleMessage +
+ ", handlePhotos=" + handlePhotos +
+ ", flow=" + flow +
+ ", recordId=" + recordId +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java
new file mode 100644
index 0000000..88b0b26
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmRecords.java
@@ -0,0 +1,108 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ *
+ *
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_records")
+public class AlarmRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 设备ID
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 闸井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 告警类型
+ */
+ @TableField("ALARM_TYPE")
+ private String alarmType;
+ /**
+ * 告警内容
+ */
+ @TableField("ALARM_CONTENT")
+ private String alarmContent;
+ /**
+ * 告警数值
+ */
+ @TableField("ALARM_VALUE")
+ private String alarmValue;
+ /**
+ * 告警等级
+ */
+ @TableField("ALARM_LEVEL")
+ private Integer alarmLevel;
+ /**
+ * 告警详情
+ */
+ @TableField("ALARM_MSG")
+ private String alarmMessage;
+ /**
+ * 告警时间
+ */
+ @TableField("ALARM_TIME")
+ private Date alarmTime;
+ /**
+ * 告警状态
+ */
+ @TableField("STATUS")
+ private String status;
+ /**
+ * 工单编号
+ */
+ @TableField("JOB_ID")
+ private Long jobId;
+
+ @TableField(exist = false)
+ private Integer jobStatus;
+
+ @Override
+ public String toString() {
+ return "AlarmRecords{" +
+ "id=" + id +
+ ", deviceId=" + deviceId +
+ ", devcode=" + devcode +
+ ", wellCode=" + wellCode +
+ ", alarmType=" + alarmType +
+ ", alarmContent=" + alarmContent +
+ ", alarmValue=" + alarmValue +
+ ", alarmLevel=" + alarmLevel +
+ ", alarmMessage=" + alarmMessage +
+ ", alarmTime=" + alarmTime +
+ ", status=" + status +
+ ", jobId=" + jobId +
+ ", jobStatus=" + jobStatus +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/DataGasDector.java b/src/main/java/com/casic/entity/DataGasDector.java
new file mode 100644
index 0000000..537789a
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasDector.java
@@ -0,0 +1,42 @@
+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 DataGasDector {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ private String devcode;
+ private String wellCode;
+ private String strength;
+
+ private String descn;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
deleted file mode 100644
index c43ccdf..0000000
--- a/src/main/java/com/casic/entity/DataGasReport.java
+++ /dev/null
@@ -1,69 +0,0 @@
-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/entity/DeviceSatatus.java b/src/main/java/com/casic/entity/DeviceSatatus.java
new file mode 100644
index 0000000..bab7903
--- /dev/null
+++ b/src/main/java/com/casic/entity/DeviceSatatus.java
@@ -0,0 +1,19 @@
+package com.casic.entity;
+
+import lombok.Data;
+
+/**
+ * 不使用了
+ *
+ */
+@Data
+public class DeviceSatatus {
+ private String deviceId;
+ private String cell;
+ private String cellTs;
+ private String onlineState;
+ private String onlineTs;
+ private String lastDataId;
+ private String lastDataJson;
+ private String lastDataTs;
+}
diff --git a/src/main/java/com/casic/model/DataContentParam.java b/src/main/java/com/casic/model/DataContentParam.java
new file mode 100644
index 0000000..46d298a
--- /dev/null
+++ b/src/main/java/com/casic/model/DataContentParam.java
@@ -0,0 +1,19 @@
+package com.casic.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DataContentParam {
+ private String msg_type;
+ private String error_val;
+ private String ch_cnt;
+ private String erro_cnt;
+ private String alarm_low_cnt;
+ private String alarm_high_cnt;
+ private String offline_cnt;
+ private List rtd_val;
+ private List adc_val;
+ private List status_val;
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/model/DataReportParam.java b/src/main/java/com/casic/model/DataReportParam.java
index 082814c..754f330 100644
--- a/src/main/java/com/casic/model/DataReportParam.java
+++ b/src/main/java/com/casic/model/DataReportParam.java
@@ -11,25 +11,12 @@
*/
@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;
+ private String iotId;
+ private String requestId;
+ private Object checkFailedData;
+ private String productKey;
+ private String gmtCreate;
+ private String deviceName;
+ private Object items;
}
diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java
index d883fe4..457d710 100644
--- a/src/main/java/com/casic/service/DeviceDataService.java
+++ b/src/main/java/com/casic/service/DeviceDataService.java
@@ -3,25 +3,18 @@
import com.casic.model.DataReportParam;
import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
+import org.springframework.web.bind.annotation.RequestBody;
/**
* @author cz
* @date 2022
*/
public interface DeviceDataService {
-
/**
*
* @param dataReportParam
* @return
*/
- ResponseData DeviceDataCommit(DataReportParam dataReportParam);
-
- /**
- *
- * @param heartbeatParam
- * @return
- */
- ResponseData heartBeatSave(HeartbeatParam heartbeatParam);
+ ResponseData gasReceiver(DataReportParam dataReportParam);
}
diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
index 93f0685..e473f0c 100644
--- a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
+++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
@@ -1,58 +1,49 @@
package com.casic.service.impl;
-import com.casic.dao.impl.DeviceDataMapper;
+import com.alibaba.druid.util.StringUtils;
+import com.alibaba.fastjson.JSON;
import com.casic.model.*;
import com.casic.service.DeviceDataService;
+import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import java.util.Map;
+
/**
* @author cz
- * @date 2022-6-20
+ * @date 2022-9-26
*/
@Slf4j
@Service
public class DeviceDataServiceImpl implements DeviceDataService {
- @Autowired
- DeviceDataMapper deviceDataMapper;
+ private final NormalDataProcessor normalDataProcessor;
- /**
- * @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;
+ public DeviceDataServiceImpl(NormalDataProcessor normalDataProcessor) {
+ this.normalDataProcessor = normalDataProcessor;
}
- /**
- * @param heartbeatParam
- * @return
- */
- public ResponseData heartBeatSave(HeartbeatParam heartbeatParam) {
+ public ResponseData gasReceiver(DataReportParam dataReportParam) {
ResponseData responseData = new ResponseData();
try {
- deviceDataMapper.editDeviceData(heartbeatParam);
+ Map> updDataMap = new ObjectMapper().convertValue(dataReportParam.getItems(), Map.class);
+ DataContentParam dataContentParam = JSON.parseObject(updDataMap.get("updData").get("value"), DataContentParam.class);
+ Long uptime = Long.valueOf(String.valueOf(updDataMap.get("updData").get("time")));
+ if (StringUtils.isEmpty(dataReportParam.getDeviceName())) {
+ responseData.setCode(200);
+ responseData.setMessage("没有设备编号");
+ return responseData;
+ }
+ normalDataProcessor.normalDataProvider(dataContentParam, uptime, dataReportParam.getDeviceName());
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);
+ log.error("主题:设备数据上报出现错误,异常信息为{}", sqlex);
}
return responseData;
}
diff --git a/src/main/java/com/casic/service/impl/NormalDataProcessor.java b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
new file mode 100644
index 0000000..3f7630a
--- /dev/null
+++ b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
@@ -0,0 +1,164 @@
+package com.casic.service.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmRecordsMapper;
+import com.casic.dao.DataGasMapper;
+import com.casic.dao.impl.AlarmJobDao;
+import com.casic.entity.AlarmJob;
+import com.casic.entity.AlarmRecords;
+import com.casic.entity.DataGasDector;
+import com.casic.model.DataContentParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Component
+public class NormalDataProcessor {
+
+ public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ @Value("${casic.device.gas-dector.type}")
+ private Long deviceType;
+ @Value("${casic.device.gas-dector.minutes}")
+ private String minutes;
+ @Value("${casic.device.gas-dector.enable-local}")
+ private Boolean enableLocal;
+ @Resource
+ private DataGasMapper dataGasMapper;
+ @Autowired
+ private AlarmJobDao alarmJobDao;
+ @Resource
+ private AlarmRecordsMapper alarmRecordsMapper;
+ private static Snowflake snowflake = new Snowflake(0, 2);
+
+ public void normalDataProvider(DataContentParam dataReportParam, Long timeStamp, String devcode) {
+ Map gasMap = dataGasMapper.getWellCode(devcode);
+ if (ObjectUtils.isEmpty(gasMap)) {
+ log.info("没有该设备编号录入" + devcode);
+ if (enableLocal) {
+ return;
+ }
+ }
+ Boolean updateFlag = false;
+ if (ObjectUtils.isEmpty(dataGasMapper.getLastData(minutes, devcode))) {
+ updateFlag = this.saveNormalData(dataReportParam, timeStamp, devcode, gasMap);
+ }
+ this.dataTaskJudge(dataReportParam, devcode, timeStamp, gasMap, updateFlag);
+ return;
+ }
+
+ /**
+ * 自定义时间存库
+ *
+ * @param dataReportParam
+ * @param timeStamp
+ * @param devcode
+ * @param gasMap
+ */
+ private Boolean saveNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap) {
+ Boolean updateFlag = false;
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ List dataReportFilter = dataReportParam.getRtd_val().stream().filter(
+ data -> {
+ return data != -1;
+ }
+ ).collect(Collectors.toList());
+ if (dataReportFilter.size() > 0 && dataReportFilter.get(dataReportFilter.size() - 1) != 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 1);
+ updateFlag = true;
+ } else if (dataReportFilter.get(dataReportFilter.size() - 1) == 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 0);
+ }
+ dataReportFilter.forEach(
+ data -> {
+ if (data != 65535) {
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+ }
+ );
+ return updateFlag;
+ }
+
+ /**
+ * 报警就存库
+ *
+ * @param dataReportParam
+ * @param devcode
+ * @param timeStamp
+ * @param gasMap
+ */
+ private void dataTaskJudge(DataContentParam dataReportParam, String devcode, Long timeStamp, Map gasMap, Boolean updateFlag) {
+ List> alarmLevelList = dataGasMapper.getAlarmLevelList(deviceType);
+ String wellCode = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "";
+ Long deviceId = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? Long.valueOf(String.valueOf(gasMap.get("deviceId"))) : -1;
+ final String gasMsgContent=dataGasMapper.getGasMsgContent(deviceType);
+ dataReportParam.getRtd_val().stream().filter(
+ dataReport -> {
+ return dataReport != -1 && dataReport != 65535;
+ }
+ ).forEach(
+ dataReport -> {
+ for (Map alarmLevelMap : alarmLevelList) {
+ if (dataReport > Float.valueOf(String.valueOf(alarmLevelMap.get("high_value")))) {
+ AlarmRecords alarmRecord = new AlarmRecords();
+ alarmRecord.setId(snowflake.nextId());
+ alarmRecord.setDeviceId(deviceId);
+ alarmRecord.setDevcode(devcode);
+ alarmRecord.setWellCode(wellCode);
+ alarmRecord.setAlarmType("1"); // 业务报警
+ alarmRecord.setAlarmContent("燃气报警");
+ alarmRecord.setAlarmValue(String.valueOf(dataReport));
+ alarmRecord.setAlarmTime(new Date());
+ alarmRecord.setStatus("1");
+ alarmRecord.setAlarmLevel(Integer.valueOf(alarmLevelMap.get("level").toString()));
+ alarmRecord.setAlarmMessage("燃气报警");
+ String jobId = alarmRecordsMapper.isOldAlarmRecord(devcode, "燃气报警");
+ // 超出报警阈值 生成一条报警消息
+ if (!StringUtils.isEmpty(jobId)) {
+ alarmRecordsMapper.updateOldAlarmRecord(devcode, "燃气报警");
+ alarmRecord.setJobId(Long.valueOf(jobId));
+ } else {
+ AlarmJob alarmJob = alarmJobDao.saveData(devcode, wellCode, "RQZD", "1");
+ alarmRecord.setJobId(alarmJob.getId());
+ }
+ alarmRecordsMapper.insert(alarmRecord);
+ if (!updateFlag) {
+ alarmNormalData(dataReportParam, timeStamp, devcode, gasMap, dataReport);
+ }
+ break;
+ }
+ }
+ }
+ );
+ }
+
+ private void alarmNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap, Integer data) {
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+
+}
+
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index fac2afe..f8a06a6 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -1,40 +1,19 @@
server:
- port: 11556
+ port: 11320
################### 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
+ driver-class-name: org.postgresql.Driver
+ url: jdbc:postgresql://111.198.10.15:11209/smartwell_zq_cs
+ 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
- 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
+ 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
index 86411e6..ffc01e9 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -19,18 +19,11 @@
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
+ device:
+ gas-dector:
+ type: 101
+ minutes: 60
+ enable-local: false
+# type 可燃气体的设备类型
+# minutes: 燃气外协设备上传数据的分钟数
\ No newline at end of file
diff --git a/target/classes/application-dev.yml b/target/classes/application-dev.yml
new file mode 100644
index 0000000..fac2afe
--- /dev/null
+++ b/target/classes/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/target/classes/application-postgre.yml b/target/classes/application-postgre.yml
new file mode 100644
index 0000000..2b7f69c
--- /dev/null
+++ b/target/classes/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/target/classes/application.yml b/target/classes/application.yml
new file mode 100644
index 0000000..86411e6
--- /dev/null
+++ b/target/classes/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
diff --git a/target/classes/com/casic/CasicApplication.class b/target/classes/com/casic/CasicApplication.class
new file mode 100644
index 0000000..68c2f95
--- /dev/null
+++ b/target/classes/com/casic/CasicApplication.class
Binary files differ
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh
new file mode 100644
index 0000000..e14c4c7
--- /dev/null
+++ b/src/main/build/bin/start.sh
@@ -0,0 +1,2 @@
+java -jar ./lib/${project.build.finalName}.jar
+
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
index c55e37d..0887f1f 100644
--- a/src/main/java/com/casic/CasicApplication.java
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -3,8 +3,6 @@
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;
/**
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
index e5351c9..be0de6b 100644
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -1,14 +1,19 @@
package com.casic.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.casic.model.DataReportParam;
-import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
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;
+import java.util.Map;
+
+@Slf4j
@RequestMapping("/data")
@RestController
public class DeviceDataController {
@@ -19,19 +24,16 @@
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 String gasReceiver(@RequestBody Map map) {
+// log.info("---------"+JSON.toJSONString(map));
+// return "200";
+// }
@PostMapping("/gas/receiver")
- public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
- return dataService.heartBeatSave(heartbeatParam);
+ public ResponseData gasReceiver(@RequestBody DataReportParam dataReportParam) {
+ log.info("---------"+JSON.toJSONString(dataReportParam));
+ return dataService.gasReceiver(dataReportParam);
}
}
diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java
new file mode 100644
index 0000000..e5e9c8d
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmJobMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmJob;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface AlarmJobMapper extends BaseMapper {
+
+ @Select("SELECT MAX(jobcode) " +
+ "FROM alarm_job " +
+ "WHERE JOBCODE like '${jobcode}%'")
+ String getJobCodeMaxSerial(@Param("jobcode") String jobcode);
+
+}
diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
new file mode 100644
index 0000000..8da7dcb
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmRecords;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface AlarmRecordsMapper extends BaseMapper {
+
+
+ @Select("SELECT JOB_ID AS \"jobId\"\n " +
+ "FROM alarm_records\n " +
+ "WHERE DEVCODE = #{devcode}\n " +
+ "AND ALARM_CONTENT = #{MsgContent}\n " +
+ "AND STATUS='1'\n " +
+ "AND JOB_ID>0 ")
+ String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+
+ @Update(" UPDATE alarm_records\n" +
+ " SET STATUS='0'\n" +
+ " WHERE DEVCODE = #{devcode}\n" +
+ " AND ALARM_CONTENT = #{MsgContent}\n" +
+ " AND STATUS='1'")
+ Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
index 47e7cce..33ce14a 100644
--- a/src/main/java/com/casic/dao/DataGasMapper.java
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -1,9 +1,48 @@
package com.casic.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.casic.entity.DataGasReport;
+import com.casic.entity.DataGasDector;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+import java.util.Map;
@Mapper
-public interface DataGasMapper extends BaseMapper {
+public interface DataGasMapper extends BaseMapper {
+
+ @Select("select bd.id as \"deviceId\",bwi.WELL_CODE AS \"wellCode\" " +
+ "from bus_device_well bdw " +
+ "join (select id from bus_device where devcode=#{devcode}) bd ON bd.id=bdw.device_id " +
+ "join bus_well_info bwi ON bwi.id=bdw.well_id ")
+ Map getWellCode(@Param("devcode") String devcode);
+
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{onlineState} " +
+ "WHERE devcode=#{devcode} ")
+ void setOfflineByDevcode(@Param("devcode") String devcode,
+ @Param("onlineState") Integer onlineState);
+
+ @Select("SELECT level,high_value " +
+ "FROM alarm_level " +
+ "WHERE device_type=#{deviceType} ")
+ List> getAlarmLevelList(@Param("deviceType") Long deviceType);
+
+ @Select("SELECT devcode " +
+ "FROM data_gas_dector " +
+ "WHERE devcode=#{devcode} " +
+ "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+
+ "ORDER BY logtime DESC " +
+ "LIMIT 1")
+ String getLastData(@Param("minutes") String minutes,
+ @Param("devcode") String devcode);
+
+ @Select("SELECT alarm_content" +
+ "FROM BASE_alarm_content_type" +
+ "where device_type=#{deviceType}")
+ String getGasMsgContent(@Param("deviceType")Long deviceType);
+
+
}
diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
new file mode 100644
index 0000000..5131821
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
@@ -0,0 +1,59 @@
+package com.casic.dao.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmJobMapper;
+import com.casic.entity.AlarmJob;
+import org.springframework.stereotype.Component;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Component
+public class AlarmJobDao {
+
+ private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ private static Snowflake snowflake = new Snowflake(0, 2);
+// private static final Sn
+
+ @Resource
+ private AlarmJobMapper alarmJobMapper;
+
+ public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) {
+ AlarmJob alarmJob = new AlarmJob();
+ alarmJob.setId(snowflake.nextId());
+ alarmJob.setDevcode(devCode);
+ alarmJob.setWellCode(wellCode);
+ alarmJob.setJobStatus("0");
+ alarmJob.setCreateTime(new Date());
+ alarmJob.setJobcode(this.produceJobCode(devTypeName));
+ alarmJob.setJobType(jobType);
+ alarmJobMapper.insert(alarmJob);
+ return alarmJob;
+ }
+
+ /**
+ * 前缀+日期+4位流水号
+ *
+ * @param devTypeName
+ * @return
+ */
+ private String produceJobCode(String devTypeName) {
+ String pre = devTypeName;
+ String dataStr = sdf6.format(new Date());
+ String fix = this.getJobCodeMaxSerial(pre + dataStr);
+ return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001";
+ }
+
+
+ private String getJobCodeMaxSerial(String jobcode) {
+ String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode);
+ String fix = "";
+ if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) {
+ fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4);
+ }
+ return fix;
+ }
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
deleted file mode 100644
index c797e55..0000000
--- a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
+++ /dev/null
@@ -1,68 +0,0 @@
-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/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java
new file mode 100644
index 0000000..8a0f764
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmJob.java
@@ -0,0 +1,165 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 报警工单表
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_job")
+public class AlarmJob extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 工单编号
+ */
+ @TableField("JOBCODE")
+ private String jobcode;
+ /**
+ * 工单类型
+ */
+ @TableField("JOG_TYPE")
+ private String jobType;
+ /**
+ * 井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 工单创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+ /**
+ * 工单状态(0待处理,1待确认,2处理中,3完成)
+ */
+ @TableField("JOB_STATUS")
+ private String jobStatus;
+ /**
+ * 接单人员
+ */
+ @TableField("GET_JOB_PERSON")
+ private Long getJobPerson;
+ /**
+ * 接单时间
+ */
+ @TableField("GET_JOB_TIME")
+ private Date getJobTime;
+ /**
+ * 应接单时间
+ */
+ @TableField("SHOULD_GET_TIME")
+ private Date shouldGetTime;
+ /**
+ * 第一现场情况
+ */
+ @TableField("FIRST_STATE")
+ private String firstState;
+ /**
+ * 第一现场照片
+ */
+ @TableField("FIRST_STATE_PHOTOS")
+ private String firstStatePhotos;
+ /**
+ * 确认人员
+ */
+ @TableField("CONFIRM_JOB_PERSON")
+ private Long confirmJobPerson;
+ /**
+ * 确认时间
+ */
+ @TableField("CONFRIM_JOB_TIME")
+ private Date confrimJobTime;
+ /**
+ * 处理人员
+ */
+ @TableField("HANDLE_JOB_Person")
+ private Long handleJobPerson;
+ /**
+ * 处理时间
+ */
+ @TableField("HANDLE_JOB_TIME")
+ private Date handleJobTime;
+ /**
+ * 维护情况记录
+ */
+ @TableField("HANDLE_MESSAGE")
+ private String handleMessage;
+ /**
+ * 维护图片
+ */
+ @TableField("HANDLE_PHOTOS")
+ private String handlePhotos;
+ /**
+ * 工单流转记录
+ */
+ @TableField("FLOW")
+ private String flow;
+
+ @TableField("JOB_BELONG_TO")
+ private Long jobBelongTo;
+
+ @TableField("JOB_FLAG_DELAY")
+ private String jobFlagDelay;
+
+ @TableField("JOB_FLAG_1")
+ private String jobFlag1;
+
+ @TableField(exist = false)
+ private String alarmValue;
+
+ @TableField(exist = false)
+ private String alarmContentName;
+
+ @TableField(exist = false)
+ private Integer recordId;
+
+ @Override
+ public String toString() {
+ return "AlarmJob{" +
+ "id=" + id +
+ ", jobcode=" + jobcode +
+ ", jogType=" + jobType +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", createTime=" + createTime +
+ ", jobStatus=" + jobStatus +
+ ", getJobPerson=" + getJobPerson +
+ ", getJobTime=" + getJobTime +
+ ", firstState=" + firstState +
+ ", firstStatePhotos=" + firstStatePhotos +
+ ", confirmJobPerson=" + confirmJobPerson +
+ ", confrimJobTime=" + confrimJobTime +
+ ", handleJobPerson=" + handleJobPerson +
+ ", handleJobTime=" + handleJobTime +
+ ", handleMessage=" + handleMessage +
+ ", handlePhotos=" + handlePhotos +
+ ", flow=" + flow +
+ ", recordId=" + recordId +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java
new file mode 100644
index 0000000..88b0b26
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmRecords.java
@@ -0,0 +1,108 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ *
+ *
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_records")
+public class AlarmRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 设备ID
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 闸井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 告警类型
+ */
+ @TableField("ALARM_TYPE")
+ private String alarmType;
+ /**
+ * 告警内容
+ */
+ @TableField("ALARM_CONTENT")
+ private String alarmContent;
+ /**
+ * 告警数值
+ */
+ @TableField("ALARM_VALUE")
+ private String alarmValue;
+ /**
+ * 告警等级
+ */
+ @TableField("ALARM_LEVEL")
+ private Integer alarmLevel;
+ /**
+ * 告警详情
+ */
+ @TableField("ALARM_MSG")
+ private String alarmMessage;
+ /**
+ * 告警时间
+ */
+ @TableField("ALARM_TIME")
+ private Date alarmTime;
+ /**
+ * 告警状态
+ */
+ @TableField("STATUS")
+ private String status;
+ /**
+ * 工单编号
+ */
+ @TableField("JOB_ID")
+ private Long jobId;
+
+ @TableField(exist = false)
+ private Integer jobStatus;
+
+ @Override
+ public String toString() {
+ return "AlarmRecords{" +
+ "id=" + id +
+ ", deviceId=" + deviceId +
+ ", devcode=" + devcode +
+ ", wellCode=" + wellCode +
+ ", alarmType=" + alarmType +
+ ", alarmContent=" + alarmContent +
+ ", alarmValue=" + alarmValue +
+ ", alarmLevel=" + alarmLevel +
+ ", alarmMessage=" + alarmMessage +
+ ", alarmTime=" + alarmTime +
+ ", status=" + status +
+ ", jobId=" + jobId +
+ ", jobStatus=" + jobStatus +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/DataGasDector.java b/src/main/java/com/casic/entity/DataGasDector.java
new file mode 100644
index 0000000..537789a
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasDector.java
@@ -0,0 +1,42 @@
+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 DataGasDector {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ private String devcode;
+ private String wellCode;
+ private String strength;
+
+ private String descn;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
deleted file mode 100644
index c43ccdf..0000000
--- a/src/main/java/com/casic/entity/DataGasReport.java
+++ /dev/null
@@ -1,69 +0,0 @@
-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/entity/DeviceSatatus.java b/src/main/java/com/casic/entity/DeviceSatatus.java
new file mode 100644
index 0000000..bab7903
--- /dev/null
+++ b/src/main/java/com/casic/entity/DeviceSatatus.java
@@ -0,0 +1,19 @@
+package com.casic.entity;
+
+import lombok.Data;
+
+/**
+ * 不使用了
+ *
+ */
+@Data
+public class DeviceSatatus {
+ private String deviceId;
+ private String cell;
+ private String cellTs;
+ private String onlineState;
+ private String onlineTs;
+ private String lastDataId;
+ private String lastDataJson;
+ private String lastDataTs;
+}
diff --git a/src/main/java/com/casic/model/DataContentParam.java b/src/main/java/com/casic/model/DataContentParam.java
new file mode 100644
index 0000000..46d298a
--- /dev/null
+++ b/src/main/java/com/casic/model/DataContentParam.java
@@ -0,0 +1,19 @@
+package com.casic.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DataContentParam {
+ private String msg_type;
+ private String error_val;
+ private String ch_cnt;
+ private String erro_cnt;
+ private String alarm_low_cnt;
+ private String alarm_high_cnt;
+ private String offline_cnt;
+ private List rtd_val;
+ private List adc_val;
+ private List status_val;
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/model/DataReportParam.java b/src/main/java/com/casic/model/DataReportParam.java
index 082814c..754f330 100644
--- a/src/main/java/com/casic/model/DataReportParam.java
+++ b/src/main/java/com/casic/model/DataReportParam.java
@@ -11,25 +11,12 @@
*/
@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;
+ private String iotId;
+ private String requestId;
+ private Object checkFailedData;
+ private String productKey;
+ private String gmtCreate;
+ private String deviceName;
+ private Object items;
}
diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java
index d883fe4..457d710 100644
--- a/src/main/java/com/casic/service/DeviceDataService.java
+++ b/src/main/java/com/casic/service/DeviceDataService.java
@@ -3,25 +3,18 @@
import com.casic.model.DataReportParam;
import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
+import org.springframework.web.bind.annotation.RequestBody;
/**
* @author cz
* @date 2022
*/
public interface DeviceDataService {
-
/**
*
* @param dataReportParam
* @return
*/
- ResponseData DeviceDataCommit(DataReportParam dataReportParam);
-
- /**
- *
- * @param heartbeatParam
- * @return
- */
- ResponseData heartBeatSave(HeartbeatParam heartbeatParam);
+ ResponseData gasReceiver(DataReportParam dataReportParam);
}
diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
index 93f0685..e473f0c 100644
--- a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
+++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
@@ -1,58 +1,49 @@
package com.casic.service.impl;
-import com.casic.dao.impl.DeviceDataMapper;
+import com.alibaba.druid.util.StringUtils;
+import com.alibaba.fastjson.JSON;
import com.casic.model.*;
import com.casic.service.DeviceDataService;
+import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import java.util.Map;
+
/**
* @author cz
- * @date 2022-6-20
+ * @date 2022-9-26
*/
@Slf4j
@Service
public class DeviceDataServiceImpl implements DeviceDataService {
- @Autowired
- DeviceDataMapper deviceDataMapper;
+ private final NormalDataProcessor normalDataProcessor;
- /**
- * @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;
+ public DeviceDataServiceImpl(NormalDataProcessor normalDataProcessor) {
+ this.normalDataProcessor = normalDataProcessor;
}
- /**
- * @param heartbeatParam
- * @return
- */
- public ResponseData heartBeatSave(HeartbeatParam heartbeatParam) {
+ public ResponseData gasReceiver(DataReportParam dataReportParam) {
ResponseData responseData = new ResponseData();
try {
- deviceDataMapper.editDeviceData(heartbeatParam);
+ Map> updDataMap = new ObjectMapper().convertValue(dataReportParam.getItems(), Map.class);
+ DataContentParam dataContentParam = JSON.parseObject(updDataMap.get("updData").get("value"), DataContentParam.class);
+ Long uptime = Long.valueOf(String.valueOf(updDataMap.get("updData").get("time")));
+ if (StringUtils.isEmpty(dataReportParam.getDeviceName())) {
+ responseData.setCode(200);
+ responseData.setMessage("没有设备编号");
+ return responseData;
+ }
+ normalDataProcessor.normalDataProvider(dataContentParam, uptime, dataReportParam.getDeviceName());
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);
+ log.error("主题:设备数据上报出现错误,异常信息为{}", sqlex);
}
return responseData;
}
diff --git a/src/main/java/com/casic/service/impl/NormalDataProcessor.java b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
new file mode 100644
index 0000000..3f7630a
--- /dev/null
+++ b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
@@ -0,0 +1,164 @@
+package com.casic.service.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmRecordsMapper;
+import com.casic.dao.DataGasMapper;
+import com.casic.dao.impl.AlarmJobDao;
+import com.casic.entity.AlarmJob;
+import com.casic.entity.AlarmRecords;
+import com.casic.entity.DataGasDector;
+import com.casic.model.DataContentParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Component
+public class NormalDataProcessor {
+
+ public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ @Value("${casic.device.gas-dector.type}")
+ private Long deviceType;
+ @Value("${casic.device.gas-dector.minutes}")
+ private String minutes;
+ @Value("${casic.device.gas-dector.enable-local}")
+ private Boolean enableLocal;
+ @Resource
+ private DataGasMapper dataGasMapper;
+ @Autowired
+ private AlarmJobDao alarmJobDao;
+ @Resource
+ private AlarmRecordsMapper alarmRecordsMapper;
+ private static Snowflake snowflake = new Snowflake(0, 2);
+
+ public void normalDataProvider(DataContentParam dataReportParam, Long timeStamp, String devcode) {
+ Map gasMap = dataGasMapper.getWellCode(devcode);
+ if (ObjectUtils.isEmpty(gasMap)) {
+ log.info("没有该设备编号录入" + devcode);
+ if (enableLocal) {
+ return;
+ }
+ }
+ Boolean updateFlag = false;
+ if (ObjectUtils.isEmpty(dataGasMapper.getLastData(minutes, devcode))) {
+ updateFlag = this.saveNormalData(dataReportParam, timeStamp, devcode, gasMap);
+ }
+ this.dataTaskJudge(dataReportParam, devcode, timeStamp, gasMap, updateFlag);
+ return;
+ }
+
+ /**
+ * 自定义时间存库
+ *
+ * @param dataReportParam
+ * @param timeStamp
+ * @param devcode
+ * @param gasMap
+ */
+ private Boolean saveNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap) {
+ Boolean updateFlag = false;
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ List dataReportFilter = dataReportParam.getRtd_val().stream().filter(
+ data -> {
+ return data != -1;
+ }
+ ).collect(Collectors.toList());
+ if (dataReportFilter.size() > 0 && dataReportFilter.get(dataReportFilter.size() - 1) != 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 1);
+ updateFlag = true;
+ } else if (dataReportFilter.get(dataReportFilter.size() - 1) == 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 0);
+ }
+ dataReportFilter.forEach(
+ data -> {
+ if (data != 65535) {
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+ }
+ );
+ return updateFlag;
+ }
+
+ /**
+ * 报警就存库
+ *
+ * @param dataReportParam
+ * @param devcode
+ * @param timeStamp
+ * @param gasMap
+ */
+ private void dataTaskJudge(DataContentParam dataReportParam, String devcode, Long timeStamp, Map gasMap, Boolean updateFlag) {
+ List> alarmLevelList = dataGasMapper.getAlarmLevelList(deviceType);
+ String wellCode = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "";
+ Long deviceId = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? Long.valueOf(String.valueOf(gasMap.get("deviceId"))) : -1;
+ final String gasMsgContent=dataGasMapper.getGasMsgContent(deviceType);
+ dataReportParam.getRtd_val().stream().filter(
+ dataReport -> {
+ return dataReport != -1 && dataReport != 65535;
+ }
+ ).forEach(
+ dataReport -> {
+ for (Map alarmLevelMap : alarmLevelList) {
+ if (dataReport > Float.valueOf(String.valueOf(alarmLevelMap.get("high_value")))) {
+ AlarmRecords alarmRecord = new AlarmRecords();
+ alarmRecord.setId(snowflake.nextId());
+ alarmRecord.setDeviceId(deviceId);
+ alarmRecord.setDevcode(devcode);
+ alarmRecord.setWellCode(wellCode);
+ alarmRecord.setAlarmType("1"); // 业务报警
+ alarmRecord.setAlarmContent("燃气报警");
+ alarmRecord.setAlarmValue(String.valueOf(dataReport));
+ alarmRecord.setAlarmTime(new Date());
+ alarmRecord.setStatus("1");
+ alarmRecord.setAlarmLevel(Integer.valueOf(alarmLevelMap.get("level").toString()));
+ alarmRecord.setAlarmMessage("燃气报警");
+ String jobId = alarmRecordsMapper.isOldAlarmRecord(devcode, "燃气报警");
+ // 超出报警阈值 生成一条报警消息
+ if (!StringUtils.isEmpty(jobId)) {
+ alarmRecordsMapper.updateOldAlarmRecord(devcode, "燃气报警");
+ alarmRecord.setJobId(Long.valueOf(jobId));
+ } else {
+ AlarmJob alarmJob = alarmJobDao.saveData(devcode, wellCode, "RQZD", "1");
+ alarmRecord.setJobId(alarmJob.getId());
+ }
+ alarmRecordsMapper.insert(alarmRecord);
+ if (!updateFlag) {
+ alarmNormalData(dataReportParam, timeStamp, devcode, gasMap, dataReport);
+ }
+ break;
+ }
+ }
+ }
+ );
+ }
+
+ private void alarmNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap, Integer data) {
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+
+}
+
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index fac2afe..f8a06a6 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -1,40 +1,19 @@
server:
- port: 11556
+ port: 11320
################### 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
+ driver-class-name: org.postgresql.Driver
+ url: jdbc:postgresql://111.198.10.15:11209/smartwell_zq_cs
+ 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
- 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
+ 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
index 86411e6..ffc01e9 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -19,18 +19,11 @@
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
+ device:
+ gas-dector:
+ type: 101
+ minutes: 60
+ enable-local: false
+# type 可燃气体的设备类型
+# minutes: 燃气外协设备上传数据的分钟数
\ No newline at end of file
diff --git a/target/classes/application-dev.yml b/target/classes/application-dev.yml
new file mode 100644
index 0000000..fac2afe
--- /dev/null
+++ b/target/classes/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/target/classes/application-postgre.yml b/target/classes/application-postgre.yml
new file mode 100644
index 0000000..2b7f69c
--- /dev/null
+++ b/target/classes/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/target/classes/application.yml b/target/classes/application.yml
new file mode 100644
index 0000000..86411e6
--- /dev/null
+++ b/target/classes/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
diff --git a/target/classes/com/casic/CasicApplication.class b/target/classes/com/casic/CasicApplication.class
new file mode 100644
index 0000000..68c2f95
--- /dev/null
+++ b/target/classes/com/casic/CasicApplication.class
Binary files differ
diff --git a/target/classes/com/casic/controller/DeviceController.class b/target/classes/com/casic/controller/DeviceController.class
new file mode 100644
index 0000000..478d6ae
--- /dev/null
+++ b/target/classes/com/casic/controller/DeviceController.class
Binary files differ
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh
new file mode 100644
index 0000000..e14c4c7
--- /dev/null
+++ b/src/main/build/bin/start.sh
@@ -0,0 +1,2 @@
+java -jar ./lib/${project.build.finalName}.jar
+
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
index c55e37d..0887f1f 100644
--- a/src/main/java/com/casic/CasicApplication.java
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -3,8 +3,6 @@
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;
/**
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
index e5351c9..be0de6b 100644
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -1,14 +1,19 @@
package com.casic.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.casic.model.DataReportParam;
-import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
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;
+import java.util.Map;
+
+@Slf4j
@RequestMapping("/data")
@RestController
public class DeviceDataController {
@@ -19,19 +24,16 @@
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 String gasReceiver(@RequestBody Map map) {
+// log.info("---------"+JSON.toJSONString(map));
+// return "200";
+// }
@PostMapping("/gas/receiver")
- public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
- return dataService.heartBeatSave(heartbeatParam);
+ public ResponseData gasReceiver(@RequestBody DataReportParam dataReportParam) {
+ log.info("---------"+JSON.toJSONString(dataReportParam));
+ return dataService.gasReceiver(dataReportParam);
}
}
diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java
new file mode 100644
index 0000000..e5e9c8d
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmJobMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmJob;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface AlarmJobMapper extends BaseMapper {
+
+ @Select("SELECT MAX(jobcode) " +
+ "FROM alarm_job " +
+ "WHERE JOBCODE like '${jobcode}%'")
+ String getJobCodeMaxSerial(@Param("jobcode") String jobcode);
+
+}
diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
new file mode 100644
index 0000000..8da7dcb
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmRecords;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface AlarmRecordsMapper extends BaseMapper {
+
+
+ @Select("SELECT JOB_ID AS \"jobId\"\n " +
+ "FROM alarm_records\n " +
+ "WHERE DEVCODE = #{devcode}\n " +
+ "AND ALARM_CONTENT = #{MsgContent}\n " +
+ "AND STATUS='1'\n " +
+ "AND JOB_ID>0 ")
+ String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+
+ @Update(" UPDATE alarm_records\n" +
+ " SET STATUS='0'\n" +
+ " WHERE DEVCODE = #{devcode}\n" +
+ " AND ALARM_CONTENT = #{MsgContent}\n" +
+ " AND STATUS='1'")
+ Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
index 47e7cce..33ce14a 100644
--- a/src/main/java/com/casic/dao/DataGasMapper.java
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -1,9 +1,48 @@
package com.casic.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.casic.entity.DataGasReport;
+import com.casic.entity.DataGasDector;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+import java.util.Map;
@Mapper
-public interface DataGasMapper extends BaseMapper {
+public interface DataGasMapper extends BaseMapper {
+
+ @Select("select bd.id as \"deviceId\",bwi.WELL_CODE AS \"wellCode\" " +
+ "from bus_device_well bdw " +
+ "join (select id from bus_device where devcode=#{devcode}) bd ON bd.id=bdw.device_id " +
+ "join bus_well_info bwi ON bwi.id=bdw.well_id ")
+ Map getWellCode(@Param("devcode") String devcode);
+
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{onlineState} " +
+ "WHERE devcode=#{devcode} ")
+ void setOfflineByDevcode(@Param("devcode") String devcode,
+ @Param("onlineState") Integer onlineState);
+
+ @Select("SELECT level,high_value " +
+ "FROM alarm_level " +
+ "WHERE device_type=#{deviceType} ")
+ List> getAlarmLevelList(@Param("deviceType") Long deviceType);
+
+ @Select("SELECT devcode " +
+ "FROM data_gas_dector " +
+ "WHERE devcode=#{devcode} " +
+ "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+
+ "ORDER BY logtime DESC " +
+ "LIMIT 1")
+ String getLastData(@Param("minutes") String minutes,
+ @Param("devcode") String devcode);
+
+ @Select("SELECT alarm_content" +
+ "FROM BASE_alarm_content_type" +
+ "where device_type=#{deviceType}")
+ String getGasMsgContent(@Param("deviceType")Long deviceType);
+
+
}
diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
new file mode 100644
index 0000000..5131821
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
@@ -0,0 +1,59 @@
+package com.casic.dao.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmJobMapper;
+import com.casic.entity.AlarmJob;
+import org.springframework.stereotype.Component;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Component
+public class AlarmJobDao {
+
+ private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ private static Snowflake snowflake = new Snowflake(0, 2);
+// private static final Sn
+
+ @Resource
+ private AlarmJobMapper alarmJobMapper;
+
+ public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) {
+ AlarmJob alarmJob = new AlarmJob();
+ alarmJob.setId(snowflake.nextId());
+ alarmJob.setDevcode(devCode);
+ alarmJob.setWellCode(wellCode);
+ alarmJob.setJobStatus("0");
+ alarmJob.setCreateTime(new Date());
+ alarmJob.setJobcode(this.produceJobCode(devTypeName));
+ alarmJob.setJobType(jobType);
+ alarmJobMapper.insert(alarmJob);
+ return alarmJob;
+ }
+
+ /**
+ * 前缀+日期+4位流水号
+ *
+ * @param devTypeName
+ * @return
+ */
+ private String produceJobCode(String devTypeName) {
+ String pre = devTypeName;
+ String dataStr = sdf6.format(new Date());
+ String fix = this.getJobCodeMaxSerial(pre + dataStr);
+ return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001";
+ }
+
+
+ private String getJobCodeMaxSerial(String jobcode) {
+ String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode);
+ String fix = "";
+ if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) {
+ fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4);
+ }
+ return fix;
+ }
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
deleted file mode 100644
index c797e55..0000000
--- a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
+++ /dev/null
@@ -1,68 +0,0 @@
-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/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java
new file mode 100644
index 0000000..8a0f764
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmJob.java
@@ -0,0 +1,165 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 报警工单表
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_job")
+public class AlarmJob extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 工单编号
+ */
+ @TableField("JOBCODE")
+ private String jobcode;
+ /**
+ * 工单类型
+ */
+ @TableField("JOG_TYPE")
+ private String jobType;
+ /**
+ * 井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 工单创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+ /**
+ * 工单状态(0待处理,1待确认,2处理中,3完成)
+ */
+ @TableField("JOB_STATUS")
+ private String jobStatus;
+ /**
+ * 接单人员
+ */
+ @TableField("GET_JOB_PERSON")
+ private Long getJobPerson;
+ /**
+ * 接单时间
+ */
+ @TableField("GET_JOB_TIME")
+ private Date getJobTime;
+ /**
+ * 应接单时间
+ */
+ @TableField("SHOULD_GET_TIME")
+ private Date shouldGetTime;
+ /**
+ * 第一现场情况
+ */
+ @TableField("FIRST_STATE")
+ private String firstState;
+ /**
+ * 第一现场照片
+ */
+ @TableField("FIRST_STATE_PHOTOS")
+ private String firstStatePhotos;
+ /**
+ * 确认人员
+ */
+ @TableField("CONFIRM_JOB_PERSON")
+ private Long confirmJobPerson;
+ /**
+ * 确认时间
+ */
+ @TableField("CONFRIM_JOB_TIME")
+ private Date confrimJobTime;
+ /**
+ * 处理人员
+ */
+ @TableField("HANDLE_JOB_Person")
+ private Long handleJobPerson;
+ /**
+ * 处理时间
+ */
+ @TableField("HANDLE_JOB_TIME")
+ private Date handleJobTime;
+ /**
+ * 维护情况记录
+ */
+ @TableField("HANDLE_MESSAGE")
+ private String handleMessage;
+ /**
+ * 维护图片
+ */
+ @TableField("HANDLE_PHOTOS")
+ private String handlePhotos;
+ /**
+ * 工单流转记录
+ */
+ @TableField("FLOW")
+ private String flow;
+
+ @TableField("JOB_BELONG_TO")
+ private Long jobBelongTo;
+
+ @TableField("JOB_FLAG_DELAY")
+ private String jobFlagDelay;
+
+ @TableField("JOB_FLAG_1")
+ private String jobFlag1;
+
+ @TableField(exist = false)
+ private String alarmValue;
+
+ @TableField(exist = false)
+ private String alarmContentName;
+
+ @TableField(exist = false)
+ private Integer recordId;
+
+ @Override
+ public String toString() {
+ return "AlarmJob{" +
+ "id=" + id +
+ ", jobcode=" + jobcode +
+ ", jogType=" + jobType +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", createTime=" + createTime +
+ ", jobStatus=" + jobStatus +
+ ", getJobPerson=" + getJobPerson +
+ ", getJobTime=" + getJobTime +
+ ", firstState=" + firstState +
+ ", firstStatePhotos=" + firstStatePhotos +
+ ", confirmJobPerson=" + confirmJobPerson +
+ ", confrimJobTime=" + confrimJobTime +
+ ", handleJobPerson=" + handleJobPerson +
+ ", handleJobTime=" + handleJobTime +
+ ", handleMessage=" + handleMessage +
+ ", handlePhotos=" + handlePhotos +
+ ", flow=" + flow +
+ ", recordId=" + recordId +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java
new file mode 100644
index 0000000..88b0b26
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmRecords.java
@@ -0,0 +1,108 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ *
+ *
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_records")
+public class AlarmRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 设备ID
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 闸井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 告警类型
+ */
+ @TableField("ALARM_TYPE")
+ private String alarmType;
+ /**
+ * 告警内容
+ */
+ @TableField("ALARM_CONTENT")
+ private String alarmContent;
+ /**
+ * 告警数值
+ */
+ @TableField("ALARM_VALUE")
+ private String alarmValue;
+ /**
+ * 告警等级
+ */
+ @TableField("ALARM_LEVEL")
+ private Integer alarmLevel;
+ /**
+ * 告警详情
+ */
+ @TableField("ALARM_MSG")
+ private String alarmMessage;
+ /**
+ * 告警时间
+ */
+ @TableField("ALARM_TIME")
+ private Date alarmTime;
+ /**
+ * 告警状态
+ */
+ @TableField("STATUS")
+ private String status;
+ /**
+ * 工单编号
+ */
+ @TableField("JOB_ID")
+ private Long jobId;
+
+ @TableField(exist = false)
+ private Integer jobStatus;
+
+ @Override
+ public String toString() {
+ return "AlarmRecords{" +
+ "id=" + id +
+ ", deviceId=" + deviceId +
+ ", devcode=" + devcode +
+ ", wellCode=" + wellCode +
+ ", alarmType=" + alarmType +
+ ", alarmContent=" + alarmContent +
+ ", alarmValue=" + alarmValue +
+ ", alarmLevel=" + alarmLevel +
+ ", alarmMessage=" + alarmMessage +
+ ", alarmTime=" + alarmTime +
+ ", status=" + status +
+ ", jobId=" + jobId +
+ ", jobStatus=" + jobStatus +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/DataGasDector.java b/src/main/java/com/casic/entity/DataGasDector.java
new file mode 100644
index 0000000..537789a
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasDector.java
@@ -0,0 +1,42 @@
+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 DataGasDector {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ private String devcode;
+ private String wellCode;
+ private String strength;
+
+ private String descn;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
deleted file mode 100644
index c43ccdf..0000000
--- a/src/main/java/com/casic/entity/DataGasReport.java
+++ /dev/null
@@ -1,69 +0,0 @@
-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/entity/DeviceSatatus.java b/src/main/java/com/casic/entity/DeviceSatatus.java
new file mode 100644
index 0000000..bab7903
--- /dev/null
+++ b/src/main/java/com/casic/entity/DeviceSatatus.java
@@ -0,0 +1,19 @@
+package com.casic.entity;
+
+import lombok.Data;
+
+/**
+ * 不使用了
+ *
+ */
+@Data
+public class DeviceSatatus {
+ private String deviceId;
+ private String cell;
+ private String cellTs;
+ private String onlineState;
+ private String onlineTs;
+ private String lastDataId;
+ private String lastDataJson;
+ private String lastDataTs;
+}
diff --git a/src/main/java/com/casic/model/DataContentParam.java b/src/main/java/com/casic/model/DataContentParam.java
new file mode 100644
index 0000000..46d298a
--- /dev/null
+++ b/src/main/java/com/casic/model/DataContentParam.java
@@ -0,0 +1,19 @@
+package com.casic.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DataContentParam {
+ private String msg_type;
+ private String error_val;
+ private String ch_cnt;
+ private String erro_cnt;
+ private String alarm_low_cnt;
+ private String alarm_high_cnt;
+ private String offline_cnt;
+ private List rtd_val;
+ private List adc_val;
+ private List status_val;
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/model/DataReportParam.java b/src/main/java/com/casic/model/DataReportParam.java
index 082814c..754f330 100644
--- a/src/main/java/com/casic/model/DataReportParam.java
+++ b/src/main/java/com/casic/model/DataReportParam.java
@@ -11,25 +11,12 @@
*/
@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;
+ private String iotId;
+ private String requestId;
+ private Object checkFailedData;
+ private String productKey;
+ private String gmtCreate;
+ private String deviceName;
+ private Object items;
}
diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java
index d883fe4..457d710 100644
--- a/src/main/java/com/casic/service/DeviceDataService.java
+++ b/src/main/java/com/casic/service/DeviceDataService.java
@@ -3,25 +3,18 @@
import com.casic.model.DataReportParam;
import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
+import org.springframework.web.bind.annotation.RequestBody;
/**
* @author cz
* @date 2022
*/
public interface DeviceDataService {
-
/**
*
* @param dataReportParam
* @return
*/
- ResponseData DeviceDataCommit(DataReportParam dataReportParam);
-
- /**
- *
- * @param heartbeatParam
- * @return
- */
- ResponseData heartBeatSave(HeartbeatParam heartbeatParam);
+ ResponseData gasReceiver(DataReportParam dataReportParam);
}
diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
index 93f0685..e473f0c 100644
--- a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
+++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
@@ -1,58 +1,49 @@
package com.casic.service.impl;
-import com.casic.dao.impl.DeviceDataMapper;
+import com.alibaba.druid.util.StringUtils;
+import com.alibaba.fastjson.JSON;
import com.casic.model.*;
import com.casic.service.DeviceDataService;
+import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import java.util.Map;
+
/**
* @author cz
- * @date 2022-6-20
+ * @date 2022-9-26
*/
@Slf4j
@Service
public class DeviceDataServiceImpl implements DeviceDataService {
- @Autowired
- DeviceDataMapper deviceDataMapper;
+ private final NormalDataProcessor normalDataProcessor;
- /**
- * @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;
+ public DeviceDataServiceImpl(NormalDataProcessor normalDataProcessor) {
+ this.normalDataProcessor = normalDataProcessor;
}
- /**
- * @param heartbeatParam
- * @return
- */
- public ResponseData heartBeatSave(HeartbeatParam heartbeatParam) {
+ public ResponseData gasReceiver(DataReportParam dataReportParam) {
ResponseData responseData = new ResponseData();
try {
- deviceDataMapper.editDeviceData(heartbeatParam);
+ Map> updDataMap = new ObjectMapper().convertValue(dataReportParam.getItems(), Map.class);
+ DataContentParam dataContentParam = JSON.parseObject(updDataMap.get("updData").get("value"), DataContentParam.class);
+ Long uptime = Long.valueOf(String.valueOf(updDataMap.get("updData").get("time")));
+ if (StringUtils.isEmpty(dataReportParam.getDeviceName())) {
+ responseData.setCode(200);
+ responseData.setMessage("没有设备编号");
+ return responseData;
+ }
+ normalDataProcessor.normalDataProvider(dataContentParam, uptime, dataReportParam.getDeviceName());
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);
+ log.error("主题:设备数据上报出现错误,异常信息为{}", sqlex);
}
return responseData;
}
diff --git a/src/main/java/com/casic/service/impl/NormalDataProcessor.java b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
new file mode 100644
index 0000000..3f7630a
--- /dev/null
+++ b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
@@ -0,0 +1,164 @@
+package com.casic.service.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmRecordsMapper;
+import com.casic.dao.DataGasMapper;
+import com.casic.dao.impl.AlarmJobDao;
+import com.casic.entity.AlarmJob;
+import com.casic.entity.AlarmRecords;
+import com.casic.entity.DataGasDector;
+import com.casic.model.DataContentParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Component
+public class NormalDataProcessor {
+
+ public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ @Value("${casic.device.gas-dector.type}")
+ private Long deviceType;
+ @Value("${casic.device.gas-dector.minutes}")
+ private String minutes;
+ @Value("${casic.device.gas-dector.enable-local}")
+ private Boolean enableLocal;
+ @Resource
+ private DataGasMapper dataGasMapper;
+ @Autowired
+ private AlarmJobDao alarmJobDao;
+ @Resource
+ private AlarmRecordsMapper alarmRecordsMapper;
+ private static Snowflake snowflake = new Snowflake(0, 2);
+
+ public void normalDataProvider(DataContentParam dataReportParam, Long timeStamp, String devcode) {
+ Map gasMap = dataGasMapper.getWellCode(devcode);
+ if (ObjectUtils.isEmpty(gasMap)) {
+ log.info("没有该设备编号录入" + devcode);
+ if (enableLocal) {
+ return;
+ }
+ }
+ Boolean updateFlag = false;
+ if (ObjectUtils.isEmpty(dataGasMapper.getLastData(minutes, devcode))) {
+ updateFlag = this.saveNormalData(dataReportParam, timeStamp, devcode, gasMap);
+ }
+ this.dataTaskJudge(dataReportParam, devcode, timeStamp, gasMap, updateFlag);
+ return;
+ }
+
+ /**
+ * 自定义时间存库
+ *
+ * @param dataReportParam
+ * @param timeStamp
+ * @param devcode
+ * @param gasMap
+ */
+ private Boolean saveNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap) {
+ Boolean updateFlag = false;
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ List dataReportFilter = dataReportParam.getRtd_val().stream().filter(
+ data -> {
+ return data != -1;
+ }
+ ).collect(Collectors.toList());
+ if (dataReportFilter.size() > 0 && dataReportFilter.get(dataReportFilter.size() - 1) != 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 1);
+ updateFlag = true;
+ } else if (dataReportFilter.get(dataReportFilter.size() - 1) == 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 0);
+ }
+ dataReportFilter.forEach(
+ data -> {
+ if (data != 65535) {
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+ }
+ );
+ return updateFlag;
+ }
+
+ /**
+ * 报警就存库
+ *
+ * @param dataReportParam
+ * @param devcode
+ * @param timeStamp
+ * @param gasMap
+ */
+ private void dataTaskJudge(DataContentParam dataReportParam, String devcode, Long timeStamp, Map gasMap, Boolean updateFlag) {
+ List> alarmLevelList = dataGasMapper.getAlarmLevelList(deviceType);
+ String wellCode = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "";
+ Long deviceId = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? Long.valueOf(String.valueOf(gasMap.get("deviceId"))) : -1;
+ final String gasMsgContent=dataGasMapper.getGasMsgContent(deviceType);
+ dataReportParam.getRtd_val().stream().filter(
+ dataReport -> {
+ return dataReport != -1 && dataReport != 65535;
+ }
+ ).forEach(
+ dataReport -> {
+ for (Map alarmLevelMap : alarmLevelList) {
+ if (dataReport > Float.valueOf(String.valueOf(alarmLevelMap.get("high_value")))) {
+ AlarmRecords alarmRecord = new AlarmRecords();
+ alarmRecord.setId(snowflake.nextId());
+ alarmRecord.setDeviceId(deviceId);
+ alarmRecord.setDevcode(devcode);
+ alarmRecord.setWellCode(wellCode);
+ alarmRecord.setAlarmType("1"); // 业务报警
+ alarmRecord.setAlarmContent("燃气报警");
+ alarmRecord.setAlarmValue(String.valueOf(dataReport));
+ alarmRecord.setAlarmTime(new Date());
+ alarmRecord.setStatus("1");
+ alarmRecord.setAlarmLevel(Integer.valueOf(alarmLevelMap.get("level").toString()));
+ alarmRecord.setAlarmMessage("燃气报警");
+ String jobId = alarmRecordsMapper.isOldAlarmRecord(devcode, "燃气报警");
+ // 超出报警阈值 生成一条报警消息
+ if (!StringUtils.isEmpty(jobId)) {
+ alarmRecordsMapper.updateOldAlarmRecord(devcode, "燃气报警");
+ alarmRecord.setJobId(Long.valueOf(jobId));
+ } else {
+ AlarmJob alarmJob = alarmJobDao.saveData(devcode, wellCode, "RQZD", "1");
+ alarmRecord.setJobId(alarmJob.getId());
+ }
+ alarmRecordsMapper.insert(alarmRecord);
+ if (!updateFlag) {
+ alarmNormalData(dataReportParam, timeStamp, devcode, gasMap, dataReport);
+ }
+ break;
+ }
+ }
+ }
+ );
+ }
+
+ private void alarmNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap, Integer data) {
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+
+}
+
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index fac2afe..f8a06a6 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -1,40 +1,19 @@
server:
- port: 11556
+ port: 11320
################### 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
+ driver-class-name: org.postgresql.Driver
+ url: jdbc:postgresql://111.198.10.15:11209/smartwell_zq_cs
+ 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
- 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
+ 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
index 86411e6..ffc01e9 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -19,18 +19,11 @@
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
+ device:
+ gas-dector:
+ type: 101
+ minutes: 60
+ enable-local: false
+# type 可燃气体的设备类型
+# minutes: 燃气外协设备上传数据的分钟数
\ No newline at end of file
diff --git a/target/classes/application-dev.yml b/target/classes/application-dev.yml
new file mode 100644
index 0000000..fac2afe
--- /dev/null
+++ b/target/classes/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/target/classes/application-postgre.yml b/target/classes/application-postgre.yml
new file mode 100644
index 0000000..2b7f69c
--- /dev/null
+++ b/target/classes/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/target/classes/application.yml b/target/classes/application.yml
new file mode 100644
index 0000000..86411e6
--- /dev/null
+++ b/target/classes/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
diff --git a/target/classes/com/casic/CasicApplication.class b/target/classes/com/casic/CasicApplication.class
new file mode 100644
index 0000000..68c2f95
--- /dev/null
+++ b/target/classes/com/casic/CasicApplication.class
Binary files differ
diff --git a/target/classes/com/casic/controller/DeviceController.class b/target/classes/com/casic/controller/DeviceController.class
new file mode 100644
index 0000000..478d6ae
--- /dev/null
+++ b/target/classes/com/casic/controller/DeviceController.class
Binary files differ
diff --git a/target/classes/com/casic/controller/DeviceDataController.class b/target/classes/com/casic/controller/DeviceDataController.class
new file mode 100644
index 0000000..1f4400c
--- /dev/null
+++ b/target/classes/com/casic/controller/DeviceDataController.class
Binary files differ
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh
new file mode 100644
index 0000000..e14c4c7
--- /dev/null
+++ b/src/main/build/bin/start.sh
@@ -0,0 +1,2 @@
+java -jar ./lib/${project.build.finalName}.jar
+
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
index c55e37d..0887f1f 100644
--- a/src/main/java/com/casic/CasicApplication.java
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -3,8 +3,6 @@
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;
/**
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
index e5351c9..be0de6b 100644
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -1,14 +1,19 @@
package com.casic.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.casic.model.DataReportParam;
-import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
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;
+import java.util.Map;
+
+@Slf4j
@RequestMapping("/data")
@RestController
public class DeviceDataController {
@@ -19,19 +24,16 @@
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 String gasReceiver(@RequestBody Map map) {
+// log.info("---------"+JSON.toJSONString(map));
+// return "200";
+// }
@PostMapping("/gas/receiver")
- public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
- return dataService.heartBeatSave(heartbeatParam);
+ public ResponseData gasReceiver(@RequestBody DataReportParam dataReportParam) {
+ log.info("---------"+JSON.toJSONString(dataReportParam));
+ return dataService.gasReceiver(dataReportParam);
}
}
diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java
new file mode 100644
index 0000000..e5e9c8d
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmJobMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmJob;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface AlarmJobMapper extends BaseMapper {
+
+ @Select("SELECT MAX(jobcode) " +
+ "FROM alarm_job " +
+ "WHERE JOBCODE like '${jobcode}%'")
+ String getJobCodeMaxSerial(@Param("jobcode") String jobcode);
+
+}
diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
new file mode 100644
index 0000000..8da7dcb
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmRecords;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface AlarmRecordsMapper extends BaseMapper {
+
+
+ @Select("SELECT JOB_ID AS \"jobId\"\n " +
+ "FROM alarm_records\n " +
+ "WHERE DEVCODE = #{devcode}\n " +
+ "AND ALARM_CONTENT = #{MsgContent}\n " +
+ "AND STATUS='1'\n " +
+ "AND JOB_ID>0 ")
+ String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+
+ @Update(" UPDATE alarm_records\n" +
+ " SET STATUS='0'\n" +
+ " WHERE DEVCODE = #{devcode}\n" +
+ " AND ALARM_CONTENT = #{MsgContent}\n" +
+ " AND STATUS='1'")
+ Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
index 47e7cce..33ce14a 100644
--- a/src/main/java/com/casic/dao/DataGasMapper.java
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -1,9 +1,48 @@
package com.casic.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.casic.entity.DataGasReport;
+import com.casic.entity.DataGasDector;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+import java.util.Map;
@Mapper
-public interface DataGasMapper extends BaseMapper {
+public interface DataGasMapper extends BaseMapper {
+
+ @Select("select bd.id as \"deviceId\",bwi.WELL_CODE AS \"wellCode\" " +
+ "from bus_device_well bdw " +
+ "join (select id from bus_device where devcode=#{devcode}) bd ON bd.id=bdw.device_id " +
+ "join bus_well_info bwi ON bwi.id=bdw.well_id ")
+ Map getWellCode(@Param("devcode") String devcode);
+
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{onlineState} " +
+ "WHERE devcode=#{devcode} ")
+ void setOfflineByDevcode(@Param("devcode") String devcode,
+ @Param("onlineState") Integer onlineState);
+
+ @Select("SELECT level,high_value " +
+ "FROM alarm_level " +
+ "WHERE device_type=#{deviceType} ")
+ List> getAlarmLevelList(@Param("deviceType") Long deviceType);
+
+ @Select("SELECT devcode " +
+ "FROM data_gas_dector " +
+ "WHERE devcode=#{devcode} " +
+ "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+
+ "ORDER BY logtime DESC " +
+ "LIMIT 1")
+ String getLastData(@Param("minutes") String minutes,
+ @Param("devcode") String devcode);
+
+ @Select("SELECT alarm_content" +
+ "FROM BASE_alarm_content_type" +
+ "where device_type=#{deviceType}")
+ String getGasMsgContent(@Param("deviceType")Long deviceType);
+
+
}
diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
new file mode 100644
index 0000000..5131821
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
@@ -0,0 +1,59 @@
+package com.casic.dao.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmJobMapper;
+import com.casic.entity.AlarmJob;
+import org.springframework.stereotype.Component;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Component
+public class AlarmJobDao {
+
+ private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ private static Snowflake snowflake = new Snowflake(0, 2);
+// private static final Sn
+
+ @Resource
+ private AlarmJobMapper alarmJobMapper;
+
+ public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) {
+ AlarmJob alarmJob = new AlarmJob();
+ alarmJob.setId(snowflake.nextId());
+ alarmJob.setDevcode(devCode);
+ alarmJob.setWellCode(wellCode);
+ alarmJob.setJobStatus("0");
+ alarmJob.setCreateTime(new Date());
+ alarmJob.setJobcode(this.produceJobCode(devTypeName));
+ alarmJob.setJobType(jobType);
+ alarmJobMapper.insert(alarmJob);
+ return alarmJob;
+ }
+
+ /**
+ * 前缀+日期+4位流水号
+ *
+ * @param devTypeName
+ * @return
+ */
+ private String produceJobCode(String devTypeName) {
+ String pre = devTypeName;
+ String dataStr = sdf6.format(new Date());
+ String fix = this.getJobCodeMaxSerial(pre + dataStr);
+ return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001";
+ }
+
+
+ private String getJobCodeMaxSerial(String jobcode) {
+ String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode);
+ String fix = "";
+ if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) {
+ fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4);
+ }
+ return fix;
+ }
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
deleted file mode 100644
index c797e55..0000000
--- a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
+++ /dev/null
@@ -1,68 +0,0 @@
-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/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java
new file mode 100644
index 0000000..8a0f764
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmJob.java
@@ -0,0 +1,165 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 报警工单表
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_job")
+public class AlarmJob extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 工单编号
+ */
+ @TableField("JOBCODE")
+ private String jobcode;
+ /**
+ * 工单类型
+ */
+ @TableField("JOG_TYPE")
+ private String jobType;
+ /**
+ * 井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 工单创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+ /**
+ * 工单状态(0待处理,1待确认,2处理中,3完成)
+ */
+ @TableField("JOB_STATUS")
+ private String jobStatus;
+ /**
+ * 接单人员
+ */
+ @TableField("GET_JOB_PERSON")
+ private Long getJobPerson;
+ /**
+ * 接单时间
+ */
+ @TableField("GET_JOB_TIME")
+ private Date getJobTime;
+ /**
+ * 应接单时间
+ */
+ @TableField("SHOULD_GET_TIME")
+ private Date shouldGetTime;
+ /**
+ * 第一现场情况
+ */
+ @TableField("FIRST_STATE")
+ private String firstState;
+ /**
+ * 第一现场照片
+ */
+ @TableField("FIRST_STATE_PHOTOS")
+ private String firstStatePhotos;
+ /**
+ * 确认人员
+ */
+ @TableField("CONFIRM_JOB_PERSON")
+ private Long confirmJobPerson;
+ /**
+ * 确认时间
+ */
+ @TableField("CONFRIM_JOB_TIME")
+ private Date confrimJobTime;
+ /**
+ * 处理人员
+ */
+ @TableField("HANDLE_JOB_Person")
+ private Long handleJobPerson;
+ /**
+ * 处理时间
+ */
+ @TableField("HANDLE_JOB_TIME")
+ private Date handleJobTime;
+ /**
+ * 维护情况记录
+ */
+ @TableField("HANDLE_MESSAGE")
+ private String handleMessage;
+ /**
+ * 维护图片
+ */
+ @TableField("HANDLE_PHOTOS")
+ private String handlePhotos;
+ /**
+ * 工单流转记录
+ */
+ @TableField("FLOW")
+ private String flow;
+
+ @TableField("JOB_BELONG_TO")
+ private Long jobBelongTo;
+
+ @TableField("JOB_FLAG_DELAY")
+ private String jobFlagDelay;
+
+ @TableField("JOB_FLAG_1")
+ private String jobFlag1;
+
+ @TableField(exist = false)
+ private String alarmValue;
+
+ @TableField(exist = false)
+ private String alarmContentName;
+
+ @TableField(exist = false)
+ private Integer recordId;
+
+ @Override
+ public String toString() {
+ return "AlarmJob{" +
+ "id=" + id +
+ ", jobcode=" + jobcode +
+ ", jogType=" + jobType +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", createTime=" + createTime +
+ ", jobStatus=" + jobStatus +
+ ", getJobPerson=" + getJobPerson +
+ ", getJobTime=" + getJobTime +
+ ", firstState=" + firstState +
+ ", firstStatePhotos=" + firstStatePhotos +
+ ", confirmJobPerson=" + confirmJobPerson +
+ ", confrimJobTime=" + confrimJobTime +
+ ", handleJobPerson=" + handleJobPerson +
+ ", handleJobTime=" + handleJobTime +
+ ", handleMessage=" + handleMessage +
+ ", handlePhotos=" + handlePhotos +
+ ", flow=" + flow +
+ ", recordId=" + recordId +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java
new file mode 100644
index 0000000..88b0b26
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmRecords.java
@@ -0,0 +1,108 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ *
+ *
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_records")
+public class AlarmRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 设备ID
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 闸井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 告警类型
+ */
+ @TableField("ALARM_TYPE")
+ private String alarmType;
+ /**
+ * 告警内容
+ */
+ @TableField("ALARM_CONTENT")
+ private String alarmContent;
+ /**
+ * 告警数值
+ */
+ @TableField("ALARM_VALUE")
+ private String alarmValue;
+ /**
+ * 告警等级
+ */
+ @TableField("ALARM_LEVEL")
+ private Integer alarmLevel;
+ /**
+ * 告警详情
+ */
+ @TableField("ALARM_MSG")
+ private String alarmMessage;
+ /**
+ * 告警时间
+ */
+ @TableField("ALARM_TIME")
+ private Date alarmTime;
+ /**
+ * 告警状态
+ */
+ @TableField("STATUS")
+ private String status;
+ /**
+ * 工单编号
+ */
+ @TableField("JOB_ID")
+ private Long jobId;
+
+ @TableField(exist = false)
+ private Integer jobStatus;
+
+ @Override
+ public String toString() {
+ return "AlarmRecords{" +
+ "id=" + id +
+ ", deviceId=" + deviceId +
+ ", devcode=" + devcode +
+ ", wellCode=" + wellCode +
+ ", alarmType=" + alarmType +
+ ", alarmContent=" + alarmContent +
+ ", alarmValue=" + alarmValue +
+ ", alarmLevel=" + alarmLevel +
+ ", alarmMessage=" + alarmMessage +
+ ", alarmTime=" + alarmTime +
+ ", status=" + status +
+ ", jobId=" + jobId +
+ ", jobStatus=" + jobStatus +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/DataGasDector.java b/src/main/java/com/casic/entity/DataGasDector.java
new file mode 100644
index 0000000..537789a
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasDector.java
@@ -0,0 +1,42 @@
+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 DataGasDector {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ private String devcode;
+ private String wellCode;
+ private String strength;
+
+ private String descn;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
deleted file mode 100644
index c43ccdf..0000000
--- a/src/main/java/com/casic/entity/DataGasReport.java
+++ /dev/null
@@ -1,69 +0,0 @@
-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/entity/DeviceSatatus.java b/src/main/java/com/casic/entity/DeviceSatatus.java
new file mode 100644
index 0000000..bab7903
--- /dev/null
+++ b/src/main/java/com/casic/entity/DeviceSatatus.java
@@ -0,0 +1,19 @@
+package com.casic.entity;
+
+import lombok.Data;
+
+/**
+ * 不使用了
+ *
+ */
+@Data
+public class DeviceSatatus {
+ private String deviceId;
+ private String cell;
+ private String cellTs;
+ private String onlineState;
+ private String onlineTs;
+ private String lastDataId;
+ private String lastDataJson;
+ private String lastDataTs;
+}
diff --git a/src/main/java/com/casic/model/DataContentParam.java b/src/main/java/com/casic/model/DataContentParam.java
new file mode 100644
index 0000000..46d298a
--- /dev/null
+++ b/src/main/java/com/casic/model/DataContentParam.java
@@ -0,0 +1,19 @@
+package com.casic.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DataContentParam {
+ private String msg_type;
+ private String error_val;
+ private String ch_cnt;
+ private String erro_cnt;
+ private String alarm_low_cnt;
+ private String alarm_high_cnt;
+ private String offline_cnt;
+ private List rtd_val;
+ private List adc_val;
+ private List status_val;
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/model/DataReportParam.java b/src/main/java/com/casic/model/DataReportParam.java
index 082814c..754f330 100644
--- a/src/main/java/com/casic/model/DataReportParam.java
+++ b/src/main/java/com/casic/model/DataReportParam.java
@@ -11,25 +11,12 @@
*/
@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;
+ private String iotId;
+ private String requestId;
+ private Object checkFailedData;
+ private String productKey;
+ private String gmtCreate;
+ private String deviceName;
+ private Object items;
}
diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java
index d883fe4..457d710 100644
--- a/src/main/java/com/casic/service/DeviceDataService.java
+++ b/src/main/java/com/casic/service/DeviceDataService.java
@@ -3,25 +3,18 @@
import com.casic.model.DataReportParam;
import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
+import org.springframework.web.bind.annotation.RequestBody;
/**
* @author cz
* @date 2022
*/
public interface DeviceDataService {
-
/**
*
* @param dataReportParam
* @return
*/
- ResponseData DeviceDataCommit(DataReportParam dataReportParam);
-
- /**
- *
- * @param heartbeatParam
- * @return
- */
- ResponseData heartBeatSave(HeartbeatParam heartbeatParam);
+ ResponseData gasReceiver(DataReportParam dataReportParam);
}
diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
index 93f0685..e473f0c 100644
--- a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
+++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
@@ -1,58 +1,49 @@
package com.casic.service.impl;
-import com.casic.dao.impl.DeviceDataMapper;
+import com.alibaba.druid.util.StringUtils;
+import com.alibaba.fastjson.JSON;
import com.casic.model.*;
import com.casic.service.DeviceDataService;
+import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import java.util.Map;
+
/**
* @author cz
- * @date 2022-6-20
+ * @date 2022-9-26
*/
@Slf4j
@Service
public class DeviceDataServiceImpl implements DeviceDataService {
- @Autowired
- DeviceDataMapper deviceDataMapper;
+ private final NormalDataProcessor normalDataProcessor;
- /**
- * @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;
+ public DeviceDataServiceImpl(NormalDataProcessor normalDataProcessor) {
+ this.normalDataProcessor = normalDataProcessor;
}
- /**
- * @param heartbeatParam
- * @return
- */
- public ResponseData heartBeatSave(HeartbeatParam heartbeatParam) {
+ public ResponseData gasReceiver(DataReportParam dataReportParam) {
ResponseData responseData = new ResponseData();
try {
- deviceDataMapper.editDeviceData(heartbeatParam);
+ Map> updDataMap = new ObjectMapper().convertValue(dataReportParam.getItems(), Map.class);
+ DataContentParam dataContentParam = JSON.parseObject(updDataMap.get("updData").get("value"), DataContentParam.class);
+ Long uptime = Long.valueOf(String.valueOf(updDataMap.get("updData").get("time")));
+ if (StringUtils.isEmpty(dataReportParam.getDeviceName())) {
+ responseData.setCode(200);
+ responseData.setMessage("没有设备编号");
+ return responseData;
+ }
+ normalDataProcessor.normalDataProvider(dataContentParam, uptime, dataReportParam.getDeviceName());
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);
+ log.error("主题:设备数据上报出现错误,异常信息为{}", sqlex);
}
return responseData;
}
diff --git a/src/main/java/com/casic/service/impl/NormalDataProcessor.java b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
new file mode 100644
index 0000000..3f7630a
--- /dev/null
+++ b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
@@ -0,0 +1,164 @@
+package com.casic.service.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmRecordsMapper;
+import com.casic.dao.DataGasMapper;
+import com.casic.dao.impl.AlarmJobDao;
+import com.casic.entity.AlarmJob;
+import com.casic.entity.AlarmRecords;
+import com.casic.entity.DataGasDector;
+import com.casic.model.DataContentParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Component
+public class NormalDataProcessor {
+
+ public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ @Value("${casic.device.gas-dector.type}")
+ private Long deviceType;
+ @Value("${casic.device.gas-dector.minutes}")
+ private String minutes;
+ @Value("${casic.device.gas-dector.enable-local}")
+ private Boolean enableLocal;
+ @Resource
+ private DataGasMapper dataGasMapper;
+ @Autowired
+ private AlarmJobDao alarmJobDao;
+ @Resource
+ private AlarmRecordsMapper alarmRecordsMapper;
+ private static Snowflake snowflake = new Snowflake(0, 2);
+
+ public void normalDataProvider(DataContentParam dataReportParam, Long timeStamp, String devcode) {
+ Map gasMap = dataGasMapper.getWellCode(devcode);
+ if (ObjectUtils.isEmpty(gasMap)) {
+ log.info("没有该设备编号录入" + devcode);
+ if (enableLocal) {
+ return;
+ }
+ }
+ Boolean updateFlag = false;
+ if (ObjectUtils.isEmpty(dataGasMapper.getLastData(minutes, devcode))) {
+ updateFlag = this.saveNormalData(dataReportParam, timeStamp, devcode, gasMap);
+ }
+ this.dataTaskJudge(dataReportParam, devcode, timeStamp, gasMap, updateFlag);
+ return;
+ }
+
+ /**
+ * 自定义时间存库
+ *
+ * @param dataReportParam
+ * @param timeStamp
+ * @param devcode
+ * @param gasMap
+ */
+ private Boolean saveNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap) {
+ Boolean updateFlag = false;
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ List dataReportFilter = dataReportParam.getRtd_val().stream().filter(
+ data -> {
+ return data != -1;
+ }
+ ).collect(Collectors.toList());
+ if (dataReportFilter.size() > 0 && dataReportFilter.get(dataReportFilter.size() - 1) != 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 1);
+ updateFlag = true;
+ } else if (dataReportFilter.get(dataReportFilter.size() - 1) == 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 0);
+ }
+ dataReportFilter.forEach(
+ data -> {
+ if (data != 65535) {
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+ }
+ );
+ return updateFlag;
+ }
+
+ /**
+ * 报警就存库
+ *
+ * @param dataReportParam
+ * @param devcode
+ * @param timeStamp
+ * @param gasMap
+ */
+ private void dataTaskJudge(DataContentParam dataReportParam, String devcode, Long timeStamp, Map gasMap, Boolean updateFlag) {
+ List> alarmLevelList = dataGasMapper.getAlarmLevelList(deviceType);
+ String wellCode = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "";
+ Long deviceId = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? Long.valueOf(String.valueOf(gasMap.get("deviceId"))) : -1;
+ final String gasMsgContent=dataGasMapper.getGasMsgContent(deviceType);
+ dataReportParam.getRtd_val().stream().filter(
+ dataReport -> {
+ return dataReport != -1 && dataReport != 65535;
+ }
+ ).forEach(
+ dataReport -> {
+ for (Map alarmLevelMap : alarmLevelList) {
+ if (dataReport > Float.valueOf(String.valueOf(alarmLevelMap.get("high_value")))) {
+ AlarmRecords alarmRecord = new AlarmRecords();
+ alarmRecord.setId(snowflake.nextId());
+ alarmRecord.setDeviceId(deviceId);
+ alarmRecord.setDevcode(devcode);
+ alarmRecord.setWellCode(wellCode);
+ alarmRecord.setAlarmType("1"); // 业务报警
+ alarmRecord.setAlarmContent("燃气报警");
+ alarmRecord.setAlarmValue(String.valueOf(dataReport));
+ alarmRecord.setAlarmTime(new Date());
+ alarmRecord.setStatus("1");
+ alarmRecord.setAlarmLevel(Integer.valueOf(alarmLevelMap.get("level").toString()));
+ alarmRecord.setAlarmMessage("燃气报警");
+ String jobId = alarmRecordsMapper.isOldAlarmRecord(devcode, "燃气报警");
+ // 超出报警阈值 生成一条报警消息
+ if (!StringUtils.isEmpty(jobId)) {
+ alarmRecordsMapper.updateOldAlarmRecord(devcode, "燃气报警");
+ alarmRecord.setJobId(Long.valueOf(jobId));
+ } else {
+ AlarmJob alarmJob = alarmJobDao.saveData(devcode, wellCode, "RQZD", "1");
+ alarmRecord.setJobId(alarmJob.getId());
+ }
+ alarmRecordsMapper.insert(alarmRecord);
+ if (!updateFlag) {
+ alarmNormalData(dataReportParam, timeStamp, devcode, gasMap, dataReport);
+ }
+ break;
+ }
+ }
+ }
+ );
+ }
+
+ private void alarmNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap, Integer data) {
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+
+}
+
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index fac2afe..f8a06a6 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -1,40 +1,19 @@
server:
- port: 11556
+ port: 11320
################### 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
+ driver-class-name: org.postgresql.Driver
+ url: jdbc:postgresql://111.198.10.15:11209/smartwell_zq_cs
+ 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
- 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
+ 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
index 86411e6..ffc01e9 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -19,18 +19,11 @@
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
+ device:
+ gas-dector:
+ type: 101
+ minutes: 60
+ enable-local: false
+# type 可燃气体的设备类型
+# minutes: 燃气外协设备上传数据的分钟数
\ No newline at end of file
diff --git a/target/classes/application-dev.yml b/target/classes/application-dev.yml
new file mode 100644
index 0000000..fac2afe
--- /dev/null
+++ b/target/classes/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/target/classes/application-postgre.yml b/target/classes/application-postgre.yml
new file mode 100644
index 0000000..2b7f69c
--- /dev/null
+++ b/target/classes/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/target/classes/application.yml b/target/classes/application.yml
new file mode 100644
index 0000000..86411e6
--- /dev/null
+++ b/target/classes/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
diff --git a/target/classes/com/casic/CasicApplication.class b/target/classes/com/casic/CasicApplication.class
new file mode 100644
index 0000000..68c2f95
--- /dev/null
+++ b/target/classes/com/casic/CasicApplication.class
Binary files differ
diff --git a/target/classes/com/casic/controller/DeviceController.class b/target/classes/com/casic/controller/DeviceController.class
new file mode 100644
index 0000000..478d6ae
--- /dev/null
+++ b/target/classes/com/casic/controller/DeviceController.class
Binary files differ
diff --git a/target/classes/com/casic/controller/DeviceDataController.class b/target/classes/com/casic/controller/DeviceDataController.class
new file mode 100644
index 0000000..1f4400c
--- /dev/null
+++ b/target/classes/com/casic/controller/DeviceDataController.class
Binary files differ
diff --git a/target/classes/com/casic/dao/DataGasMapper.class b/target/classes/com/casic/dao/DataGasMapper.class
new file mode 100644
index 0000000..557d539
--- /dev/null
+++ b/target/classes/com/casic/dao/DataGasMapper.class
Binary files differ
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh
new file mode 100644
index 0000000..e14c4c7
--- /dev/null
+++ b/src/main/build/bin/start.sh
@@ -0,0 +1,2 @@
+java -jar ./lib/${project.build.finalName}.jar
+
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
index c55e37d..0887f1f 100644
--- a/src/main/java/com/casic/CasicApplication.java
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -3,8 +3,6 @@
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;
/**
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
index e5351c9..be0de6b 100644
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -1,14 +1,19 @@
package com.casic.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.casic.model.DataReportParam;
-import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
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;
+import java.util.Map;
+
+@Slf4j
@RequestMapping("/data")
@RestController
public class DeviceDataController {
@@ -19,19 +24,16 @@
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 String gasReceiver(@RequestBody Map map) {
+// log.info("---------"+JSON.toJSONString(map));
+// return "200";
+// }
@PostMapping("/gas/receiver")
- public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
- return dataService.heartBeatSave(heartbeatParam);
+ public ResponseData gasReceiver(@RequestBody DataReportParam dataReportParam) {
+ log.info("---------"+JSON.toJSONString(dataReportParam));
+ return dataService.gasReceiver(dataReportParam);
}
}
diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java
new file mode 100644
index 0000000..e5e9c8d
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmJobMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmJob;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface AlarmJobMapper extends BaseMapper {
+
+ @Select("SELECT MAX(jobcode) " +
+ "FROM alarm_job " +
+ "WHERE JOBCODE like '${jobcode}%'")
+ String getJobCodeMaxSerial(@Param("jobcode") String jobcode);
+
+}
diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
new file mode 100644
index 0000000..8da7dcb
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmRecords;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface AlarmRecordsMapper extends BaseMapper {
+
+
+ @Select("SELECT JOB_ID AS \"jobId\"\n " +
+ "FROM alarm_records\n " +
+ "WHERE DEVCODE = #{devcode}\n " +
+ "AND ALARM_CONTENT = #{MsgContent}\n " +
+ "AND STATUS='1'\n " +
+ "AND JOB_ID>0 ")
+ String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+
+ @Update(" UPDATE alarm_records\n" +
+ " SET STATUS='0'\n" +
+ " WHERE DEVCODE = #{devcode}\n" +
+ " AND ALARM_CONTENT = #{MsgContent}\n" +
+ " AND STATUS='1'")
+ Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
index 47e7cce..33ce14a 100644
--- a/src/main/java/com/casic/dao/DataGasMapper.java
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -1,9 +1,48 @@
package com.casic.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.casic.entity.DataGasReport;
+import com.casic.entity.DataGasDector;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+import java.util.Map;
@Mapper
-public interface DataGasMapper extends BaseMapper {
+public interface DataGasMapper extends BaseMapper {
+
+ @Select("select bd.id as \"deviceId\",bwi.WELL_CODE AS \"wellCode\" " +
+ "from bus_device_well bdw " +
+ "join (select id from bus_device where devcode=#{devcode}) bd ON bd.id=bdw.device_id " +
+ "join bus_well_info bwi ON bwi.id=bdw.well_id ")
+ Map getWellCode(@Param("devcode") String devcode);
+
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{onlineState} " +
+ "WHERE devcode=#{devcode} ")
+ void setOfflineByDevcode(@Param("devcode") String devcode,
+ @Param("onlineState") Integer onlineState);
+
+ @Select("SELECT level,high_value " +
+ "FROM alarm_level " +
+ "WHERE device_type=#{deviceType} ")
+ List> getAlarmLevelList(@Param("deviceType") Long deviceType);
+
+ @Select("SELECT devcode " +
+ "FROM data_gas_dector " +
+ "WHERE devcode=#{devcode} " +
+ "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+
+ "ORDER BY logtime DESC " +
+ "LIMIT 1")
+ String getLastData(@Param("minutes") String minutes,
+ @Param("devcode") String devcode);
+
+ @Select("SELECT alarm_content" +
+ "FROM BASE_alarm_content_type" +
+ "where device_type=#{deviceType}")
+ String getGasMsgContent(@Param("deviceType")Long deviceType);
+
+
}
diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
new file mode 100644
index 0000000..5131821
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
@@ -0,0 +1,59 @@
+package com.casic.dao.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmJobMapper;
+import com.casic.entity.AlarmJob;
+import org.springframework.stereotype.Component;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Component
+public class AlarmJobDao {
+
+ private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ private static Snowflake snowflake = new Snowflake(0, 2);
+// private static final Sn
+
+ @Resource
+ private AlarmJobMapper alarmJobMapper;
+
+ public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) {
+ AlarmJob alarmJob = new AlarmJob();
+ alarmJob.setId(snowflake.nextId());
+ alarmJob.setDevcode(devCode);
+ alarmJob.setWellCode(wellCode);
+ alarmJob.setJobStatus("0");
+ alarmJob.setCreateTime(new Date());
+ alarmJob.setJobcode(this.produceJobCode(devTypeName));
+ alarmJob.setJobType(jobType);
+ alarmJobMapper.insert(alarmJob);
+ return alarmJob;
+ }
+
+ /**
+ * 前缀+日期+4位流水号
+ *
+ * @param devTypeName
+ * @return
+ */
+ private String produceJobCode(String devTypeName) {
+ String pre = devTypeName;
+ String dataStr = sdf6.format(new Date());
+ String fix = this.getJobCodeMaxSerial(pre + dataStr);
+ return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001";
+ }
+
+
+ private String getJobCodeMaxSerial(String jobcode) {
+ String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode);
+ String fix = "";
+ if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) {
+ fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4);
+ }
+ return fix;
+ }
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
deleted file mode 100644
index c797e55..0000000
--- a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
+++ /dev/null
@@ -1,68 +0,0 @@
-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/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java
new file mode 100644
index 0000000..8a0f764
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmJob.java
@@ -0,0 +1,165 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 报警工单表
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_job")
+public class AlarmJob extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 工单编号
+ */
+ @TableField("JOBCODE")
+ private String jobcode;
+ /**
+ * 工单类型
+ */
+ @TableField("JOG_TYPE")
+ private String jobType;
+ /**
+ * 井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 工单创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+ /**
+ * 工单状态(0待处理,1待确认,2处理中,3完成)
+ */
+ @TableField("JOB_STATUS")
+ private String jobStatus;
+ /**
+ * 接单人员
+ */
+ @TableField("GET_JOB_PERSON")
+ private Long getJobPerson;
+ /**
+ * 接单时间
+ */
+ @TableField("GET_JOB_TIME")
+ private Date getJobTime;
+ /**
+ * 应接单时间
+ */
+ @TableField("SHOULD_GET_TIME")
+ private Date shouldGetTime;
+ /**
+ * 第一现场情况
+ */
+ @TableField("FIRST_STATE")
+ private String firstState;
+ /**
+ * 第一现场照片
+ */
+ @TableField("FIRST_STATE_PHOTOS")
+ private String firstStatePhotos;
+ /**
+ * 确认人员
+ */
+ @TableField("CONFIRM_JOB_PERSON")
+ private Long confirmJobPerson;
+ /**
+ * 确认时间
+ */
+ @TableField("CONFRIM_JOB_TIME")
+ private Date confrimJobTime;
+ /**
+ * 处理人员
+ */
+ @TableField("HANDLE_JOB_Person")
+ private Long handleJobPerson;
+ /**
+ * 处理时间
+ */
+ @TableField("HANDLE_JOB_TIME")
+ private Date handleJobTime;
+ /**
+ * 维护情况记录
+ */
+ @TableField("HANDLE_MESSAGE")
+ private String handleMessage;
+ /**
+ * 维护图片
+ */
+ @TableField("HANDLE_PHOTOS")
+ private String handlePhotos;
+ /**
+ * 工单流转记录
+ */
+ @TableField("FLOW")
+ private String flow;
+
+ @TableField("JOB_BELONG_TO")
+ private Long jobBelongTo;
+
+ @TableField("JOB_FLAG_DELAY")
+ private String jobFlagDelay;
+
+ @TableField("JOB_FLAG_1")
+ private String jobFlag1;
+
+ @TableField(exist = false)
+ private String alarmValue;
+
+ @TableField(exist = false)
+ private String alarmContentName;
+
+ @TableField(exist = false)
+ private Integer recordId;
+
+ @Override
+ public String toString() {
+ return "AlarmJob{" +
+ "id=" + id +
+ ", jobcode=" + jobcode +
+ ", jogType=" + jobType +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", createTime=" + createTime +
+ ", jobStatus=" + jobStatus +
+ ", getJobPerson=" + getJobPerson +
+ ", getJobTime=" + getJobTime +
+ ", firstState=" + firstState +
+ ", firstStatePhotos=" + firstStatePhotos +
+ ", confirmJobPerson=" + confirmJobPerson +
+ ", confrimJobTime=" + confrimJobTime +
+ ", handleJobPerson=" + handleJobPerson +
+ ", handleJobTime=" + handleJobTime +
+ ", handleMessage=" + handleMessage +
+ ", handlePhotos=" + handlePhotos +
+ ", flow=" + flow +
+ ", recordId=" + recordId +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java
new file mode 100644
index 0000000..88b0b26
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmRecords.java
@@ -0,0 +1,108 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ *
+ *
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_records")
+public class AlarmRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 设备ID
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 闸井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 告警类型
+ */
+ @TableField("ALARM_TYPE")
+ private String alarmType;
+ /**
+ * 告警内容
+ */
+ @TableField("ALARM_CONTENT")
+ private String alarmContent;
+ /**
+ * 告警数值
+ */
+ @TableField("ALARM_VALUE")
+ private String alarmValue;
+ /**
+ * 告警等级
+ */
+ @TableField("ALARM_LEVEL")
+ private Integer alarmLevel;
+ /**
+ * 告警详情
+ */
+ @TableField("ALARM_MSG")
+ private String alarmMessage;
+ /**
+ * 告警时间
+ */
+ @TableField("ALARM_TIME")
+ private Date alarmTime;
+ /**
+ * 告警状态
+ */
+ @TableField("STATUS")
+ private String status;
+ /**
+ * 工单编号
+ */
+ @TableField("JOB_ID")
+ private Long jobId;
+
+ @TableField(exist = false)
+ private Integer jobStatus;
+
+ @Override
+ public String toString() {
+ return "AlarmRecords{" +
+ "id=" + id +
+ ", deviceId=" + deviceId +
+ ", devcode=" + devcode +
+ ", wellCode=" + wellCode +
+ ", alarmType=" + alarmType +
+ ", alarmContent=" + alarmContent +
+ ", alarmValue=" + alarmValue +
+ ", alarmLevel=" + alarmLevel +
+ ", alarmMessage=" + alarmMessage +
+ ", alarmTime=" + alarmTime +
+ ", status=" + status +
+ ", jobId=" + jobId +
+ ", jobStatus=" + jobStatus +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/DataGasDector.java b/src/main/java/com/casic/entity/DataGasDector.java
new file mode 100644
index 0000000..537789a
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasDector.java
@@ -0,0 +1,42 @@
+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 DataGasDector {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ private String devcode;
+ private String wellCode;
+ private String strength;
+
+ private String descn;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
deleted file mode 100644
index c43ccdf..0000000
--- a/src/main/java/com/casic/entity/DataGasReport.java
+++ /dev/null
@@ -1,69 +0,0 @@
-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/entity/DeviceSatatus.java b/src/main/java/com/casic/entity/DeviceSatatus.java
new file mode 100644
index 0000000..bab7903
--- /dev/null
+++ b/src/main/java/com/casic/entity/DeviceSatatus.java
@@ -0,0 +1,19 @@
+package com.casic.entity;
+
+import lombok.Data;
+
+/**
+ * 不使用了
+ *
+ */
+@Data
+public class DeviceSatatus {
+ private String deviceId;
+ private String cell;
+ private String cellTs;
+ private String onlineState;
+ private String onlineTs;
+ private String lastDataId;
+ private String lastDataJson;
+ private String lastDataTs;
+}
diff --git a/src/main/java/com/casic/model/DataContentParam.java b/src/main/java/com/casic/model/DataContentParam.java
new file mode 100644
index 0000000..46d298a
--- /dev/null
+++ b/src/main/java/com/casic/model/DataContentParam.java
@@ -0,0 +1,19 @@
+package com.casic.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DataContentParam {
+ private String msg_type;
+ private String error_val;
+ private String ch_cnt;
+ private String erro_cnt;
+ private String alarm_low_cnt;
+ private String alarm_high_cnt;
+ private String offline_cnt;
+ private List rtd_val;
+ private List adc_val;
+ private List status_val;
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/model/DataReportParam.java b/src/main/java/com/casic/model/DataReportParam.java
index 082814c..754f330 100644
--- a/src/main/java/com/casic/model/DataReportParam.java
+++ b/src/main/java/com/casic/model/DataReportParam.java
@@ -11,25 +11,12 @@
*/
@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;
+ private String iotId;
+ private String requestId;
+ private Object checkFailedData;
+ private String productKey;
+ private String gmtCreate;
+ private String deviceName;
+ private Object items;
}
diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java
index d883fe4..457d710 100644
--- a/src/main/java/com/casic/service/DeviceDataService.java
+++ b/src/main/java/com/casic/service/DeviceDataService.java
@@ -3,25 +3,18 @@
import com.casic.model.DataReportParam;
import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
+import org.springframework.web.bind.annotation.RequestBody;
/**
* @author cz
* @date 2022
*/
public interface DeviceDataService {
-
/**
*
* @param dataReportParam
* @return
*/
- ResponseData DeviceDataCommit(DataReportParam dataReportParam);
-
- /**
- *
- * @param heartbeatParam
- * @return
- */
- ResponseData heartBeatSave(HeartbeatParam heartbeatParam);
+ ResponseData gasReceiver(DataReportParam dataReportParam);
}
diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
index 93f0685..e473f0c 100644
--- a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
+++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
@@ -1,58 +1,49 @@
package com.casic.service.impl;
-import com.casic.dao.impl.DeviceDataMapper;
+import com.alibaba.druid.util.StringUtils;
+import com.alibaba.fastjson.JSON;
import com.casic.model.*;
import com.casic.service.DeviceDataService;
+import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import java.util.Map;
+
/**
* @author cz
- * @date 2022-6-20
+ * @date 2022-9-26
*/
@Slf4j
@Service
public class DeviceDataServiceImpl implements DeviceDataService {
- @Autowired
- DeviceDataMapper deviceDataMapper;
+ private final NormalDataProcessor normalDataProcessor;
- /**
- * @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;
+ public DeviceDataServiceImpl(NormalDataProcessor normalDataProcessor) {
+ this.normalDataProcessor = normalDataProcessor;
}
- /**
- * @param heartbeatParam
- * @return
- */
- public ResponseData heartBeatSave(HeartbeatParam heartbeatParam) {
+ public ResponseData gasReceiver(DataReportParam dataReportParam) {
ResponseData responseData = new ResponseData();
try {
- deviceDataMapper.editDeviceData(heartbeatParam);
+ Map> updDataMap = new ObjectMapper().convertValue(dataReportParam.getItems(), Map.class);
+ DataContentParam dataContentParam = JSON.parseObject(updDataMap.get("updData").get("value"), DataContentParam.class);
+ Long uptime = Long.valueOf(String.valueOf(updDataMap.get("updData").get("time")));
+ if (StringUtils.isEmpty(dataReportParam.getDeviceName())) {
+ responseData.setCode(200);
+ responseData.setMessage("没有设备编号");
+ return responseData;
+ }
+ normalDataProcessor.normalDataProvider(dataContentParam, uptime, dataReportParam.getDeviceName());
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);
+ log.error("主题:设备数据上报出现错误,异常信息为{}", sqlex);
}
return responseData;
}
diff --git a/src/main/java/com/casic/service/impl/NormalDataProcessor.java b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
new file mode 100644
index 0000000..3f7630a
--- /dev/null
+++ b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
@@ -0,0 +1,164 @@
+package com.casic.service.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmRecordsMapper;
+import com.casic.dao.DataGasMapper;
+import com.casic.dao.impl.AlarmJobDao;
+import com.casic.entity.AlarmJob;
+import com.casic.entity.AlarmRecords;
+import com.casic.entity.DataGasDector;
+import com.casic.model.DataContentParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Component
+public class NormalDataProcessor {
+
+ public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ @Value("${casic.device.gas-dector.type}")
+ private Long deviceType;
+ @Value("${casic.device.gas-dector.minutes}")
+ private String minutes;
+ @Value("${casic.device.gas-dector.enable-local}")
+ private Boolean enableLocal;
+ @Resource
+ private DataGasMapper dataGasMapper;
+ @Autowired
+ private AlarmJobDao alarmJobDao;
+ @Resource
+ private AlarmRecordsMapper alarmRecordsMapper;
+ private static Snowflake snowflake = new Snowflake(0, 2);
+
+ public void normalDataProvider(DataContentParam dataReportParam, Long timeStamp, String devcode) {
+ Map gasMap = dataGasMapper.getWellCode(devcode);
+ if (ObjectUtils.isEmpty(gasMap)) {
+ log.info("没有该设备编号录入" + devcode);
+ if (enableLocal) {
+ return;
+ }
+ }
+ Boolean updateFlag = false;
+ if (ObjectUtils.isEmpty(dataGasMapper.getLastData(minutes, devcode))) {
+ updateFlag = this.saveNormalData(dataReportParam, timeStamp, devcode, gasMap);
+ }
+ this.dataTaskJudge(dataReportParam, devcode, timeStamp, gasMap, updateFlag);
+ return;
+ }
+
+ /**
+ * 自定义时间存库
+ *
+ * @param dataReportParam
+ * @param timeStamp
+ * @param devcode
+ * @param gasMap
+ */
+ private Boolean saveNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap) {
+ Boolean updateFlag = false;
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ List dataReportFilter = dataReportParam.getRtd_val().stream().filter(
+ data -> {
+ return data != -1;
+ }
+ ).collect(Collectors.toList());
+ if (dataReportFilter.size() > 0 && dataReportFilter.get(dataReportFilter.size() - 1) != 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 1);
+ updateFlag = true;
+ } else if (dataReportFilter.get(dataReportFilter.size() - 1) == 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 0);
+ }
+ dataReportFilter.forEach(
+ data -> {
+ if (data != 65535) {
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+ }
+ );
+ return updateFlag;
+ }
+
+ /**
+ * 报警就存库
+ *
+ * @param dataReportParam
+ * @param devcode
+ * @param timeStamp
+ * @param gasMap
+ */
+ private void dataTaskJudge(DataContentParam dataReportParam, String devcode, Long timeStamp, Map gasMap, Boolean updateFlag) {
+ List> alarmLevelList = dataGasMapper.getAlarmLevelList(deviceType);
+ String wellCode = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "";
+ Long deviceId = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? Long.valueOf(String.valueOf(gasMap.get("deviceId"))) : -1;
+ final String gasMsgContent=dataGasMapper.getGasMsgContent(deviceType);
+ dataReportParam.getRtd_val().stream().filter(
+ dataReport -> {
+ return dataReport != -1 && dataReport != 65535;
+ }
+ ).forEach(
+ dataReport -> {
+ for (Map alarmLevelMap : alarmLevelList) {
+ if (dataReport > Float.valueOf(String.valueOf(alarmLevelMap.get("high_value")))) {
+ AlarmRecords alarmRecord = new AlarmRecords();
+ alarmRecord.setId(snowflake.nextId());
+ alarmRecord.setDeviceId(deviceId);
+ alarmRecord.setDevcode(devcode);
+ alarmRecord.setWellCode(wellCode);
+ alarmRecord.setAlarmType("1"); // 业务报警
+ alarmRecord.setAlarmContent("燃气报警");
+ alarmRecord.setAlarmValue(String.valueOf(dataReport));
+ alarmRecord.setAlarmTime(new Date());
+ alarmRecord.setStatus("1");
+ alarmRecord.setAlarmLevel(Integer.valueOf(alarmLevelMap.get("level").toString()));
+ alarmRecord.setAlarmMessage("燃气报警");
+ String jobId = alarmRecordsMapper.isOldAlarmRecord(devcode, "燃气报警");
+ // 超出报警阈值 生成一条报警消息
+ if (!StringUtils.isEmpty(jobId)) {
+ alarmRecordsMapper.updateOldAlarmRecord(devcode, "燃气报警");
+ alarmRecord.setJobId(Long.valueOf(jobId));
+ } else {
+ AlarmJob alarmJob = alarmJobDao.saveData(devcode, wellCode, "RQZD", "1");
+ alarmRecord.setJobId(alarmJob.getId());
+ }
+ alarmRecordsMapper.insert(alarmRecord);
+ if (!updateFlag) {
+ alarmNormalData(dataReportParam, timeStamp, devcode, gasMap, dataReport);
+ }
+ break;
+ }
+ }
+ }
+ );
+ }
+
+ private void alarmNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap, Integer data) {
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+
+}
+
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index fac2afe..f8a06a6 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -1,40 +1,19 @@
server:
- port: 11556
+ port: 11320
################### 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
+ driver-class-name: org.postgresql.Driver
+ url: jdbc:postgresql://111.198.10.15:11209/smartwell_zq_cs
+ 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
- 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
+ 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
index 86411e6..ffc01e9 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -19,18 +19,11 @@
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
+ device:
+ gas-dector:
+ type: 101
+ minutes: 60
+ enable-local: false
+# type 可燃气体的设备类型
+# minutes: 燃气外协设备上传数据的分钟数
\ No newline at end of file
diff --git a/target/classes/application-dev.yml b/target/classes/application-dev.yml
new file mode 100644
index 0000000..fac2afe
--- /dev/null
+++ b/target/classes/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/target/classes/application-postgre.yml b/target/classes/application-postgre.yml
new file mode 100644
index 0000000..2b7f69c
--- /dev/null
+++ b/target/classes/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/target/classes/application.yml b/target/classes/application.yml
new file mode 100644
index 0000000..86411e6
--- /dev/null
+++ b/target/classes/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
diff --git a/target/classes/com/casic/CasicApplication.class b/target/classes/com/casic/CasicApplication.class
new file mode 100644
index 0000000..68c2f95
--- /dev/null
+++ b/target/classes/com/casic/CasicApplication.class
Binary files differ
diff --git a/target/classes/com/casic/controller/DeviceController.class b/target/classes/com/casic/controller/DeviceController.class
new file mode 100644
index 0000000..478d6ae
--- /dev/null
+++ b/target/classes/com/casic/controller/DeviceController.class
Binary files differ
diff --git a/target/classes/com/casic/controller/DeviceDataController.class b/target/classes/com/casic/controller/DeviceDataController.class
new file mode 100644
index 0000000..1f4400c
--- /dev/null
+++ b/target/classes/com/casic/controller/DeviceDataController.class
Binary files differ
diff --git a/target/classes/com/casic/dao/DataGasMapper.class b/target/classes/com/casic/dao/DataGasMapper.class
new file mode 100644
index 0000000..557d539
--- /dev/null
+++ b/target/classes/com/casic/dao/DataGasMapper.class
Binary files differ
diff --git a/target/classes/com/casic/dao/DeviceMapper.class b/target/classes/com/casic/dao/DeviceMapper.class
new file mode 100644
index 0000000..3ddcd2b
--- /dev/null
+++ b/target/classes/com/casic/dao/DeviceMapper.class
Binary files differ
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh
new file mode 100644
index 0000000..e14c4c7
--- /dev/null
+++ b/src/main/build/bin/start.sh
@@ -0,0 +1,2 @@
+java -jar ./lib/${project.build.finalName}.jar
+
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
index c55e37d..0887f1f 100644
--- a/src/main/java/com/casic/CasicApplication.java
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -3,8 +3,6 @@
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;
/**
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
index e5351c9..be0de6b 100644
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -1,14 +1,19 @@
package com.casic.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.casic.model.DataReportParam;
-import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
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;
+import java.util.Map;
+
+@Slf4j
@RequestMapping("/data")
@RestController
public class DeviceDataController {
@@ -19,19 +24,16 @@
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 String gasReceiver(@RequestBody Map map) {
+// log.info("---------"+JSON.toJSONString(map));
+// return "200";
+// }
@PostMapping("/gas/receiver")
- public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
- return dataService.heartBeatSave(heartbeatParam);
+ public ResponseData gasReceiver(@RequestBody DataReportParam dataReportParam) {
+ log.info("---------"+JSON.toJSONString(dataReportParam));
+ return dataService.gasReceiver(dataReportParam);
}
}
diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java
new file mode 100644
index 0000000..e5e9c8d
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmJobMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmJob;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface AlarmJobMapper extends BaseMapper {
+
+ @Select("SELECT MAX(jobcode) " +
+ "FROM alarm_job " +
+ "WHERE JOBCODE like '${jobcode}%'")
+ String getJobCodeMaxSerial(@Param("jobcode") String jobcode);
+
+}
diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
new file mode 100644
index 0000000..8da7dcb
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmRecords;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface AlarmRecordsMapper extends BaseMapper {
+
+
+ @Select("SELECT JOB_ID AS \"jobId\"\n " +
+ "FROM alarm_records\n " +
+ "WHERE DEVCODE = #{devcode}\n " +
+ "AND ALARM_CONTENT = #{MsgContent}\n " +
+ "AND STATUS='1'\n " +
+ "AND JOB_ID>0 ")
+ String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+
+ @Update(" UPDATE alarm_records\n" +
+ " SET STATUS='0'\n" +
+ " WHERE DEVCODE = #{devcode}\n" +
+ " AND ALARM_CONTENT = #{MsgContent}\n" +
+ " AND STATUS='1'")
+ Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
index 47e7cce..33ce14a 100644
--- a/src/main/java/com/casic/dao/DataGasMapper.java
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -1,9 +1,48 @@
package com.casic.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.casic.entity.DataGasReport;
+import com.casic.entity.DataGasDector;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+import java.util.Map;
@Mapper
-public interface DataGasMapper extends BaseMapper {
+public interface DataGasMapper extends BaseMapper {
+
+ @Select("select bd.id as \"deviceId\",bwi.WELL_CODE AS \"wellCode\" " +
+ "from bus_device_well bdw " +
+ "join (select id from bus_device where devcode=#{devcode}) bd ON bd.id=bdw.device_id " +
+ "join bus_well_info bwi ON bwi.id=bdw.well_id ")
+ Map getWellCode(@Param("devcode") String devcode);
+
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{onlineState} " +
+ "WHERE devcode=#{devcode} ")
+ void setOfflineByDevcode(@Param("devcode") String devcode,
+ @Param("onlineState") Integer onlineState);
+
+ @Select("SELECT level,high_value " +
+ "FROM alarm_level " +
+ "WHERE device_type=#{deviceType} ")
+ List> getAlarmLevelList(@Param("deviceType") Long deviceType);
+
+ @Select("SELECT devcode " +
+ "FROM data_gas_dector " +
+ "WHERE devcode=#{devcode} " +
+ "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+
+ "ORDER BY logtime DESC " +
+ "LIMIT 1")
+ String getLastData(@Param("minutes") String minutes,
+ @Param("devcode") String devcode);
+
+ @Select("SELECT alarm_content" +
+ "FROM BASE_alarm_content_type" +
+ "where device_type=#{deviceType}")
+ String getGasMsgContent(@Param("deviceType")Long deviceType);
+
+
}
diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
new file mode 100644
index 0000000..5131821
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
@@ -0,0 +1,59 @@
+package com.casic.dao.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmJobMapper;
+import com.casic.entity.AlarmJob;
+import org.springframework.stereotype.Component;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Component
+public class AlarmJobDao {
+
+ private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ private static Snowflake snowflake = new Snowflake(0, 2);
+// private static final Sn
+
+ @Resource
+ private AlarmJobMapper alarmJobMapper;
+
+ public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) {
+ AlarmJob alarmJob = new AlarmJob();
+ alarmJob.setId(snowflake.nextId());
+ alarmJob.setDevcode(devCode);
+ alarmJob.setWellCode(wellCode);
+ alarmJob.setJobStatus("0");
+ alarmJob.setCreateTime(new Date());
+ alarmJob.setJobcode(this.produceJobCode(devTypeName));
+ alarmJob.setJobType(jobType);
+ alarmJobMapper.insert(alarmJob);
+ return alarmJob;
+ }
+
+ /**
+ * 前缀+日期+4位流水号
+ *
+ * @param devTypeName
+ * @return
+ */
+ private String produceJobCode(String devTypeName) {
+ String pre = devTypeName;
+ String dataStr = sdf6.format(new Date());
+ String fix = this.getJobCodeMaxSerial(pre + dataStr);
+ return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001";
+ }
+
+
+ private String getJobCodeMaxSerial(String jobcode) {
+ String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode);
+ String fix = "";
+ if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) {
+ fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4);
+ }
+ return fix;
+ }
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
deleted file mode 100644
index c797e55..0000000
--- a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
+++ /dev/null
@@ -1,68 +0,0 @@
-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/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java
new file mode 100644
index 0000000..8a0f764
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmJob.java
@@ -0,0 +1,165 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 报警工单表
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_job")
+public class AlarmJob extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 工单编号
+ */
+ @TableField("JOBCODE")
+ private String jobcode;
+ /**
+ * 工单类型
+ */
+ @TableField("JOG_TYPE")
+ private String jobType;
+ /**
+ * 井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 工单创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+ /**
+ * 工单状态(0待处理,1待确认,2处理中,3完成)
+ */
+ @TableField("JOB_STATUS")
+ private String jobStatus;
+ /**
+ * 接单人员
+ */
+ @TableField("GET_JOB_PERSON")
+ private Long getJobPerson;
+ /**
+ * 接单时间
+ */
+ @TableField("GET_JOB_TIME")
+ private Date getJobTime;
+ /**
+ * 应接单时间
+ */
+ @TableField("SHOULD_GET_TIME")
+ private Date shouldGetTime;
+ /**
+ * 第一现场情况
+ */
+ @TableField("FIRST_STATE")
+ private String firstState;
+ /**
+ * 第一现场照片
+ */
+ @TableField("FIRST_STATE_PHOTOS")
+ private String firstStatePhotos;
+ /**
+ * 确认人员
+ */
+ @TableField("CONFIRM_JOB_PERSON")
+ private Long confirmJobPerson;
+ /**
+ * 确认时间
+ */
+ @TableField("CONFRIM_JOB_TIME")
+ private Date confrimJobTime;
+ /**
+ * 处理人员
+ */
+ @TableField("HANDLE_JOB_Person")
+ private Long handleJobPerson;
+ /**
+ * 处理时间
+ */
+ @TableField("HANDLE_JOB_TIME")
+ private Date handleJobTime;
+ /**
+ * 维护情况记录
+ */
+ @TableField("HANDLE_MESSAGE")
+ private String handleMessage;
+ /**
+ * 维护图片
+ */
+ @TableField("HANDLE_PHOTOS")
+ private String handlePhotos;
+ /**
+ * 工单流转记录
+ */
+ @TableField("FLOW")
+ private String flow;
+
+ @TableField("JOB_BELONG_TO")
+ private Long jobBelongTo;
+
+ @TableField("JOB_FLAG_DELAY")
+ private String jobFlagDelay;
+
+ @TableField("JOB_FLAG_1")
+ private String jobFlag1;
+
+ @TableField(exist = false)
+ private String alarmValue;
+
+ @TableField(exist = false)
+ private String alarmContentName;
+
+ @TableField(exist = false)
+ private Integer recordId;
+
+ @Override
+ public String toString() {
+ return "AlarmJob{" +
+ "id=" + id +
+ ", jobcode=" + jobcode +
+ ", jogType=" + jobType +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", createTime=" + createTime +
+ ", jobStatus=" + jobStatus +
+ ", getJobPerson=" + getJobPerson +
+ ", getJobTime=" + getJobTime +
+ ", firstState=" + firstState +
+ ", firstStatePhotos=" + firstStatePhotos +
+ ", confirmJobPerson=" + confirmJobPerson +
+ ", confrimJobTime=" + confrimJobTime +
+ ", handleJobPerson=" + handleJobPerson +
+ ", handleJobTime=" + handleJobTime +
+ ", handleMessage=" + handleMessage +
+ ", handlePhotos=" + handlePhotos +
+ ", flow=" + flow +
+ ", recordId=" + recordId +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java
new file mode 100644
index 0000000..88b0b26
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmRecords.java
@@ -0,0 +1,108 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ *
+ *
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_records")
+public class AlarmRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 设备ID
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 闸井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 告警类型
+ */
+ @TableField("ALARM_TYPE")
+ private String alarmType;
+ /**
+ * 告警内容
+ */
+ @TableField("ALARM_CONTENT")
+ private String alarmContent;
+ /**
+ * 告警数值
+ */
+ @TableField("ALARM_VALUE")
+ private String alarmValue;
+ /**
+ * 告警等级
+ */
+ @TableField("ALARM_LEVEL")
+ private Integer alarmLevel;
+ /**
+ * 告警详情
+ */
+ @TableField("ALARM_MSG")
+ private String alarmMessage;
+ /**
+ * 告警时间
+ */
+ @TableField("ALARM_TIME")
+ private Date alarmTime;
+ /**
+ * 告警状态
+ */
+ @TableField("STATUS")
+ private String status;
+ /**
+ * 工单编号
+ */
+ @TableField("JOB_ID")
+ private Long jobId;
+
+ @TableField(exist = false)
+ private Integer jobStatus;
+
+ @Override
+ public String toString() {
+ return "AlarmRecords{" +
+ "id=" + id +
+ ", deviceId=" + deviceId +
+ ", devcode=" + devcode +
+ ", wellCode=" + wellCode +
+ ", alarmType=" + alarmType +
+ ", alarmContent=" + alarmContent +
+ ", alarmValue=" + alarmValue +
+ ", alarmLevel=" + alarmLevel +
+ ", alarmMessage=" + alarmMessage +
+ ", alarmTime=" + alarmTime +
+ ", status=" + status +
+ ", jobId=" + jobId +
+ ", jobStatus=" + jobStatus +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/DataGasDector.java b/src/main/java/com/casic/entity/DataGasDector.java
new file mode 100644
index 0000000..537789a
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasDector.java
@@ -0,0 +1,42 @@
+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 DataGasDector {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ private String devcode;
+ private String wellCode;
+ private String strength;
+
+ private String descn;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
deleted file mode 100644
index c43ccdf..0000000
--- a/src/main/java/com/casic/entity/DataGasReport.java
+++ /dev/null
@@ -1,69 +0,0 @@
-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/entity/DeviceSatatus.java b/src/main/java/com/casic/entity/DeviceSatatus.java
new file mode 100644
index 0000000..bab7903
--- /dev/null
+++ b/src/main/java/com/casic/entity/DeviceSatatus.java
@@ -0,0 +1,19 @@
+package com.casic.entity;
+
+import lombok.Data;
+
+/**
+ * 不使用了
+ *
+ */
+@Data
+public class DeviceSatatus {
+ private String deviceId;
+ private String cell;
+ private String cellTs;
+ private String onlineState;
+ private String onlineTs;
+ private String lastDataId;
+ private String lastDataJson;
+ private String lastDataTs;
+}
diff --git a/src/main/java/com/casic/model/DataContentParam.java b/src/main/java/com/casic/model/DataContentParam.java
new file mode 100644
index 0000000..46d298a
--- /dev/null
+++ b/src/main/java/com/casic/model/DataContentParam.java
@@ -0,0 +1,19 @@
+package com.casic.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DataContentParam {
+ private String msg_type;
+ private String error_val;
+ private String ch_cnt;
+ private String erro_cnt;
+ private String alarm_low_cnt;
+ private String alarm_high_cnt;
+ private String offline_cnt;
+ private List rtd_val;
+ private List adc_val;
+ private List status_val;
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/model/DataReportParam.java b/src/main/java/com/casic/model/DataReportParam.java
index 082814c..754f330 100644
--- a/src/main/java/com/casic/model/DataReportParam.java
+++ b/src/main/java/com/casic/model/DataReportParam.java
@@ -11,25 +11,12 @@
*/
@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;
+ private String iotId;
+ private String requestId;
+ private Object checkFailedData;
+ private String productKey;
+ private String gmtCreate;
+ private String deviceName;
+ private Object items;
}
diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java
index d883fe4..457d710 100644
--- a/src/main/java/com/casic/service/DeviceDataService.java
+++ b/src/main/java/com/casic/service/DeviceDataService.java
@@ -3,25 +3,18 @@
import com.casic.model.DataReportParam;
import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
+import org.springframework.web.bind.annotation.RequestBody;
/**
* @author cz
* @date 2022
*/
public interface DeviceDataService {
-
/**
*
* @param dataReportParam
* @return
*/
- ResponseData DeviceDataCommit(DataReportParam dataReportParam);
-
- /**
- *
- * @param heartbeatParam
- * @return
- */
- ResponseData heartBeatSave(HeartbeatParam heartbeatParam);
+ ResponseData gasReceiver(DataReportParam dataReportParam);
}
diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
index 93f0685..e473f0c 100644
--- a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
+++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
@@ -1,58 +1,49 @@
package com.casic.service.impl;
-import com.casic.dao.impl.DeviceDataMapper;
+import com.alibaba.druid.util.StringUtils;
+import com.alibaba.fastjson.JSON;
import com.casic.model.*;
import com.casic.service.DeviceDataService;
+import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import java.util.Map;
+
/**
* @author cz
- * @date 2022-6-20
+ * @date 2022-9-26
*/
@Slf4j
@Service
public class DeviceDataServiceImpl implements DeviceDataService {
- @Autowired
- DeviceDataMapper deviceDataMapper;
+ private final NormalDataProcessor normalDataProcessor;
- /**
- * @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;
+ public DeviceDataServiceImpl(NormalDataProcessor normalDataProcessor) {
+ this.normalDataProcessor = normalDataProcessor;
}
- /**
- * @param heartbeatParam
- * @return
- */
- public ResponseData heartBeatSave(HeartbeatParam heartbeatParam) {
+ public ResponseData gasReceiver(DataReportParam dataReportParam) {
ResponseData responseData = new ResponseData();
try {
- deviceDataMapper.editDeviceData(heartbeatParam);
+ Map> updDataMap = new ObjectMapper().convertValue(dataReportParam.getItems(), Map.class);
+ DataContentParam dataContentParam = JSON.parseObject(updDataMap.get("updData").get("value"), DataContentParam.class);
+ Long uptime = Long.valueOf(String.valueOf(updDataMap.get("updData").get("time")));
+ if (StringUtils.isEmpty(dataReportParam.getDeviceName())) {
+ responseData.setCode(200);
+ responseData.setMessage("没有设备编号");
+ return responseData;
+ }
+ normalDataProcessor.normalDataProvider(dataContentParam, uptime, dataReportParam.getDeviceName());
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);
+ log.error("主题:设备数据上报出现错误,异常信息为{}", sqlex);
}
return responseData;
}
diff --git a/src/main/java/com/casic/service/impl/NormalDataProcessor.java b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
new file mode 100644
index 0000000..3f7630a
--- /dev/null
+++ b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
@@ -0,0 +1,164 @@
+package com.casic.service.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmRecordsMapper;
+import com.casic.dao.DataGasMapper;
+import com.casic.dao.impl.AlarmJobDao;
+import com.casic.entity.AlarmJob;
+import com.casic.entity.AlarmRecords;
+import com.casic.entity.DataGasDector;
+import com.casic.model.DataContentParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Component
+public class NormalDataProcessor {
+
+ public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ @Value("${casic.device.gas-dector.type}")
+ private Long deviceType;
+ @Value("${casic.device.gas-dector.minutes}")
+ private String minutes;
+ @Value("${casic.device.gas-dector.enable-local}")
+ private Boolean enableLocal;
+ @Resource
+ private DataGasMapper dataGasMapper;
+ @Autowired
+ private AlarmJobDao alarmJobDao;
+ @Resource
+ private AlarmRecordsMapper alarmRecordsMapper;
+ private static Snowflake snowflake = new Snowflake(0, 2);
+
+ public void normalDataProvider(DataContentParam dataReportParam, Long timeStamp, String devcode) {
+ Map gasMap = dataGasMapper.getWellCode(devcode);
+ if (ObjectUtils.isEmpty(gasMap)) {
+ log.info("没有该设备编号录入" + devcode);
+ if (enableLocal) {
+ return;
+ }
+ }
+ Boolean updateFlag = false;
+ if (ObjectUtils.isEmpty(dataGasMapper.getLastData(minutes, devcode))) {
+ updateFlag = this.saveNormalData(dataReportParam, timeStamp, devcode, gasMap);
+ }
+ this.dataTaskJudge(dataReportParam, devcode, timeStamp, gasMap, updateFlag);
+ return;
+ }
+
+ /**
+ * 自定义时间存库
+ *
+ * @param dataReportParam
+ * @param timeStamp
+ * @param devcode
+ * @param gasMap
+ */
+ private Boolean saveNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap) {
+ Boolean updateFlag = false;
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ List dataReportFilter = dataReportParam.getRtd_val().stream().filter(
+ data -> {
+ return data != -1;
+ }
+ ).collect(Collectors.toList());
+ if (dataReportFilter.size() > 0 && dataReportFilter.get(dataReportFilter.size() - 1) != 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 1);
+ updateFlag = true;
+ } else if (dataReportFilter.get(dataReportFilter.size() - 1) == 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 0);
+ }
+ dataReportFilter.forEach(
+ data -> {
+ if (data != 65535) {
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+ }
+ );
+ return updateFlag;
+ }
+
+ /**
+ * 报警就存库
+ *
+ * @param dataReportParam
+ * @param devcode
+ * @param timeStamp
+ * @param gasMap
+ */
+ private void dataTaskJudge(DataContentParam dataReportParam, String devcode, Long timeStamp, Map gasMap, Boolean updateFlag) {
+ List> alarmLevelList = dataGasMapper.getAlarmLevelList(deviceType);
+ String wellCode = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "";
+ Long deviceId = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? Long.valueOf(String.valueOf(gasMap.get("deviceId"))) : -1;
+ final String gasMsgContent=dataGasMapper.getGasMsgContent(deviceType);
+ dataReportParam.getRtd_val().stream().filter(
+ dataReport -> {
+ return dataReport != -1 && dataReport != 65535;
+ }
+ ).forEach(
+ dataReport -> {
+ for (Map alarmLevelMap : alarmLevelList) {
+ if (dataReport > Float.valueOf(String.valueOf(alarmLevelMap.get("high_value")))) {
+ AlarmRecords alarmRecord = new AlarmRecords();
+ alarmRecord.setId(snowflake.nextId());
+ alarmRecord.setDeviceId(deviceId);
+ alarmRecord.setDevcode(devcode);
+ alarmRecord.setWellCode(wellCode);
+ alarmRecord.setAlarmType("1"); // 业务报警
+ alarmRecord.setAlarmContent("燃气报警");
+ alarmRecord.setAlarmValue(String.valueOf(dataReport));
+ alarmRecord.setAlarmTime(new Date());
+ alarmRecord.setStatus("1");
+ alarmRecord.setAlarmLevel(Integer.valueOf(alarmLevelMap.get("level").toString()));
+ alarmRecord.setAlarmMessage("燃气报警");
+ String jobId = alarmRecordsMapper.isOldAlarmRecord(devcode, "燃气报警");
+ // 超出报警阈值 生成一条报警消息
+ if (!StringUtils.isEmpty(jobId)) {
+ alarmRecordsMapper.updateOldAlarmRecord(devcode, "燃气报警");
+ alarmRecord.setJobId(Long.valueOf(jobId));
+ } else {
+ AlarmJob alarmJob = alarmJobDao.saveData(devcode, wellCode, "RQZD", "1");
+ alarmRecord.setJobId(alarmJob.getId());
+ }
+ alarmRecordsMapper.insert(alarmRecord);
+ if (!updateFlag) {
+ alarmNormalData(dataReportParam, timeStamp, devcode, gasMap, dataReport);
+ }
+ break;
+ }
+ }
+ }
+ );
+ }
+
+ private void alarmNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap, Integer data) {
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+
+}
+
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index fac2afe..f8a06a6 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -1,40 +1,19 @@
server:
- port: 11556
+ port: 11320
################### 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
+ driver-class-name: org.postgresql.Driver
+ url: jdbc:postgresql://111.198.10.15:11209/smartwell_zq_cs
+ 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
- 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
+ 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
index 86411e6..ffc01e9 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -19,18 +19,11 @@
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
+ device:
+ gas-dector:
+ type: 101
+ minutes: 60
+ enable-local: false
+# type 可燃气体的设备类型
+# minutes: 燃气外协设备上传数据的分钟数
\ No newline at end of file
diff --git a/target/classes/application-dev.yml b/target/classes/application-dev.yml
new file mode 100644
index 0000000..fac2afe
--- /dev/null
+++ b/target/classes/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/target/classes/application-postgre.yml b/target/classes/application-postgre.yml
new file mode 100644
index 0000000..2b7f69c
--- /dev/null
+++ b/target/classes/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/target/classes/application.yml b/target/classes/application.yml
new file mode 100644
index 0000000..86411e6
--- /dev/null
+++ b/target/classes/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
diff --git a/target/classes/com/casic/CasicApplication.class b/target/classes/com/casic/CasicApplication.class
new file mode 100644
index 0000000..68c2f95
--- /dev/null
+++ b/target/classes/com/casic/CasicApplication.class
Binary files differ
diff --git a/target/classes/com/casic/controller/DeviceController.class b/target/classes/com/casic/controller/DeviceController.class
new file mode 100644
index 0000000..478d6ae
--- /dev/null
+++ b/target/classes/com/casic/controller/DeviceController.class
Binary files differ
diff --git a/target/classes/com/casic/controller/DeviceDataController.class b/target/classes/com/casic/controller/DeviceDataController.class
new file mode 100644
index 0000000..1f4400c
--- /dev/null
+++ b/target/classes/com/casic/controller/DeviceDataController.class
Binary files differ
diff --git a/target/classes/com/casic/dao/DataGasMapper.class b/target/classes/com/casic/dao/DataGasMapper.class
new file mode 100644
index 0000000..557d539
--- /dev/null
+++ b/target/classes/com/casic/dao/DataGasMapper.class
Binary files differ
diff --git a/target/classes/com/casic/dao/DeviceMapper.class b/target/classes/com/casic/dao/DeviceMapper.class
new file mode 100644
index 0000000..3ddcd2b
--- /dev/null
+++ b/target/classes/com/casic/dao/DeviceMapper.class
Binary files differ
diff --git a/target/classes/com/casic/dao/impl/DeviceDataMapper.class b/target/classes/com/casic/dao/impl/DeviceDataMapper.class
new file mode 100644
index 0000000..d73ed15
--- /dev/null
+++ b/target/classes/com/casic/dao/impl/DeviceDataMapper.class
Binary files differ
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh
new file mode 100644
index 0000000..e14c4c7
--- /dev/null
+++ b/src/main/build/bin/start.sh
@@ -0,0 +1,2 @@
+java -jar ./lib/${project.build.finalName}.jar
+
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
index c55e37d..0887f1f 100644
--- a/src/main/java/com/casic/CasicApplication.java
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -3,8 +3,6 @@
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;
/**
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
index e5351c9..be0de6b 100644
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -1,14 +1,19 @@
package com.casic.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.casic.model.DataReportParam;
-import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
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;
+import java.util.Map;
+
+@Slf4j
@RequestMapping("/data")
@RestController
public class DeviceDataController {
@@ -19,19 +24,16 @@
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 String gasReceiver(@RequestBody Map map) {
+// log.info("---------"+JSON.toJSONString(map));
+// return "200";
+// }
@PostMapping("/gas/receiver")
- public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
- return dataService.heartBeatSave(heartbeatParam);
+ public ResponseData gasReceiver(@RequestBody DataReportParam dataReportParam) {
+ log.info("---------"+JSON.toJSONString(dataReportParam));
+ return dataService.gasReceiver(dataReportParam);
}
}
diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java
new file mode 100644
index 0000000..e5e9c8d
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmJobMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmJob;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface AlarmJobMapper extends BaseMapper {
+
+ @Select("SELECT MAX(jobcode) " +
+ "FROM alarm_job " +
+ "WHERE JOBCODE like '${jobcode}%'")
+ String getJobCodeMaxSerial(@Param("jobcode") String jobcode);
+
+}
diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
new file mode 100644
index 0000000..8da7dcb
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmRecords;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface AlarmRecordsMapper extends BaseMapper {
+
+
+ @Select("SELECT JOB_ID AS \"jobId\"\n " +
+ "FROM alarm_records\n " +
+ "WHERE DEVCODE = #{devcode}\n " +
+ "AND ALARM_CONTENT = #{MsgContent}\n " +
+ "AND STATUS='1'\n " +
+ "AND JOB_ID>0 ")
+ String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+
+ @Update(" UPDATE alarm_records\n" +
+ " SET STATUS='0'\n" +
+ " WHERE DEVCODE = #{devcode}\n" +
+ " AND ALARM_CONTENT = #{MsgContent}\n" +
+ " AND STATUS='1'")
+ Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
index 47e7cce..33ce14a 100644
--- a/src/main/java/com/casic/dao/DataGasMapper.java
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -1,9 +1,48 @@
package com.casic.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.casic.entity.DataGasReport;
+import com.casic.entity.DataGasDector;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+import java.util.Map;
@Mapper
-public interface DataGasMapper extends BaseMapper {
+public interface DataGasMapper extends BaseMapper {
+
+ @Select("select bd.id as \"deviceId\",bwi.WELL_CODE AS \"wellCode\" " +
+ "from bus_device_well bdw " +
+ "join (select id from bus_device where devcode=#{devcode}) bd ON bd.id=bdw.device_id " +
+ "join bus_well_info bwi ON bwi.id=bdw.well_id ")
+ Map getWellCode(@Param("devcode") String devcode);
+
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{onlineState} " +
+ "WHERE devcode=#{devcode} ")
+ void setOfflineByDevcode(@Param("devcode") String devcode,
+ @Param("onlineState") Integer onlineState);
+
+ @Select("SELECT level,high_value " +
+ "FROM alarm_level " +
+ "WHERE device_type=#{deviceType} ")
+ List> getAlarmLevelList(@Param("deviceType") Long deviceType);
+
+ @Select("SELECT devcode " +
+ "FROM data_gas_dector " +
+ "WHERE devcode=#{devcode} " +
+ "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+
+ "ORDER BY logtime DESC " +
+ "LIMIT 1")
+ String getLastData(@Param("minutes") String minutes,
+ @Param("devcode") String devcode);
+
+ @Select("SELECT alarm_content" +
+ "FROM BASE_alarm_content_type" +
+ "where device_type=#{deviceType}")
+ String getGasMsgContent(@Param("deviceType")Long deviceType);
+
+
}
diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
new file mode 100644
index 0000000..5131821
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
@@ -0,0 +1,59 @@
+package com.casic.dao.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmJobMapper;
+import com.casic.entity.AlarmJob;
+import org.springframework.stereotype.Component;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Component
+public class AlarmJobDao {
+
+ private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ private static Snowflake snowflake = new Snowflake(0, 2);
+// private static final Sn
+
+ @Resource
+ private AlarmJobMapper alarmJobMapper;
+
+ public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) {
+ AlarmJob alarmJob = new AlarmJob();
+ alarmJob.setId(snowflake.nextId());
+ alarmJob.setDevcode(devCode);
+ alarmJob.setWellCode(wellCode);
+ alarmJob.setJobStatus("0");
+ alarmJob.setCreateTime(new Date());
+ alarmJob.setJobcode(this.produceJobCode(devTypeName));
+ alarmJob.setJobType(jobType);
+ alarmJobMapper.insert(alarmJob);
+ return alarmJob;
+ }
+
+ /**
+ * 前缀+日期+4位流水号
+ *
+ * @param devTypeName
+ * @return
+ */
+ private String produceJobCode(String devTypeName) {
+ String pre = devTypeName;
+ String dataStr = sdf6.format(new Date());
+ String fix = this.getJobCodeMaxSerial(pre + dataStr);
+ return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001";
+ }
+
+
+ private String getJobCodeMaxSerial(String jobcode) {
+ String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode);
+ String fix = "";
+ if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) {
+ fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4);
+ }
+ return fix;
+ }
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
deleted file mode 100644
index c797e55..0000000
--- a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
+++ /dev/null
@@ -1,68 +0,0 @@
-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/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java
new file mode 100644
index 0000000..8a0f764
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmJob.java
@@ -0,0 +1,165 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 报警工单表
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_job")
+public class AlarmJob extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 工单编号
+ */
+ @TableField("JOBCODE")
+ private String jobcode;
+ /**
+ * 工单类型
+ */
+ @TableField("JOG_TYPE")
+ private String jobType;
+ /**
+ * 井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 工单创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+ /**
+ * 工单状态(0待处理,1待确认,2处理中,3完成)
+ */
+ @TableField("JOB_STATUS")
+ private String jobStatus;
+ /**
+ * 接单人员
+ */
+ @TableField("GET_JOB_PERSON")
+ private Long getJobPerson;
+ /**
+ * 接单时间
+ */
+ @TableField("GET_JOB_TIME")
+ private Date getJobTime;
+ /**
+ * 应接单时间
+ */
+ @TableField("SHOULD_GET_TIME")
+ private Date shouldGetTime;
+ /**
+ * 第一现场情况
+ */
+ @TableField("FIRST_STATE")
+ private String firstState;
+ /**
+ * 第一现场照片
+ */
+ @TableField("FIRST_STATE_PHOTOS")
+ private String firstStatePhotos;
+ /**
+ * 确认人员
+ */
+ @TableField("CONFIRM_JOB_PERSON")
+ private Long confirmJobPerson;
+ /**
+ * 确认时间
+ */
+ @TableField("CONFRIM_JOB_TIME")
+ private Date confrimJobTime;
+ /**
+ * 处理人员
+ */
+ @TableField("HANDLE_JOB_Person")
+ private Long handleJobPerson;
+ /**
+ * 处理时间
+ */
+ @TableField("HANDLE_JOB_TIME")
+ private Date handleJobTime;
+ /**
+ * 维护情况记录
+ */
+ @TableField("HANDLE_MESSAGE")
+ private String handleMessage;
+ /**
+ * 维护图片
+ */
+ @TableField("HANDLE_PHOTOS")
+ private String handlePhotos;
+ /**
+ * 工单流转记录
+ */
+ @TableField("FLOW")
+ private String flow;
+
+ @TableField("JOB_BELONG_TO")
+ private Long jobBelongTo;
+
+ @TableField("JOB_FLAG_DELAY")
+ private String jobFlagDelay;
+
+ @TableField("JOB_FLAG_1")
+ private String jobFlag1;
+
+ @TableField(exist = false)
+ private String alarmValue;
+
+ @TableField(exist = false)
+ private String alarmContentName;
+
+ @TableField(exist = false)
+ private Integer recordId;
+
+ @Override
+ public String toString() {
+ return "AlarmJob{" +
+ "id=" + id +
+ ", jobcode=" + jobcode +
+ ", jogType=" + jobType +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", createTime=" + createTime +
+ ", jobStatus=" + jobStatus +
+ ", getJobPerson=" + getJobPerson +
+ ", getJobTime=" + getJobTime +
+ ", firstState=" + firstState +
+ ", firstStatePhotos=" + firstStatePhotos +
+ ", confirmJobPerson=" + confirmJobPerson +
+ ", confrimJobTime=" + confrimJobTime +
+ ", handleJobPerson=" + handleJobPerson +
+ ", handleJobTime=" + handleJobTime +
+ ", handleMessage=" + handleMessage +
+ ", handlePhotos=" + handlePhotos +
+ ", flow=" + flow +
+ ", recordId=" + recordId +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java
new file mode 100644
index 0000000..88b0b26
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmRecords.java
@@ -0,0 +1,108 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ *
+ *
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_records")
+public class AlarmRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 设备ID
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 闸井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 告警类型
+ */
+ @TableField("ALARM_TYPE")
+ private String alarmType;
+ /**
+ * 告警内容
+ */
+ @TableField("ALARM_CONTENT")
+ private String alarmContent;
+ /**
+ * 告警数值
+ */
+ @TableField("ALARM_VALUE")
+ private String alarmValue;
+ /**
+ * 告警等级
+ */
+ @TableField("ALARM_LEVEL")
+ private Integer alarmLevel;
+ /**
+ * 告警详情
+ */
+ @TableField("ALARM_MSG")
+ private String alarmMessage;
+ /**
+ * 告警时间
+ */
+ @TableField("ALARM_TIME")
+ private Date alarmTime;
+ /**
+ * 告警状态
+ */
+ @TableField("STATUS")
+ private String status;
+ /**
+ * 工单编号
+ */
+ @TableField("JOB_ID")
+ private Long jobId;
+
+ @TableField(exist = false)
+ private Integer jobStatus;
+
+ @Override
+ public String toString() {
+ return "AlarmRecords{" +
+ "id=" + id +
+ ", deviceId=" + deviceId +
+ ", devcode=" + devcode +
+ ", wellCode=" + wellCode +
+ ", alarmType=" + alarmType +
+ ", alarmContent=" + alarmContent +
+ ", alarmValue=" + alarmValue +
+ ", alarmLevel=" + alarmLevel +
+ ", alarmMessage=" + alarmMessage +
+ ", alarmTime=" + alarmTime +
+ ", status=" + status +
+ ", jobId=" + jobId +
+ ", jobStatus=" + jobStatus +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/DataGasDector.java b/src/main/java/com/casic/entity/DataGasDector.java
new file mode 100644
index 0000000..537789a
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasDector.java
@@ -0,0 +1,42 @@
+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 DataGasDector {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ private String devcode;
+ private String wellCode;
+ private String strength;
+
+ private String descn;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
deleted file mode 100644
index c43ccdf..0000000
--- a/src/main/java/com/casic/entity/DataGasReport.java
+++ /dev/null
@@ -1,69 +0,0 @@
-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/entity/DeviceSatatus.java b/src/main/java/com/casic/entity/DeviceSatatus.java
new file mode 100644
index 0000000..bab7903
--- /dev/null
+++ b/src/main/java/com/casic/entity/DeviceSatatus.java
@@ -0,0 +1,19 @@
+package com.casic.entity;
+
+import lombok.Data;
+
+/**
+ * 不使用了
+ *
+ */
+@Data
+public class DeviceSatatus {
+ private String deviceId;
+ private String cell;
+ private String cellTs;
+ private String onlineState;
+ private String onlineTs;
+ private String lastDataId;
+ private String lastDataJson;
+ private String lastDataTs;
+}
diff --git a/src/main/java/com/casic/model/DataContentParam.java b/src/main/java/com/casic/model/DataContentParam.java
new file mode 100644
index 0000000..46d298a
--- /dev/null
+++ b/src/main/java/com/casic/model/DataContentParam.java
@@ -0,0 +1,19 @@
+package com.casic.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DataContentParam {
+ private String msg_type;
+ private String error_val;
+ private String ch_cnt;
+ private String erro_cnt;
+ private String alarm_low_cnt;
+ private String alarm_high_cnt;
+ private String offline_cnt;
+ private List rtd_val;
+ private List adc_val;
+ private List status_val;
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/model/DataReportParam.java b/src/main/java/com/casic/model/DataReportParam.java
index 082814c..754f330 100644
--- a/src/main/java/com/casic/model/DataReportParam.java
+++ b/src/main/java/com/casic/model/DataReportParam.java
@@ -11,25 +11,12 @@
*/
@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;
+ private String iotId;
+ private String requestId;
+ private Object checkFailedData;
+ private String productKey;
+ private String gmtCreate;
+ private String deviceName;
+ private Object items;
}
diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java
index d883fe4..457d710 100644
--- a/src/main/java/com/casic/service/DeviceDataService.java
+++ b/src/main/java/com/casic/service/DeviceDataService.java
@@ -3,25 +3,18 @@
import com.casic.model.DataReportParam;
import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
+import org.springframework.web.bind.annotation.RequestBody;
/**
* @author cz
* @date 2022
*/
public interface DeviceDataService {
-
/**
*
* @param dataReportParam
* @return
*/
- ResponseData DeviceDataCommit(DataReportParam dataReportParam);
-
- /**
- *
- * @param heartbeatParam
- * @return
- */
- ResponseData heartBeatSave(HeartbeatParam heartbeatParam);
+ ResponseData gasReceiver(DataReportParam dataReportParam);
}
diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
index 93f0685..e473f0c 100644
--- a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
+++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
@@ -1,58 +1,49 @@
package com.casic.service.impl;
-import com.casic.dao.impl.DeviceDataMapper;
+import com.alibaba.druid.util.StringUtils;
+import com.alibaba.fastjson.JSON;
import com.casic.model.*;
import com.casic.service.DeviceDataService;
+import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import java.util.Map;
+
/**
* @author cz
- * @date 2022-6-20
+ * @date 2022-9-26
*/
@Slf4j
@Service
public class DeviceDataServiceImpl implements DeviceDataService {
- @Autowired
- DeviceDataMapper deviceDataMapper;
+ private final NormalDataProcessor normalDataProcessor;
- /**
- * @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;
+ public DeviceDataServiceImpl(NormalDataProcessor normalDataProcessor) {
+ this.normalDataProcessor = normalDataProcessor;
}
- /**
- * @param heartbeatParam
- * @return
- */
- public ResponseData heartBeatSave(HeartbeatParam heartbeatParam) {
+ public ResponseData gasReceiver(DataReportParam dataReportParam) {
ResponseData responseData = new ResponseData();
try {
- deviceDataMapper.editDeviceData(heartbeatParam);
+ Map> updDataMap = new ObjectMapper().convertValue(dataReportParam.getItems(), Map.class);
+ DataContentParam dataContentParam = JSON.parseObject(updDataMap.get("updData").get("value"), DataContentParam.class);
+ Long uptime = Long.valueOf(String.valueOf(updDataMap.get("updData").get("time")));
+ if (StringUtils.isEmpty(dataReportParam.getDeviceName())) {
+ responseData.setCode(200);
+ responseData.setMessage("没有设备编号");
+ return responseData;
+ }
+ normalDataProcessor.normalDataProvider(dataContentParam, uptime, dataReportParam.getDeviceName());
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);
+ log.error("主题:设备数据上报出现错误,异常信息为{}", sqlex);
}
return responseData;
}
diff --git a/src/main/java/com/casic/service/impl/NormalDataProcessor.java b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
new file mode 100644
index 0000000..3f7630a
--- /dev/null
+++ b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
@@ -0,0 +1,164 @@
+package com.casic.service.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmRecordsMapper;
+import com.casic.dao.DataGasMapper;
+import com.casic.dao.impl.AlarmJobDao;
+import com.casic.entity.AlarmJob;
+import com.casic.entity.AlarmRecords;
+import com.casic.entity.DataGasDector;
+import com.casic.model.DataContentParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Component
+public class NormalDataProcessor {
+
+ public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ @Value("${casic.device.gas-dector.type}")
+ private Long deviceType;
+ @Value("${casic.device.gas-dector.minutes}")
+ private String minutes;
+ @Value("${casic.device.gas-dector.enable-local}")
+ private Boolean enableLocal;
+ @Resource
+ private DataGasMapper dataGasMapper;
+ @Autowired
+ private AlarmJobDao alarmJobDao;
+ @Resource
+ private AlarmRecordsMapper alarmRecordsMapper;
+ private static Snowflake snowflake = new Snowflake(0, 2);
+
+ public void normalDataProvider(DataContentParam dataReportParam, Long timeStamp, String devcode) {
+ Map gasMap = dataGasMapper.getWellCode(devcode);
+ if (ObjectUtils.isEmpty(gasMap)) {
+ log.info("没有该设备编号录入" + devcode);
+ if (enableLocal) {
+ return;
+ }
+ }
+ Boolean updateFlag = false;
+ if (ObjectUtils.isEmpty(dataGasMapper.getLastData(minutes, devcode))) {
+ updateFlag = this.saveNormalData(dataReportParam, timeStamp, devcode, gasMap);
+ }
+ this.dataTaskJudge(dataReportParam, devcode, timeStamp, gasMap, updateFlag);
+ return;
+ }
+
+ /**
+ * 自定义时间存库
+ *
+ * @param dataReportParam
+ * @param timeStamp
+ * @param devcode
+ * @param gasMap
+ */
+ private Boolean saveNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap) {
+ Boolean updateFlag = false;
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ List dataReportFilter = dataReportParam.getRtd_val().stream().filter(
+ data -> {
+ return data != -1;
+ }
+ ).collect(Collectors.toList());
+ if (dataReportFilter.size() > 0 && dataReportFilter.get(dataReportFilter.size() - 1) != 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 1);
+ updateFlag = true;
+ } else if (dataReportFilter.get(dataReportFilter.size() - 1) == 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 0);
+ }
+ dataReportFilter.forEach(
+ data -> {
+ if (data != 65535) {
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+ }
+ );
+ return updateFlag;
+ }
+
+ /**
+ * 报警就存库
+ *
+ * @param dataReportParam
+ * @param devcode
+ * @param timeStamp
+ * @param gasMap
+ */
+ private void dataTaskJudge(DataContentParam dataReportParam, String devcode, Long timeStamp, Map gasMap, Boolean updateFlag) {
+ List> alarmLevelList = dataGasMapper.getAlarmLevelList(deviceType);
+ String wellCode = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "";
+ Long deviceId = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? Long.valueOf(String.valueOf(gasMap.get("deviceId"))) : -1;
+ final String gasMsgContent=dataGasMapper.getGasMsgContent(deviceType);
+ dataReportParam.getRtd_val().stream().filter(
+ dataReport -> {
+ return dataReport != -1 && dataReport != 65535;
+ }
+ ).forEach(
+ dataReport -> {
+ for (Map alarmLevelMap : alarmLevelList) {
+ if (dataReport > Float.valueOf(String.valueOf(alarmLevelMap.get("high_value")))) {
+ AlarmRecords alarmRecord = new AlarmRecords();
+ alarmRecord.setId(snowflake.nextId());
+ alarmRecord.setDeviceId(deviceId);
+ alarmRecord.setDevcode(devcode);
+ alarmRecord.setWellCode(wellCode);
+ alarmRecord.setAlarmType("1"); // 业务报警
+ alarmRecord.setAlarmContent("燃气报警");
+ alarmRecord.setAlarmValue(String.valueOf(dataReport));
+ alarmRecord.setAlarmTime(new Date());
+ alarmRecord.setStatus("1");
+ alarmRecord.setAlarmLevel(Integer.valueOf(alarmLevelMap.get("level").toString()));
+ alarmRecord.setAlarmMessage("燃气报警");
+ String jobId = alarmRecordsMapper.isOldAlarmRecord(devcode, "燃气报警");
+ // 超出报警阈值 生成一条报警消息
+ if (!StringUtils.isEmpty(jobId)) {
+ alarmRecordsMapper.updateOldAlarmRecord(devcode, "燃气报警");
+ alarmRecord.setJobId(Long.valueOf(jobId));
+ } else {
+ AlarmJob alarmJob = alarmJobDao.saveData(devcode, wellCode, "RQZD", "1");
+ alarmRecord.setJobId(alarmJob.getId());
+ }
+ alarmRecordsMapper.insert(alarmRecord);
+ if (!updateFlag) {
+ alarmNormalData(dataReportParam, timeStamp, devcode, gasMap, dataReport);
+ }
+ break;
+ }
+ }
+ }
+ );
+ }
+
+ private void alarmNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap, Integer data) {
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+
+}
+
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index fac2afe..f8a06a6 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -1,40 +1,19 @@
server:
- port: 11556
+ port: 11320
################### 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
+ driver-class-name: org.postgresql.Driver
+ url: jdbc:postgresql://111.198.10.15:11209/smartwell_zq_cs
+ 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
- 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
+ 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
index 86411e6..ffc01e9 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -19,18 +19,11 @@
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
+ device:
+ gas-dector:
+ type: 101
+ minutes: 60
+ enable-local: false
+# type 可燃气体的设备类型
+# minutes: 燃气外协设备上传数据的分钟数
\ No newline at end of file
diff --git a/target/classes/application-dev.yml b/target/classes/application-dev.yml
new file mode 100644
index 0000000..fac2afe
--- /dev/null
+++ b/target/classes/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/target/classes/application-postgre.yml b/target/classes/application-postgre.yml
new file mode 100644
index 0000000..2b7f69c
--- /dev/null
+++ b/target/classes/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/target/classes/application.yml b/target/classes/application.yml
new file mode 100644
index 0000000..86411e6
--- /dev/null
+++ b/target/classes/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
diff --git a/target/classes/com/casic/CasicApplication.class b/target/classes/com/casic/CasicApplication.class
new file mode 100644
index 0000000..68c2f95
--- /dev/null
+++ b/target/classes/com/casic/CasicApplication.class
Binary files differ
diff --git a/target/classes/com/casic/controller/DeviceController.class b/target/classes/com/casic/controller/DeviceController.class
new file mode 100644
index 0000000..478d6ae
--- /dev/null
+++ b/target/classes/com/casic/controller/DeviceController.class
Binary files differ
diff --git a/target/classes/com/casic/controller/DeviceDataController.class b/target/classes/com/casic/controller/DeviceDataController.class
new file mode 100644
index 0000000..1f4400c
--- /dev/null
+++ b/target/classes/com/casic/controller/DeviceDataController.class
Binary files differ
diff --git a/target/classes/com/casic/dao/DataGasMapper.class b/target/classes/com/casic/dao/DataGasMapper.class
new file mode 100644
index 0000000..557d539
--- /dev/null
+++ b/target/classes/com/casic/dao/DataGasMapper.class
Binary files differ
diff --git a/target/classes/com/casic/dao/DeviceMapper.class b/target/classes/com/casic/dao/DeviceMapper.class
new file mode 100644
index 0000000..3ddcd2b
--- /dev/null
+++ b/target/classes/com/casic/dao/DeviceMapper.class
Binary files differ
diff --git a/target/classes/com/casic/dao/impl/DeviceDataMapper.class b/target/classes/com/casic/dao/impl/DeviceDataMapper.class
new file mode 100644
index 0000000..d73ed15
--- /dev/null
+++ b/target/classes/com/casic/dao/impl/DeviceDataMapper.class
Binary files differ
diff --git a/target/classes/com/casic/entity/DataGasReport.class b/target/classes/com/casic/entity/DataGasReport.class
new file mode 100644
index 0000000..a3dac78
--- /dev/null
+++ b/target/classes/com/casic/entity/DataGasReport.class
Binary files differ
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh
new file mode 100644
index 0000000..e14c4c7
--- /dev/null
+++ b/src/main/build/bin/start.sh
@@ -0,0 +1,2 @@
+java -jar ./lib/${project.build.finalName}.jar
+
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
index c55e37d..0887f1f 100644
--- a/src/main/java/com/casic/CasicApplication.java
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -3,8 +3,6 @@
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;
/**
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
index e5351c9..be0de6b 100644
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -1,14 +1,19 @@
package com.casic.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.casic.model.DataReportParam;
-import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
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;
+import java.util.Map;
+
+@Slf4j
@RequestMapping("/data")
@RestController
public class DeviceDataController {
@@ -19,19 +24,16 @@
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 String gasReceiver(@RequestBody Map map) {
+// log.info("---------"+JSON.toJSONString(map));
+// return "200";
+// }
@PostMapping("/gas/receiver")
- public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
- return dataService.heartBeatSave(heartbeatParam);
+ public ResponseData gasReceiver(@RequestBody DataReportParam dataReportParam) {
+ log.info("---------"+JSON.toJSONString(dataReportParam));
+ return dataService.gasReceiver(dataReportParam);
}
}
diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java
new file mode 100644
index 0000000..e5e9c8d
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmJobMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmJob;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface AlarmJobMapper extends BaseMapper {
+
+ @Select("SELECT MAX(jobcode) " +
+ "FROM alarm_job " +
+ "WHERE JOBCODE like '${jobcode}%'")
+ String getJobCodeMaxSerial(@Param("jobcode") String jobcode);
+
+}
diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
new file mode 100644
index 0000000..8da7dcb
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmRecords;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface AlarmRecordsMapper extends BaseMapper {
+
+
+ @Select("SELECT JOB_ID AS \"jobId\"\n " +
+ "FROM alarm_records\n " +
+ "WHERE DEVCODE = #{devcode}\n " +
+ "AND ALARM_CONTENT = #{MsgContent}\n " +
+ "AND STATUS='1'\n " +
+ "AND JOB_ID>0 ")
+ String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+
+ @Update(" UPDATE alarm_records\n" +
+ " SET STATUS='0'\n" +
+ " WHERE DEVCODE = #{devcode}\n" +
+ " AND ALARM_CONTENT = #{MsgContent}\n" +
+ " AND STATUS='1'")
+ Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
index 47e7cce..33ce14a 100644
--- a/src/main/java/com/casic/dao/DataGasMapper.java
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -1,9 +1,48 @@
package com.casic.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.casic.entity.DataGasReport;
+import com.casic.entity.DataGasDector;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+import java.util.Map;
@Mapper
-public interface DataGasMapper extends BaseMapper {
+public interface DataGasMapper extends BaseMapper {
+
+ @Select("select bd.id as \"deviceId\",bwi.WELL_CODE AS \"wellCode\" " +
+ "from bus_device_well bdw " +
+ "join (select id from bus_device where devcode=#{devcode}) bd ON bd.id=bdw.device_id " +
+ "join bus_well_info bwi ON bwi.id=bdw.well_id ")
+ Map getWellCode(@Param("devcode") String devcode);
+
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{onlineState} " +
+ "WHERE devcode=#{devcode} ")
+ void setOfflineByDevcode(@Param("devcode") String devcode,
+ @Param("onlineState") Integer onlineState);
+
+ @Select("SELECT level,high_value " +
+ "FROM alarm_level " +
+ "WHERE device_type=#{deviceType} ")
+ List> getAlarmLevelList(@Param("deviceType") Long deviceType);
+
+ @Select("SELECT devcode " +
+ "FROM data_gas_dector " +
+ "WHERE devcode=#{devcode} " +
+ "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+
+ "ORDER BY logtime DESC " +
+ "LIMIT 1")
+ String getLastData(@Param("minutes") String minutes,
+ @Param("devcode") String devcode);
+
+ @Select("SELECT alarm_content" +
+ "FROM BASE_alarm_content_type" +
+ "where device_type=#{deviceType}")
+ String getGasMsgContent(@Param("deviceType")Long deviceType);
+
+
}
diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
new file mode 100644
index 0000000..5131821
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
@@ -0,0 +1,59 @@
+package com.casic.dao.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmJobMapper;
+import com.casic.entity.AlarmJob;
+import org.springframework.stereotype.Component;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Component
+public class AlarmJobDao {
+
+ private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ private static Snowflake snowflake = new Snowflake(0, 2);
+// private static final Sn
+
+ @Resource
+ private AlarmJobMapper alarmJobMapper;
+
+ public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) {
+ AlarmJob alarmJob = new AlarmJob();
+ alarmJob.setId(snowflake.nextId());
+ alarmJob.setDevcode(devCode);
+ alarmJob.setWellCode(wellCode);
+ alarmJob.setJobStatus("0");
+ alarmJob.setCreateTime(new Date());
+ alarmJob.setJobcode(this.produceJobCode(devTypeName));
+ alarmJob.setJobType(jobType);
+ alarmJobMapper.insert(alarmJob);
+ return alarmJob;
+ }
+
+ /**
+ * 前缀+日期+4位流水号
+ *
+ * @param devTypeName
+ * @return
+ */
+ private String produceJobCode(String devTypeName) {
+ String pre = devTypeName;
+ String dataStr = sdf6.format(new Date());
+ String fix = this.getJobCodeMaxSerial(pre + dataStr);
+ return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001";
+ }
+
+
+ private String getJobCodeMaxSerial(String jobcode) {
+ String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode);
+ String fix = "";
+ if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) {
+ fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4);
+ }
+ return fix;
+ }
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
deleted file mode 100644
index c797e55..0000000
--- a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
+++ /dev/null
@@ -1,68 +0,0 @@
-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/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java
new file mode 100644
index 0000000..8a0f764
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmJob.java
@@ -0,0 +1,165 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 报警工单表
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_job")
+public class AlarmJob extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 工单编号
+ */
+ @TableField("JOBCODE")
+ private String jobcode;
+ /**
+ * 工单类型
+ */
+ @TableField("JOG_TYPE")
+ private String jobType;
+ /**
+ * 井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 工单创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+ /**
+ * 工单状态(0待处理,1待确认,2处理中,3完成)
+ */
+ @TableField("JOB_STATUS")
+ private String jobStatus;
+ /**
+ * 接单人员
+ */
+ @TableField("GET_JOB_PERSON")
+ private Long getJobPerson;
+ /**
+ * 接单时间
+ */
+ @TableField("GET_JOB_TIME")
+ private Date getJobTime;
+ /**
+ * 应接单时间
+ */
+ @TableField("SHOULD_GET_TIME")
+ private Date shouldGetTime;
+ /**
+ * 第一现场情况
+ */
+ @TableField("FIRST_STATE")
+ private String firstState;
+ /**
+ * 第一现场照片
+ */
+ @TableField("FIRST_STATE_PHOTOS")
+ private String firstStatePhotos;
+ /**
+ * 确认人员
+ */
+ @TableField("CONFIRM_JOB_PERSON")
+ private Long confirmJobPerson;
+ /**
+ * 确认时间
+ */
+ @TableField("CONFRIM_JOB_TIME")
+ private Date confrimJobTime;
+ /**
+ * 处理人员
+ */
+ @TableField("HANDLE_JOB_Person")
+ private Long handleJobPerson;
+ /**
+ * 处理时间
+ */
+ @TableField("HANDLE_JOB_TIME")
+ private Date handleJobTime;
+ /**
+ * 维护情况记录
+ */
+ @TableField("HANDLE_MESSAGE")
+ private String handleMessage;
+ /**
+ * 维护图片
+ */
+ @TableField("HANDLE_PHOTOS")
+ private String handlePhotos;
+ /**
+ * 工单流转记录
+ */
+ @TableField("FLOW")
+ private String flow;
+
+ @TableField("JOB_BELONG_TO")
+ private Long jobBelongTo;
+
+ @TableField("JOB_FLAG_DELAY")
+ private String jobFlagDelay;
+
+ @TableField("JOB_FLAG_1")
+ private String jobFlag1;
+
+ @TableField(exist = false)
+ private String alarmValue;
+
+ @TableField(exist = false)
+ private String alarmContentName;
+
+ @TableField(exist = false)
+ private Integer recordId;
+
+ @Override
+ public String toString() {
+ return "AlarmJob{" +
+ "id=" + id +
+ ", jobcode=" + jobcode +
+ ", jogType=" + jobType +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", createTime=" + createTime +
+ ", jobStatus=" + jobStatus +
+ ", getJobPerson=" + getJobPerson +
+ ", getJobTime=" + getJobTime +
+ ", firstState=" + firstState +
+ ", firstStatePhotos=" + firstStatePhotos +
+ ", confirmJobPerson=" + confirmJobPerson +
+ ", confrimJobTime=" + confrimJobTime +
+ ", handleJobPerson=" + handleJobPerson +
+ ", handleJobTime=" + handleJobTime +
+ ", handleMessage=" + handleMessage +
+ ", handlePhotos=" + handlePhotos +
+ ", flow=" + flow +
+ ", recordId=" + recordId +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java
new file mode 100644
index 0000000..88b0b26
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmRecords.java
@@ -0,0 +1,108 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ *
+ *
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_records")
+public class AlarmRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 设备ID
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 闸井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 告警类型
+ */
+ @TableField("ALARM_TYPE")
+ private String alarmType;
+ /**
+ * 告警内容
+ */
+ @TableField("ALARM_CONTENT")
+ private String alarmContent;
+ /**
+ * 告警数值
+ */
+ @TableField("ALARM_VALUE")
+ private String alarmValue;
+ /**
+ * 告警等级
+ */
+ @TableField("ALARM_LEVEL")
+ private Integer alarmLevel;
+ /**
+ * 告警详情
+ */
+ @TableField("ALARM_MSG")
+ private String alarmMessage;
+ /**
+ * 告警时间
+ */
+ @TableField("ALARM_TIME")
+ private Date alarmTime;
+ /**
+ * 告警状态
+ */
+ @TableField("STATUS")
+ private String status;
+ /**
+ * 工单编号
+ */
+ @TableField("JOB_ID")
+ private Long jobId;
+
+ @TableField(exist = false)
+ private Integer jobStatus;
+
+ @Override
+ public String toString() {
+ return "AlarmRecords{" +
+ "id=" + id +
+ ", deviceId=" + deviceId +
+ ", devcode=" + devcode +
+ ", wellCode=" + wellCode +
+ ", alarmType=" + alarmType +
+ ", alarmContent=" + alarmContent +
+ ", alarmValue=" + alarmValue +
+ ", alarmLevel=" + alarmLevel +
+ ", alarmMessage=" + alarmMessage +
+ ", alarmTime=" + alarmTime +
+ ", status=" + status +
+ ", jobId=" + jobId +
+ ", jobStatus=" + jobStatus +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/DataGasDector.java b/src/main/java/com/casic/entity/DataGasDector.java
new file mode 100644
index 0000000..537789a
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasDector.java
@@ -0,0 +1,42 @@
+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 DataGasDector {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ private String devcode;
+ private String wellCode;
+ private String strength;
+
+ private String descn;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
deleted file mode 100644
index c43ccdf..0000000
--- a/src/main/java/com/casic/entity/DataGasReport.java
+++ /dev/null
@@ -1,69 +0,0 @@
-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/entity/DeviceSatatus.java b/src/main/java/com/casic/entity/DeviceSatatus.java
new file mode 100644
index 0000000..bab7903
--- /dev/null
+++ b/src/main/java/com/casic/entity/DeviceSatatus.java
@@ -0,0 +1,19 @@
+package com.casic.entity;
+
+import lombok.Data;
+
+/**
+ * 不使用了
+ *
+ */
+@Data
+public class DeviceSatatus {
+ private String deviceId;
+ private String cell;
+ private String cellTs;
+ private String onlineState;
+ private String onlineTs;
+ private String lastDataId;
+ private String lastDataJson;
+ private String lastDataTs;
+}
diff --git a/src/main/java/com/casic/model/DataContentParam.java b/src/main/java/com/casic/model/DataContentParam.java
new file mode 100644
index 0000000..46d298a
--- /dev/null
+++ b/src/main/java/com/casic/model/DataContentParam.java
@@ -0,0 +1,19 @@
+package com.casic.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DataContentParam {
+ private String msg_type;
+ private String error_val;
+ private String ch_cnt;
+ private String erro_cnt;
+ private String alarm_low_cnt;
+ private String alarm_high_cnt;
+ private String offline_cnt;
+ private List rtd_val;
+ private List adc_val;
+ private List status_val;
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/model/DataReportParam.java b/src/main/java/com/casic/model/DataReportParam.java
index 082814c..754f330 100644
--- a/src/main/java/com/casic/model/DataReportParam.java
+++ b/src/main/java/com/casic/model/DataReportParam.java
@@ -11,25 +11,12 @@
*/
@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;
+ private String iotId;
+ private String requestId;
+ private Object checkFailedData;
+ private String productKey;
+ private String gmtCreate;
+ private String deviceName;
+ private Object items;
}
diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java
index d883fe4..457d710 100644
--- a/src/main/java/com/casic/service/DeviceDataService.java
+++ b/src/main/java/com/casic/service/DeviceDataService.java
@@ -3,25 +3,18 @@
import com.casic.model.DataReportParam;
import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
+import org.springframework.web.bind.annotation.RequestBody;
/**
* @author cz
* @date 2022
*/
public interface DeviceDataService {
-
/**
*
* @param dataReportParam
* @return
*/
- ResponseData DeviceDataCommit(DataReportParam dataReportParam);
-
- /**
- *
- * @param heartbeatParam
- * @return
- */
- ResponseData heartBeatSave(HeartbeatParam heartbeatParam);
+ ResponseData gasReceiver(DataReportParam dataReportParam);
}
diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
index 93f0685..e473f0c 100644
--- a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
+++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
@@ -1,58 +1,49 @@
package com.casic.service.impl;
-import com.casic.dao.impl.DeviceDataMapper;
+import com.alibaba.druid.util.StringUtils;
+import com.alibaba.fastjson.JSON;
import com.casic.model.*;
import com.casic.service.DeviceDataService;
+import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import java.util.Map;
+
/**
* @author cz
- * @date 2022-6-20
+ * @date 2022-9-26
*/
@Slf4j
@Service
public class DeviceDataServiceImpl implements DeviceDataService {
- @Autowired
- DeviceDataMapper deviceDataMapper;
+ private final NormalDataProcessor normalDataProcessor;
- /**
- * @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;
+ public DeviceDataServiceImpl(NormalDataProcessor normalDataProcessor) {
+ this.normalDataProcessor = normalDataProcessor;
}
- /**
- * @param heartbeatParam
- * @return
- */
- public ResponseData heartBeatSave(HeartbeatParam heartbeatParam) {
+ public ResponseData gasReceiver(DataReportParam dataReportParam) {
ResponseData responseData = new ResponseData();
try {
- deviceDataMapper.editDeviceData(heartbeatParam);
+ Map> updDataMap = new ObjectMapper().convertValue(dataReportParam.getItems(), Map.class);
+ DataContentParam dataContentParam = JSON.parseObject(updDataMap.get("updData").get("value"), DataContentParam.class);
+ Long uptime = Long.valueOf(String.valueOf(updDataMap.get("updData").get("time")));
+ if (StringUtils.isEmpty(dataReportParam.getDeviceName())) {
+ responseData.setCode(200);
+ responseData.setMessage("没有设备编号");
+ return responseData;
+ }
+ normalDataProcessor.normalDataProvider(dataContentParam, uptime, dataReportParam.getDeviceName());
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);
+ log.error("主题:设备数据上报出现错误,异常信息为{}", sqlex);
}
return responseData;
}
diff --git a/src/main/java/com/casic/service/impl/NormalDataProcessor.java b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
new file mode 100644
index 0000000..3f7630a
--- /dev/null
+++ b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
@@ -0,0 +1,164 @@
+package com.casic.service.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmRecordsMapper;
+import com.casic.dao.DataGasMapper;
+import com.casic.dao.impl.AlarmJobDao;
+import com.casic.entity.AlarmJob;
+import com.casic.entity.AlarmRecords;
+import com.casic.entity.DataGasDector;
+import com.casic.model.DataContentParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Component
+public class NormalDataProcessor {
+
+ public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ @Value("${casic.device.gas-dector.type}")
+ private Long deviceType;
+ @Value("${casic.device.gas-dector.minutes}")
+ private String minutes;
+ @Value("${casic.device.gas-dector.enable-local}")
+ private Boolean enableLocal;
+ @Resource
+ private DataGasMapper dataGasMapper;
+ @Autowired
+ private AlarmJobDao alarmJobDao;
+ @Resource
+ private AlarmRecordsMapper alarmRecordsMapper;
+ private static Snowflake snowflake = new Snowflake(0, 2);
+
+ public void normalDataProvider(DataContentParam dataReportParam, Long timeStamp, String devcode) {
+ Map gasMap = dataGasMapper.getWellCode(devcode);
+ if (ObjectUtils.isEmpty(gasMap)) {
+ log.info("没有该设备编号录入" + devcode);
+ if (enableLocal) {
+ return;
+ }
+ }
+ Boolean updateFlag = false;
+ if (ObjectUtils.isEmpty(dataGasMapper.getLastData(minutes, devcode))) {
+ updateFlag = this.saveNormalData(dataReportParam, timeStamp, devcode, gasMap);
+ }
+ this.dataTaskJudge(dataReportParam, devcode, timeStamp, gasMap, updateFlag);
+ return;
+ }
+
+ /**
+ * 自定义时间存库
+ *
+ * @param dataReportParam
+ * @param timeStamp
+ * @param devcode
+ * @param gasMap
+ */
+ private Boolean saveNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap) {
+ Boolean updateFlag = false;
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ List dataReportFilter = dataReportParam.getRtd_val().stream().filter(
+ data -> {
+ return data != -1;
+ }
+ ).collect(Collectors.toList());
+ if (dataReportFilter.size() > 0 && dataReportFilter.get(dataReportFilter.size() - 1) != 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 1);
+ updateFlag = true;
+ } else if (dataReportFilter.get(dataReportFilter.size() - 1) == 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 0);
+ }
+ dataReportFilter.forEach(
+ data -> {
+ if (data != 65535) {
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+ }
+ );
+ return updateFlag;
+ }
+
+ /**
+ * 报警就存库
+ *
+ * @param dataReportParam
+ * @param devcode
+ * @param timeStamp
+ * @param gasMap
+ */
+ private void dataTaskJudge(DataContentParam dataReportParam, String devcode, Long timeStamp, Map gasMap, Boolean updateFlag) {
+ List> alarmLevelList = dataGasMapper.getAlarmLevelList(deviceType);
+ String wellCode = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "";
+ Long deviceId = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? Long.valueOf(String.valueOf(gasMap.get("deviceId"))) : -1;
+ final String gasMsgContent=dataGasMapper.getGasMsgContent(deviceType);
+ dataReportParam.getRtd_val().stream().filter(
+ dataReport -> {
+ return dataReport != -1 && dataReport != 65535;
+ }
+ ).forEach(
+ dataReport -> {
+ for (Map alarmLevelMap : alarmLevelList) {
+ if (dataReport > Float.valueOf(String.valueOf(alarmLevelMap.get("high_value")))) {
+ AlarmRecords alarmRecord = new AlarmRecords();
+ alarmRecord.setId(snowflake.nextId());
+ alarmRecord.setDeviceId(deviceId);
+ alarmRecord.setDevcode(devcode);
+ alarmRecord.setWellCode(wellCode);
+ alarmRecord.setAlarmType("1"); // 业务报警
+ alarmRecord.setAlarmContent("燃气报警");
+ alarmRecord.setAlarmValue(String.valueOf(dataReport));
+ alarmRecord.setAlarmTime(new Date());
+ alarmRecord.setStatus("1");
+ alarmRecord.setAlarmLevel(Integer.valueOf(alarmLevelMap.get("level").toString()));
+ alarmRecord.setAlarmMessage("燃气报警");
+ String jobId = alarmRecordsMapper.isOldAlarmRecord(devcode, "燃气报警");
+ // 超出报警阈值 生成一条报警消息
+ if (!StringUtils.isEmpty(jobId)) {
+ alarmRecordsMapper.updateOldAlarmRecord(devcode, "燃气报警");
+ alarmRecord.setJobId(Long.valueOf(jobId));
+ } else {
+ AlarmJob alarmJob = alarmJobDao.saveData(devcode, wellCode, "RQZD", "1");
+ alarmRecord.setJobId(alarmJob.getId());
+ }
+ alarmRecordsMapper.insert(alarmRecord);
+ if (!updateFlag) {
+ alarmNormalData(dataReportParam, timeStamp, devcode, gasMap, dataReport);
+ }
+ break;
+ }
+ }
+ }
+ );
+ }
+
+ private void alarmNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap, Integer data) {
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+
+}
+
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index fac2afe..f8a06a6 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -1,40 +1,19 @@
server:
- port: 11556
+ port: 11320
################### 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
+ driver-class-name: org.postgresql.Driver
+ url: jdbc:postgresql://111.198.10.15:11209/smartwell_zq_cs
+ 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
- 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
+ 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
index 86411e6..ffc01e9 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -19,18 +19,11 @@
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
+ device:
+ gas-dector:
+ type: 101
+ minutes: 60
+ enable-local: false
+# type 可燃气体的设备类型
+# minutes: 燃气外协设备上传数据的分钟数
\ No newline at end of file
diff --git a/target/classes/application-dev.yml b/target/classes/application-dev.yml
new file mode 100644
index 0000000..fac2afe
--- /dev/null
+++ b/target/classes/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/target/classes/application-postgre.yml b/target/classes/application-postgre.yml
new file mode 100644
index 0000000..2b7f69c
--- /dev/null
+++ b/target/classes/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/target/classes/application.yml b/target/classes/application.yml
new file mode 100644
index 0000000..86411e6
--- /dev/null
+++ b/target/classes/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
diff --git a/target/classes/com/casic/CasicApplication.class b/target/classes/com/casic/CasicApplication.class
new file mode 100644
index 0000000..68c2f95
--- /dev/null
+++ b/target/classes/com/casic/CasicApplication.class
Binary files differ
diff --git a/target/classes/com/casic/controller/DeviceController.class b/target/classes/com/casic/controller/DeviceController.class
new file mode 100644
index 0000000..478d6ae
--- /dev/null
+++ b/target/classes/com/casic/controller/DeviceController.class
Binary files differ
diff --git a/target/classes/com/casic/controller/DeviceDataController.class b/target/classes/com/casic/controller/DeviceDataController.class
new file mode 100644
index 0000000..1f4400c
--- /dev/null
+++ b/target/classes/com/casic/controller/DeviceDataController.class
Binary files differ
diff --git a/target/classes/com/casic/dao/DataGasMapper.class b/target/classes/com/casic/dao/DataGasMapper.class
new file mode 100644
index 0000000..557d539
--- /dev/null
+++ b/target/classes/com/casic/dao/DataGasMapper.class
Binary files differ
diff --git a/target/classes/com/casic/dao/DeviceMapper.class b/target/classes/com/casic/dao/DeviceMapper.class
new file mode 100644
index 0000000..3ddcd2b
--- /dev/null
+++ b/target/classes/com/casic/dao/DeviceMapper.class
Binary files differ
diff --git a/target/classes/com/casic/dao/impl/DeviceDataMapper.class b/target/classes/com/casic/dao/impl/DeviceDataMapper.class
new file mode 100644
index 0000000..d73ed15
--- /dev/null
+++ b/target/classes/com/casic/dao/impl/DeviceDataMapper.class
Binary files differ
diff --git a/target/classes/com/casic/entity/DataGasReport.class b/target/classes/com/casic/entity/DataGasReport.class
new file mode 100644
index 0000000..a3dac78
--- /dev/null
+++ b/target/classes/com/casic/entity/DataGasReport.class
Binary files differ
diff --git a/target/classes/com/casic/model/DataReportParam.class b/target/classes/com/casic/model/DataReportParam.class
new file mode 100644
index 0000000..284c4f6
--- /dev/null
+++ b/target/classes/com/casic/model/DataReportParam.class
Binary files differ
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh
new file mode 100644
index 0000000..e14c4c7
--- /dev/null
+++ b/src/main/build/bin/start.sh
@@ -0,0 +1,2 @@
+java -jar ./lib/${project.build.finalName}.jar
+
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
index c55e37d..0887f1f 100644
--- a/src/main/java/com/casic/CasicApplication.java
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -3,8 +3,6 @@
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;
/**
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
index e5351c9..be0de6b 100644
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -1,14 +1,19 @@
package com.casic.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.casic.model.DataReportParam;
-import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
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;
+import java.util.Map;
+
+@Slf4j
@RequestMapping("/data")
@RestController
public class DeviceDataController {
@@ -19,19 +24,16 @@
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 String gasReceiver(@RequestBody Map map) {
+// log.info("---------"+JSON.toJSONString(map));
+// return "200";
+// }
@PostMapping("/gas/receiver")
- public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
- return dataService.heartBeatSave(heartbeatParam);
+ public ResponseData gasReceiver(@RequestBody DataReportParam dataReportParam) {
+ log.info("---------"+JSON.toJSONString(dataReportParam));
+ return dataService.gasReceiver(dataReportParam);
}
}
diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java
new file mode 100644
index 0000000..e5e9c8d
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmJobMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmJob;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface AlarmJobMapper extends BaseMapper {
+
+ @Select("SELECT MAX(jobcode) " +
+ "FROM alarm_job " +
+ "WHERE JOBCODE like '${jobcode}%'")
+ String getJobCodeMaxSerial(@Param("jobcode") String jobcode);
+
+}
diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
new file mode 100644
index 0000000..8da7dcb
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmRecords;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface AlarmRecordsMapper extends BaseMapper {
+
+
+ @Select("SELECT JOB_ID AS \"jobId\"\n " +
+ "FROM alarm_records\n " +
+ "WHERE DEVCODE = #{devcode}\n " +
+ "AND ALARM_CONTENT = #{MsgContent}\n " +
+ "AND STATUS='1'\n " +
+ "AND JOB_ID>0 ")
+ String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+
+ @Update(" UPDATE alarm_records\n" +
+ " SET STATUS='0'\n" +
+ " WHERE DEVCODE = #{devcode}\n" +
+ " AND ALARM_CONTENT = #{MsgContent}\n" +
+ " AND STATUS='1'")
+ Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
index 47e7cce..33ce14a 100644
--- a/src/main/java/com/casic/dao/DataGasMapper.java
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -1,9 +1,48 @@
package com.casic.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.casic.entity.DataGasReport;
+import com.casic.entity.DataGasDector;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+import java.util.Map;
@Mapper
-public interface DataGasMapper extends BaseMapper {
+public interface DataGasMapper extends BaseMapper {
+
+ @Select("select bd.id as \"deviceId\",bwi.WELL_CODE AS \"wellCode\" " +
+ "from bus_device_well bdw " +
+ "join (select id from bus_device where devcode=#{devcode}) bd ON bd.id=bdw.device_id " +
+ "join bus_well_info bwi ON bwi.id=bdw.well_id ")
+ Map getWellCode(@Param("devcode") String devcode);
+
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{onlineState} " +
+ "WHERE devcode=#{devcode} ")
+ void setOfflineByDevcode(@Param("devcode") String devcode,
+ @Param("onlineState") Integer onlineState);
+
+ @Select("SELECT level,high_value " +
+ "FROM alarm_level " +
+ "WHERE device_type=#{deviceType} ")
+ List> getAlarmLevelList(@Param("deviceType") Long deviceType);
+
+ @Select("SELECT devcode " +
+ "FROM data_gas_dector " +
+ "WHERE devcode=#{devcode} " +
+ "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+
+ "ORDER BY logtime DESC " +
+ "LIMIT 1")
+ String getLastData(@Param("minutes") String minutes,
+ @Param("devcode") String devcode);
+
+ @Select("SELECT alarm_content" +
+ "FROM BASE_alarm_content_type" +
+ "where device_type=#{deviceType}")
+ String getGasMsgContent(@Param("deviceType")Long deviceType);
+
+
}
diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
new file mode 100644
index 0000000..5131821
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
@@ -0,0 +1,59 @@
+package com.casic.dao.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmJobMapper;
+import com.casic.entity.AlarmJob;
+import org.springframework.stereotype.Component;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Component
+public class AlarmJobDao {
+
+ private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ private static Snowflake snowflake = new Snowflake(0, 2);
+// private static final Sn
+
+ @Resource
+ private AlarmJobMapper alarmJobMapper;
+
+ public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) {
+ AlarmJob alarmJob = new AlarmJob();
+ alarmJob.setId(snowflake.nextId());
+ alarmJob.setDevcode(devCode);
+ alarmJob.setWellCode(wellCode);
+ alarmJob.setJobStatus("0");
+ alarmJob.setCreateTime(new Date());
+ alarmJob.setJobcode(this.produceJobCode(devTypeName));
+ alarmJob.setJobType(jobType);
+ alarmJobMapper.insert(alarmJob);
+ return alarmJob;
+ }
+
+ /**
+ * 前缀+日期+4位流水号
+ *
+ * @param devTypeName
+ * @return
+ */
+ private String produceJobCode(String devTypeName) {
+ String pre = devTypeName;
+ String dataStr = sdf6.format(new Date());
+ String fix = this.getJobCodeMaxSerial(pre + dataStr);
+ return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001";
+ }
+
+
+ private String getJobCodeMaxSerial(String jobcode) {
+ String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode);
+ String fix = "";
+ if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) {
+ fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4);
+ }
+ return fix;
+ }
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
deleted file mode 100644
index c797e55..0000000
--- a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
+++ /dev/null
@@ -1,68 +0,0 @@
-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/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java
new file mode 100644
index 0000000..8a0f764
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmJob.java
@@ -0,0 +1,165 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 报警工单表
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_job")
+public class AlarmJob extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 工单编号
+ */
+ @TableField("JOBCODE")
+ private String jobcode;
+ /**
+ * 工单类型
+ */
+ @TableField("JOG_TYPE")
+ private String jobType;
+ /**
+ * 井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 工单创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+ /**
+ * 工单状态(0待处理,1待确认,2处理中,3完成)
+ */
+ @TableField("JOB_STATUS")
+ private String jobStatus;
+ /**
+ * 接单人员
+ */
+ @TableField("GET_JOB_PERSON")
+ private Long getJobPerson;
+ /**
+ * 接单时间
+ */
+ @TableField("GET_JOB_TIME")
+ private Date getJobTime;
+ /**
+ * 应接单时间
+ */
+ @TableField("SHOULD_GET_TIME")
+ private Date shouldGetTime;
+ /**
+ * 第一现场情况
+ */
+ @TableField("FIRST_STATE")
+ private String firstState;
+ /**
+ * 第一现场照片
+ */
+ @TableField("FIRST_STATE_PHOTOS")
+ private String firstStatePhotos;
+ /**
+ * 确认人员
+ */
+ @TableField("CONFIRM_JOB_PERSON")
+ private Long confirmJobPerson;
+ /**
+ * 确认时间
+ */
+ @TableField("CONFRIM_JOB_TIME")
+ private Date confrimJobTime;
+ /**
+ * 处理人员
+ */
+ @TableField("HANDLE_JOB_Person")
+ private Long handleJobPerson;
+ /**
+ * 处理时间
+ */
+ @TableField("HANDLE_JOB_TIME")
+ private Date handleJobTime;
+ /**
+ * 维护情况记录
+ */
+ @TableField("HANDLE_MESSAGE")
+ private String handleMessage;
+ /**
+ * 维护图片
+ */
+ @TableField("HANDLE_PHOTOS")
+ private String handlePhotos;
+ /**
+ * 工单流转记录
+ */
+ @TableField("FLOW")
+ private String flow;
+
+ @TableField("JOB_BELONG_TO")
+ private Long jobBelongTo;
+
+ @TableField("JOB_FLAG_DELAY")
+ private String jobFlagDelay;
+
+ @TableField("JOB_FLAG_1")
+ private String jobFlag1;
+
+ @TableField(exist = false)
+ private String alarmValue;
+
+ @TableField(exist = false)
+ private String alarmContentName;
+
+ @TableField(exist = false)
+ private Integer recordId;
+
+ @Override
+ public String toString() {
+ return "AlarmJob{" +
+ "id=" + id +
+ ", jobcode=" + jobcode +
+ ", jogType=" + jobType +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", createTime=" + createTime +
+ ", jobStatus=" + jobStatus +
+ ", getJobPerson=" + getJobPerson +
+ ", getJobTime=" + getJobTime +
+ ", firstState=" + firstState +
+ ", firstStatePhotos=" + firstStatePhotos +
+ ", confirmJobPerson=" + confirmJobPerson +
+ ", confrimJobTime=" + confrimJobTime +
+ ", handleJobPerson=" + handleJobPerson +
+ ", handleJobTime=" + handleJobTime +
+ ", handleMessage=" + handleMessage +
+ ", handlePhotos=" + handlePhotos +
+ ", flow=" + flow +
+ ", recordId=" + recordId +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java
new file mode 100644
index 0000000..88b0b26
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmRecords.java
@@ -0,0 +1,108 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ *
+ *
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_records")
+public class AlarmRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 设备ID
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 闸井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 告警类型
+ */
+ @TableField("ALARM_TYPE")
+ private String alarmType;
+ /**
+ * 告警内容
+ */
+ @TableField("ALARM_CONTENT")
+ private String alarmContent;
+ /**
+ * 告警数值
+ */
+ @TableField("ALARM_VALUE")
+ private String alarmValue;
+ /**
+ * 告警等级
+ */
+ @TableField("ALARM_LEVEL")
+ private Integer alarmLevel;
+ /**
+ * 告警详情
+ */
+ @TableField("ALARM_MSG")
+ private String alarmMessage;
+ /**
+ * 告警时间
+ */
+ @TableField("ALARM_TIME")
+ private Date alarmTime;
+ /**
+ * 告警状态
+ */
+ @TableField("STATUS")
+ private String status;
+ /**
+ * 工单编号
+ */
+ @TableField("JOB_ID")
+ private Long jobId;
+
+ @TableField(exist = false)
+ private Integer jobStatus;
+
+ @Override
+ public String toString() {
+ return "AlarmRecords{" +
+ "id=" + id +
+ ", deviceId=" + deviceId +
+ ", devcode=" + devcode +
+ ", wellCode=" + wellCode +
+ ", alarmType=" + alarmType +
+ ", alarmContent=" + alarmContent +
+ ", alarmValue=" + alarmValue +
+ ", alarmLevel=" + alarmLevel +
+ ", alarmMessage=" + alarmMessage +
+ ", alarmTime=" + alarmTime +
+ ", status=" + status +
+ ", jobId=" + jobId +
+ ", jobStatus=" + jobStatus +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/DataGasDector.java b/src/main/java/com/casic/entity/DataGasDector.java
new file mode 100644
index 0000000..537789a
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasDector.java
@@ -0,0 +1,42 @@
+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 DataGasDector {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ private String devcode;
+ private String wellCode;
+ private String strength;
+
+ private String descn;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
deleted file mode 100644
index c43ccdf..0000000
--- a/src/main/java/com/casic/entity/DataGasReport.java
+++ /dev/null
@@ -1,69 +0,0 @@
-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/entity/DeviceSatatus.java b/src/main/java/com/casic/entity/DeviceSatatus.java
new file mode 100644
index 0000000..bab7903
--- /dev/null
+++ b/src/main/java/com/casic/entity/DeviceSatatus.java
@@ -0,0 +1,19 @@
+package com.casic.entity;
+
+import lombok.Data;
+
+/**
+ * 不使用了
+ *
+ */
+@Data
+public class DeviceSatatus {
+ private String deviceId;
+ private String cell;
+ private String cellTs;
+ private String onlineState;
+ private String onlineTs;
+ private String lastDataId;
+ private String lastDataJson;
+ private String lastDataTs;
+}
diff --git a/src/main/java/com/casic/model/DataContentParam.java b/src/main/java/com/casic/model/DataContentParam.java
new file mode 100644
index 0000000..46d298a
--- /dev/null
+++ b/src/main/java/com/casic/model/DataContentParam.java
@@ -0,0 +1,19 @@
+package com.casic.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DataContentParam {
+ private String msg_type;
+ private String error_val;
+ private String ch_cnt;
+ private String erro_cnt;
+ private String alarm_low_cnt;
+ private String alarm_high_cnt;
+ private String offline_cnt;
+ private List rtd_val;
+ private List adc_val;
+ private List status_val;
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/model/DataReportParam.java b/src/main/java/com/casic/model/DataReportParam.java
index 082814c..754f330 100644
--- a/src/main/java/com/casic/model/DataReportParam.java
+++ b/src/main/java/com/casic/model/DataReportParam.java
@@ -11,25 +11,12 @@
*/
@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;
+ private String iotId;
+ private String requestId;
+ private Object checkFailedData;
+ private String productKey;
+ private String gmtCreate;
+ private String deviceName;
+ private Object items;
}
diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java
index d883fe4..457d710 100644
--- a/src/main/java/com/casic/service/DeviceDataService.java
+++ b/src/main/java/com/casic/service/DeviceDataService.java
@@ -3,25 +3,18 @@
import com.casic.model.DataReportParam;
import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
+import org.springframework.web.bind.annotation.RequestBody;
/**
* @author cz
* @date 2022
*/
public interface DeviceDataService {
-
/**
*
* @param dataReportParam
* @return
*/
- ResponseData DeviceDataCommit(DataReportParam dataReportParam);
-
- /**
- *
- * @param heartbeatParam
- * @return
- */
- ResponseData heartBeatSave(HeartbeatParam heartbeatParam);
+ ResponseData gasReceiver(DataReportParam dataReportParam);
}
diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
index 93f0685..e473f0c 100644
--- a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
+++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
@@ -1,58 +1,49 @@
package com.casic.service.impl;
-import com.casic.dao.impl.DeviceDataMapper;
+import com.alibaba.druid.util.StringUtils;
+import com.alibaba.fastjson.JSON;
import com.casic.model.*;
import com.casic.service.DeviceDataService;
+import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import java.util.Map;
+
/**
* @author cz
- * @date 2022-6-20
+ * @date 2022-9-26
*/
@Slf4j
@Service
public class DeviceDataServiceImpl implements DeviceDataService {
- @Autowired
- DeviceDataMapper deviceDataMapper;
+ private final NormalDataProcessor normalDataProcessor;
- /**
- * @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;
+ public DeviceDataServiceImpl(NormalDataProcessor normalDataProcessor) {
+ this.normalDataProcessor = normalDataProcessor;
}
- /**
- * @param heartbeatParam
- * @return
- */
- public ResponseData heartBeatSave(HeartbeatParam heartbeatParam) {
+ public ResponseData gasReceiver(DataReportParam dataReportParam) {
ResponseData responseData = new ResponseData();
try {
- deviceDataMapper.editDeviceData(heartbeatParam);
+ Map> updDataMap = new ObjectMapper().convertValue(dataReportParam.getItems(), Map.class);
+ DataContentParam dataContentParam = JSON.parseObject(updDataMap.get("updData").get("value"), DataContentParam.class);
+ Long uptime = Long.valueOf(String.valueOf(updDataMap.get("updData").get("time")));
+ if (StringUtils.isEmpty(dataReportParam.getDeviceName())) {
+ responseData.setCode(200);
+ responseData.setMessage("没有设备编号");
+ return responseData;
+ }
+ normalDataProcessor.normalDataProvider(dataContentParam, uptime, dataReportParam.getDeviceName());
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);
+ log.error("主题:设备数据上报出现错误,异常信息为{}", sqlex);
}
return responseData;
}
diff --git a/src/main/java/com/casic/service/impl/NormalDataProcessor.java b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
new file mode 100644
index 0000000..3f7630a
--- /dev/null
+++ b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
@@ -0,0 +1,164 @@
+package com.casic.service.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmRecordsMapper;
+import com.casic.dao.DataGasMapper;
+import com.casic.dao.impl.AlarmJobDao;
+import com.casic.entity.AlarmJob;
+import com.casic.entity.AlarmRecords;
+import com.casic.entity.DataGasDector;
+import com.casic.model.DataContentParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Component
+public class NormalDataProcessor {
+
+ public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ @Value("${casic.device.gas-dector.type}")
+ private Long deviceType;
+ @Value("${casic.device.gas-dector.minutes}")
+ private String minutes;
+ @Value("${casic.device.gas-dector.enable-local}")
+ private Boolean enableLocal;
+ @Resource
+ private DataGasMapper dataGasMapper;
+ @Autowired
+ private AlarmJobDao alarmJobDao;
+ @Resource
+ private AlarmRecordsMapper alarmRecordsMapper;
+ private static Snowflake snowflake = new Snowflake(0, 2);
+
+ public void normalDataProvider(DataContentParam dataReportParam, Long timeStamp, String devcode) {
+ Map gasMap = dataGasMapper.getWellCode(devcode);
+ if (ObjectUtils.isEmpty(gasMap)) {
+ log.info("没有该设备编号录入" + devcode);
+ if (enableLocal) {
+ return;
+ }
+ }
+ Boolean updateFlag = false;
+ if (ObjectUtils.isEmpty(dataGasMapper.getLastData(minutes, devcode))) {
+ updateFlag = this.saveNormalData(dataReportParam, timeStamp, devcode, gasMap);
+ }
+ this.dataTaskJudge(dataReportParam, devcode, timeStamp, gasMap, updateFlag);
+ return;
+ }
+
+ /**
+ * 自定义时间存库
+ *
+ * @param dataReportParam
+ * @param timeStamp
+ * @param devcode
+ * @param gasMap
+ */
+ private Boolean saveNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap) {
+ Boolean updateFlag = false;
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ List dataReportFilter = dataReportParam.getRtd_val().stream().filter(
+ data -> {
+ return data != -1;
+ }
+ ).collect(Collectors.toList());
+ if (dataReportFilter.size() > 0 && dataReportFilter.get(dataReportFilter.size() - 1) != 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 1);
+ updateFlag = true;
+ } else if (dataReportFilter.get(dataReportFilter.size() - 1) == 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 0);
+ }
+ dataReportFilter.forEach(
+ data -> {
+ if (data != 65535) {
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+ }
+ );
+ return updateFlag;
+ }
+
+ /**
+ * 报警就存库
+ *
+ * @param dataReportParam
+ * @param devcode
+ * @param timeStamp
+ * @param gasMap
+ */
+ private void dataTaskJudge(DataContentParam dataReportParam, String devcode, Long timeStamp, Map gasMap, Boolean updateFlag) {
+ List> alarmLevelList = dataGasMapper.getAlarmLevelList(deviceType);
+ String wellCode = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "";
+ Long deviceId = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? Long.valueOf(String.valueOf(gasMap.get("deviceId"))) : -1;
+ final String gasMsgContent=dataGasMapper.getGasMsgContent(deviceType);
+ dataReportParam.getRtd_val().stream().filter(
+ dataReport -> {
+ return dataReport != -1 && dataReport != 65535;
+ }
+ ).forEach(
+ dataReport -> {
+ for (Map alarmLevelMap : alarmLevelList) {
+ if (dataReport > Float.valueOf(String.valueOf(alarmLevelMap.get("high_value")))) {
+ AlarmRecords alarmRecord = new AlarmRecords();
+ alarmRecord.setId(snowflake.nextId());
+ alarmRecord.setDeviceId(deviceId);
+ alarmRecord.setDevcode(devcode);
+ alarmRecord.setWellCode(wellCode);
+ alarmRecord.setAlarmType("1"); // 业务报警
+ alarmRecord.setAlarmContent("燃气报警");
+ alarmRecord.setAlarmValue(String.valueOf(dataReport));
+ alarmRecord.setAlarmTime(new Date());
+ alarmRecord.setStatus("1");
+ alarmRecord.setAlarmLevel(Integer.valueOf(alarmLevelMap.get("level").toString()));
+ alarmRecord.setAlarmMessage("燃气报警");
+ String jobId = alarmRecordsMapper.isOldAlarmRecord(devcode, "燃气报警");
+ // 超出报警阈值 生成一条报警消息
+ if (!StringUtils.isEmpty(jobId)) {
+ alarmRecordsMapper.updateOldAlarmRecord(devcode, "燃气报警");
+ alarmRecord.setJobId(Long.valueOf(jobId));
+ } else {
+ AlarmJob alarmJob = alarmJobDao.saveData(devcode, wellCode, "RQZD", "1");
+ alarmRecord.setJobId(alarmJob.getId());
+ }
+ alarmRecordsMapper.insert(alarmRecord);
+ if (!updateFlag) {
+ alarmNormalData(dataReportParam, timeStamp, devcode, gasMap, dataReport);
+ }
+ break;
+ }
+ }
+ }
+ );
+ }
+
+ private void alarmNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap, Integer data) {
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+
+}
+
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index fac2afe..f8a06a6 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -1,40 +1,19 @@
server:
- port: 11556
+ port: 11320
################### 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
+ driver-class-name: org.postgresql.Driver
+ url: jdbc:postgresql://111.198.10.15:11209/smartwell_zq_cs
+ 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
- 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
+ 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
index 86411e6..ffc01e9 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -19,18 +19,11 @@
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
+ device:
+ gas-dector:
+ type: 101
+ minutes: 60
+ enable-local: false
+# type 可燃气体的设备类型
+# minutes: 燃气外协设备上传数据的分钟数
\ No newline at end of file
diff --git a/target/classes/application-dev.yml b/target/classes/application-dev.yml
new file mode 100644
index 0000000..fac2afe
--- /dev/null
+++ b/target/classes/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/target/classes/application-postgre.yml b/target/classes/application-postgre.yml
new file mode 100644
index 0000000..2b7f69c
--- /dev/null
+++ b/target/classes/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/target/classes/application.yml b/target/classes/application.yml
new file mode 100644
index 0000000..86411e6
--- /dev/null
+++ b/target/classes/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
diff --git a/target/classes/com/casic/CasicApplication.class b/target/classes/com/casic/CasicApplication.class
new file mode 100644
index 0000000..68c2f95
--- /dev/null
+++ b/target/classes/com/casic/CasicApplication.class
Binary files differ
diff --git a/target/classes/com/casic/controller/DeviceController.class b/target/classes/com/casic/controller/DeviceController.class
new file mode 100644
index 0000000..478d6ae
--- /dev/null
+++ b/target/classes/com/casic/controller/DeviceController.class
Binary files differ
diff --git a/target/classes/com/casic/controller/DeviceDataController.class b/target/classes/com/casic/controller/DeviceDataController.class
new file mode 100644
index 0000000..1f4400c
--- /dev/null
+++ b/target/classes/com/casic/controller/DeviceDataController.class
Binary files differ
diff --git a/target/classes/com/casic/dao/DataGasMapper.class b/target/classes/com/casic/dao/DataGasMapper.class
new file mode 100644
index 0000000..557d539
--- /dev/null
+++ b/target/classes/com/casic/dao/DataGasMapper.class
Binary files differ
diff --git a/target/classes/com/casic/dao/DeviceMapper.class b/target/classes/com/casic/dao/DeviceMapper.class
new file mode 100644
index 0000000..3ddcd2b
--- /dev/null
+++ b/target/classes/com/casic/dao/DeviceMapper.class
Binary files differ
diff --git a/target/classes/com/casic/dao/impl/DeviceDataMapper.class b/target/classes/com/casic/dao/impl/DeviceDataMapper.class
new file mode 100644
index 0000000..d73ed15
--- /dev/null
+++ b/target/classes/com/casic/dao/impl/DeviceDataMapper.class
Binary files differ
diff --git a/target/classes/com/casic/entity/DataGasReport.class b/target/classes/com/casic/entity/DataGasReport.class
new file mode 100644
index 0000000..a3dac78
--- /dev/null
+++ b/target/classes/com/casic/entity/DataGasReport.class
Binary files differ
diff --git a/target/classes/com/casic/model/DataReportParam.class b/target/classes/com/casic/model/DataReportParam.class
new file mode 100644
index 0000000..284c4f6
--- /dev/null
+++ b/target/classes/com/casic/model/DataReportParam.class
Binary files differ
diff --git a/target/classes/com/casic/model/DeviceOnlineParam.class b/target/classes/com/casic/model/DeviceOnlineParam.class
new file mode 100644
index 0000000..33c83e2
--- /dev/null
+++ b/target/classes/com/casic/model/DeviceOnlineParam.class
Binary files differ
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh
new file mode 100644
index 0000000..e14c4c7
--- /dev/null
+++ b/src/main/build/bin/start.sh
@@ -0,0 +1,2 @@
+java -jar ./lib/${project.build.finalName}.jar
+
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
index c55e37d..0887f1f 100644
--- a/src/main/java/com/casic/CasicApplication.java
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -3,8 +3,6 @@
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;
/**
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
index e5351c9..be0de6b 100644
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -1,14 +1,19 @@
package com.casic.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.casic.model.DataReportParam;
-import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
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;
+import java.util.Map;
+
+@Slf4j
@RequestMapping("/data")
@RestController
public class DeviceDataController {
@@ -19,19 +24,16 @@
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 String gasReceiver(@RequestBody Map map) {
+// log.info("---------"+JSON.toJSONString(map));
+// return "200";
+// }
@PostMapping("/gas/receiver")
- public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
- return dataService.heartBeatSave(heartbeatParam);
+ public ResponseData gasReceiver(@RequestBody DataReportParam dataReportParam) {
+ log.info("---------"+JSON.toJSONString(dataReportParam));
+ return dataService.gasReceiver(dataReportParam);
}
}
diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java
new file mode 100644
index 0000000..e5e9c8d
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmJobMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmJob;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface AlarmJobMapper extends BaseMapper {
+
+ @Select("SELECT MAX(jobcode) " +
+ "FROM alarm_job " +
+ "WHERE JOBCODE like '${jobcode}%'")
+ String getJobCodeMaxSerial(@Param("jobcode") String jobcode);
+
+}
diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
new file mode 100644
index 0000000..8da7dcb
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmRecords;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface AlarmRecordsMapper extends BaseMapper {
+
+
+ @Select("SELECT JOB_ID AS \"jobId\"\n " +
+ "FROM alarm_records\n " +
+ "WHERE DEVCODE = #{devcode}\n " +
+ "AND ALARM_CONTENT = #{MsgContent}\n " +
+ "AND STATUS='1'\n " +
+ "AND JOB_ID>0 ")
+ String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+
+ @Update(" UPDATE alarm_records\n" +
+ " SET STATUS='0'\n" +
+ " WHERE DEVCODE = #{devcode}\n" +
+ " AND ALARM_CONTENT = #{MsgContent}\n" +
+ " AND STATUS='1'")
+ Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
index 47e7cce..33ce14a 100644
--- a/src/main/java/com/casic/dao/DataGasMapper.java
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -1,9 +1,48 @@
package com.casic.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.casic.entity.DataGasReport;
+import com.casic.entity.DataGasDector;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+import java.util.Map;
@Mapper
-public interface DataGasMapper extends BaseMapper {
+public interface DataGasMapper extends BaseMapper {
+
+ @Select("select bd.id as \"deviceId\",bwi.WELL_CODE AS \"wellCode\" " +
+ "from bus_device_well bdw " +
+ "join (select id from bus_device where devcode=#{devcode}) bd ON bd.id=bdw.device_id " +
+ "join bus_well_info bwi ON bwi.id=bdw.well_id ")
+ Map getWellCode(@Param("devcode") String devcode);
+
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{onlineState} " +
+ "WHERE devcode=#{devcode} ")
+ void setOfflineByDevcode(@Param("devcode") String devcode,
+ @Param("onlineState") Integer onlineState);
+
+ @Select("SELECT level,high_value " +
+ "FROM alarm_level " +
+ "WHERE device_type=#{deviceType} ")
+ List> getAlarmLevelList(@Param("deviceType") Long deviceType);
+
+ @Select("SELECT devcode " +
+ "FROM data_gas_dector " +
+ "WHERE devcode=#{devcode} " +
+ "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+
+ "ORDER BY logtime DESC " +
+ "LIMIT 1")
+ String getLastData(@Param("minutes") String minutes,
+ @Param("devcode") String devcode);
+
+ @Select("SELECT alarm_content" +
+ "FROM BASE_alarm_content_type" +
+ "where device_type=#{deviceType}")
+ String getGasMsgContent(@Param("deviceType")Long deviceType);
+
+
}
diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
new file mode 100644
index 0000000..5131821
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
@@ -0,0 +1,59 @@
+package com.casic.dao.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmJobMapper;
+import com.casic.entity.AlarmJob;
+import org.springframework.stereotype.Component;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Component
+public class AlarmJobDao {
+
+ private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ private static Snowflake snowflake = new Snowflake(0, 2);
+// private static final Sn
+
+ @Resource
+ private AlarmJobMapper alarmJobMapper;
+
+ public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) {
+ AlarmJob alarmJob = new AlarmJob();
+ alarmJob.setId(snowflake.nextId());
+ alarmJob.setDevcode(devCode);
+ alarmJob.setWellCode(wellCode);
+ alarmJob.setJobStatus("0");
+ alarmJob.setCreateTime(new Date());
+ alarmJob.setJobcode(this.produceJobCode(devTypeName));
+ alarmJob.setJobType(jobType);
+ alarmJobMapper.insert(alarmJob);
+ return alarmJob;
+ }
+
+ /**
+ * 前缀+日期+4位流水号
+ *
+ * @param devTypeName
+ * @return
+ */
+ private String produceJobCode(String devTypeName) {
+ String pre = devTypeName;
+ String dataStr = sdf6.format(new Date());
+ String fix = this.getJobCodeMaxSerial(pre + dataStr);
+ return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001";
+ }
+
+
+ private String getJobCodeMaxSerial(String jobcode) {
+ String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode);
+ String fix = "";
+ if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) {
+ fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4);
+ }
+ return fix;
+ }
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
deleted file mode 100644
index c797e55..0000000
--- a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
+++ /dev/null
@@ -1,68 +0,0 @@
-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/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java
new file mode 100644
index 0000000..8a0f764
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmJob.java
@@ -0,0 +1,165 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 报警工单表
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_job")
+public class AlarmJob extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 工单编号
+ */
+ @TableField("JOBCODE")
+ private String jobcode;
+ /**
+ * 工单类型
+ */
+ @TableField("JOG_TYPE")
+ private String jobType;
+ /**
+ * 井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 工单创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+ /**
+ * 工单状态(0待处理,1待确认,2处理中,3完成)
+ */
+ @TableField("JOB_STATUS")
+ private String jobStatus;
+ /**
+ * 接单人员
+ */
+ @TableField("GET_JOB_PERSON")
+ private Long getJobPerson;
+ /**
+ * 接单时间
+ */
+ @TableField("GET_JOB_TIME")
+ private Date getJobTime;
+ /**
+ * 应接单时间
+ */
+ @TableField("SHOULD_GET_TIME")
+ private Date shouldGetTime;
+ /**
+ * 第一现场情况
+ */
+ @TableField("FIRST_STATE")
+ private String firstState;
+ /**
+ * 第一现场照片
+ */
+ @TableField("FIRST_STATE_PHOTOS")
+ private String firstStatePhotos;
+ /**
+ * 确认人员
+ */
+ @TableField("CONFIRM_JOB_PERSON")
+ private Long confirmJobPerson;
+ /**
+ * 确认时间
+ */
+ @TableField("CONFRIM_JOB_TIME")
+ private Date confrimJobTime;
+ /**
+ * 处理人员
+ */
+ @TableField("HANDLE_JOB_Person")
+ private Long handleJobPerson;
+ /**
+ * 处理时间
+ */
+ @TableField("HANDLE_JOB_TIME")
+ private Date handleJobTime;
+ /**
+ * 维护情况记录
+ */
+ @TableField("HANDLE_MESSAGE")
+ private String handleMessage;
+ /**
+ * 维护图片
+ */
+ @TableField("HANDLE_PHOTOS")
+ private String handlePhotos;
+ /**
+ * 工单流转记录
+ */
+ @TableField("FLOW")
+ private String flow;
+
+ @TableField("JOB_BELONG_TO")
+ private Long jobBelongTo;
+
+ @TableField("JOB_FLAG_DELAY")
+ private String jobFlagDelay;
+
+ @TableField("JOB_FLAG_1")
+ private String jobFlag1;
+
+ @TableField(exist = false)
+ private String alarmValue;
+
+ @TableField(exist = false)
+ private String alarmContentName;
+
+ @TableField(exist = false)
+ private Integer recordId;
+
+ @Override
+ public String toString() {
+ return "AlarmJob{" +
+ "id=" + id +
+ ", jobcode=" + jobcode +
+ ", jogType=" + jobType +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", createTime=" + createTime +
+ ", jobStatus=" + jobStatus +
+ ", getJobPerson=" + getJobPerson +
+ ", getJobTime=" + getJobTime +
+ ", firstState=" + firstState +
+ ", firstStatePhotos=" + firstStatePhotos +
+ ", confirmJobPerson=" + confirmJobPerson +
+ ", confrimJobTime=" + confrimJobTime +
+ ", handleJobPerson=" + handleJobPerson +
+ ", handleJobTime=" + handleJobTime +
+ ", handleMessage=" + handleMessage +
+ ", handlePhotos=" + handlePhotos +
+ ", flow=" + flow +
+ ", recordId=" + recordId +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java
new file mode 100644
index 0000000..88b0b26
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmRecords.java
@@ -0,0 +1,108 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ *
+ *
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_records")
+public class AlarmRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 设备ID
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 闸井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 告警类型
+ */
+ @TableField("ALARM_TYPE")
+ private String alarmType;
+ /**
+ * 告警内容
+ */
+ @TableField("ALARM_CONTENT")
+ private String alarmContent;
+ /**
+ * 告警数值
+ */
+ @TableField("ALARM_VALUE")
+ private String alarmValue;
+ /**
+ * 告警等级
+ */
+ @TableField("ALARM_LEVEL")
+ private Integer alarmLevel;
+ /**
+ * 告警详情
+ */
+ @TableField("ALARM_MSG")
+ private String alarmMessage;
+ /**
+ * 告警时间
+ */
+ @TableField("ALARM_TIME")
+ private Date alarmTime;
+ /**
+ * 告警状态
+ */
+ @TableField("STATUS")
+ private String status;
+ /**
+ * 工单编号
+ */
+ @TableField("JOB_ID")
+ private Long jobId;
+
+ @TableField(exist = false)
+ private Integer jobStatus;
+
+ @Override
+ public String toString() {
+ return "AlarmRecords{" +
+ "id=" + id +
+ ", deviceId=" + deviceId +
+ ", devcode=" + devcode +
+ ", wellCode=" + wellCode +
+ ", alarmType=" + alarmType +
+ ", alarmContent=" + alarmContent +
+ ", alarmValue=" + alarmValue +
+ ", alarmLevel=" + alarmLevel +
+ ", alarmMessage=" + alarmMessage +
+ ", alarmTime=" + alarmTime +
+ ", status=" + status +
+ ", jobId=" + jobId +
+ ", jobStatus=" + jobStatus +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/DataGasDector.java b/src/main/java/com/casic/entity/DataGasDector.java
new file mode 100644
index 0000000..537789a
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasDector.java
@@ -0,0 +1,42 @@
+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 DataGasDector {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ private String devcode;
+ private String wellCode;
+ private String strength;
+
+ private String descn;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
deleted file mode 100644
index c43ccdf..0000000
--- a/src/main/java/com/casic/entity/DataGasReport.java
+++ /dev/null
@@ -1,69 +0,0 @@
-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/entity/DeviceSatatus.java b/src/main/java/com/casic/entity/DeviceSatatus.java
new file mode 100644
index 0000000..bab7903
--- /dev/null
+++ b/src/main/java/com/casic/entity/DeviceSatatus.java
@@ -0,0 +1,19 @@
+package com.casic.entity;
+
+import lombok.Data;
+
+/**
+ * 不使用了
+ *
+ */
+@Data
+public class DeviceSatatus {
+ private String deviceId;
+ private String cell;
+ private String cellTs;
+ private String onlineState;
+ private String onlineTs;
+ private String lastDataId;
+ private String lastDataJson;
+ private String lastDataTs;
+}
diff --git a/src/main/java/com/casic/model/DataContentParam.java b/src/main/java/com/casic/model/DataContentParam.java
new file mode 100644
index 0000000..46d298a
--- /dev/null
+++ b/src/main/java/com/casic/model/DataContentParam.java
@@ -0,0 +1,19 @@
+package com.casic.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DataContentParam {
+ private String msg_type;
+ private String error_val;
+ private String ch_cnt;
+ private String erro_cnt;
+ private String alarm_low_cnt;
+ private String alarm_high_cnt;
+ private String offline_cnt;
+ private List rtd_val;
+ private List adc_val;
+ private List status_val;
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/model/DataReportParam.java b/src/main/java/com/casic/model/DataReportParam.java
index 082814c..754f330 100644
--- a/src/main/java/com/casic/model/DataReportParam.java
+++ b/src/main/java/com/casic/model/DataReportParam.java
@@ -11,25 +11,12 @@
*/
@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;
+ private String iotId;
+ private String requestId;
+ private Object checkFailedData;
+ private String productKey;
+ private String gmtCreate;
+ private String deviceName;
+ private Object items;
}
diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java
index d883fe4..457d710 100644
--- a/src/main/java/com/casic/service/DeviceDataService.java
+++ b/src/main/java/com/casic/service/DeviceDataService.java
@@ -3,25 +3,18 @@
import com.casic.model.DataReportParam;
import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
+import org.springframework.web.bind.annotation.RequestBody;
/**
* @author cz
* @date 2022
*/
public interface DeviceDataService {
-
/**
*
* @param dataReportParam
* @return
*/
- ResponseData DeviceDataCommit(DataReportParam dataReportParam);
-
- /**
- *
- * @param heartbeatParam
- * @return
- */
- ResponseData heartBeatSave(HeartbeatParam heartbeatParam);
+ ResponseData gasReceiver(DataReportParam dataReportParam);
}
diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
index 93f0685..e473f0c 100644
--- a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
+++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
@@ -1,58 +1,49 @@
package com.casic.service.impl;
-import com.casic.dao.impl.DeviceDataMapper;
+import com.alibaba.druid.util.StringUtils;
+import com.alibaba.fastjson.JSON;
import com.casic.model.*;
import com.casic.service.DeviceDataService;
+import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import java.util.Map;
+
/**
* @author cz
- * @date 2022-6-20
+ * @date 2022-9-26
*/
@Slf4j
@Service
public class DeviceDataServiceImpl implements DeviceDataService {
- @Autowired
- DeviceDataMapper deviceDataMapper;
+ private final NormalDataProcessor normalDataProcessor;
- /**
- * @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;
+ public DeviceDataServiceImpl(NormalDataProcessor normalDataProcessor) {
+ this.normalDataProcessor = normalDataProcessor;
}
- /**
- * @param heartbeatParam
- * @return
- */
- public ResponseData heartBeatSave(HeartbeatParam heartbeatParam) {
+ public ResponseData gasReceiver(DataReportParam dataReportParam) {
ResponseData responseData = new ResponseData();
try {
- deviceDataMapper.editDeviceData(heartbeatParam);
+ Map> updDataMap = new ObjectMapper().convertValue(dataReportParam.getItems(), Map.class);
+ DataContentParam dataContentParam = JSON.parseObject(updDataMap.get("updData").get("value"), DataContentParam.class);
+ Long uptime = Long.valueOf(String.valueOf(updDataMap.get("updData").get("time")));
+ if (StringUtils.isEmpty(dataReportParam.getDeviceName())) {
+ responseData.setCode(200);
+ responseData.setMessage("没有设备编号");
+ return responseData;
+ }
+ normalDataProcessor.normalDataProvider(dataContentParam, uptime, dataReportParam.getDeviceName());
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);
+ log.error("主题:设备数据上报出现错误,异常信息为{}", sqlex);
}
return responseData;
}
diff --git a/src/main/java/com/casic/service/impl/NormalDataProcessor.java b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
new file mode 100644
index 0000000..3f7630a
--- /dev/null
+++ b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
@@ -0,0 +1,164 @@
+package com.casic.service.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmRecordsMapper;
+import com.casic.dao.DataGasMapper;
+import com.casic.dao.impl.AlarmJobDao;
+import com.casic.entity.AlarmJob;
+import com.casic.entity.AlarmRecords;
+import com.casic.entity.DataGasDector;
+import com.casic.model.DataContentParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Component
+public class NormalDataProcessor {
+
+ public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ @Value("${casic.device.gas-dector.type}")
+ private Long deviceType;
+ @Value("${casic.device.gas-dector.minutes}")
+ private String minutes;
+ @Value("${casic.device.gas-dector.enable-local}")
+ private Boolean enableLocal;
+ @Resource
+ private DataGasMapper dataGasMapper;
+ @Autowired
+ private AlarmJobDao alarmJobDao;
+ @Resource
+ private AlarmRecordsMapper alarmRecordsMapper;
+ private static Snowflake snowflake = new Snowflake(0, 2);
+
+ public void normalDataProvider(DataContentParam dataReportParam, Long timeStamp, String devcode) {
+ Map gasMap = dataGasMapper.getWellCode(devcode);
+ if (ObjectUtils.isEmpty(gasMap)) {
+ log.info("没有该设备编号录入" + devcode);
+ if (enableLocal) {
+ return;
+ }
+ }
+ Boolean updateFlag = false;
+ if (ObjectUtils.isEmpty(dataGasMapper.getLastData(minutes, devcode))) {
+ updateFlag = this.saveNormalData(dataReportParam, timeStamp, devcode, gasMap);
+ }
+ this.dataTaskJudge(dataReportParam, devcode, timeStamp, gasMap, updateFlag);
+ return;
+ }
+
+ /**
+ * 自定义时间存库
+ *
+ * @param dataReportParam
+ * @param timeStamp
+ * @param devcode
+ * @param gasMap
+ */
+ private Boolean saveNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap) {
+ Boolean updateFlag = false;
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ List dataReportFilter = dataReportParam.getRtd_val().stream().filter(
+ data -> {
+ return data != -1;
+ }
+ ).collect(Collectors.toList());
+ if (dataReportFilter.size() > 0 && dataReportFilter.get(dataReportFilter.size() - 1) != 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 1);
+ updateFlag = true;
+ } else if (dataReportFilter.get(dataReportFilter.size() - 1) == 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 0);
+ }
+ dataReportFilter.forEach(
+ data -> {
+ if (data != 65535) {
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+ }
+ );
+ return updateFlag;
+ }
+
+ /**
+ * 报警就存库
+ *
+ * @param dataReportParam
+ * @param devcode
+ * @param timeStamp
+ * @param gasMap
+ */
+ private void dataTaskJudge(DataContentParam dataReportParam, String devcode, Long timeStamp, Map gasMap, Boolean updateFlag) {
+ List> alarmLevelList = dataGasMapper.getAlarmLevelList(deviceType);
+ String wellCode = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "";
+ Long deviceId = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? Long.valueOf(String.valueOf(gasMap.get("deviceId"))) : -1;
+ final String gasMsgContent=dataGasMapper.getGasMsgContent(deviceType);
+ dataReportParam.getRtd_val().stream().filter(
+ dataReport -> {
+ return dataReport != -1 && dataReport != 65535;
+ }
+ ).forEach(
+ dataReport -> {
+ for (Map alarmLevelMap : alarmLevelList) {
+ if (dataReport > Float.valueOf(String.valueOf(alarmLevelMap.get("high_value")))) {
+ AlarmRecords alarmRecord = new AlarmRecords();
+ alarmRecord.setId(snowflake.nextId());
+ alarmRecord.setDeviceId(deviceId);
+ alarmRecord.setDevcode(devcode);
+ alarmRecord.setWellCode(wellCode);
+ alarmRecord.setAlarmType("1"); // 业务报警
+ alarmRecord.setAlarmContent("燃气报警");
+ alarmRecord.setAlarmValue(String.valueOf(dataReport));
+ alarmRecord.setAlarmTime(new Date());
+ alarmRecord.setStatus("1");
+ alarmRecord.setAlarmLevel(Integer.valueOf(alarmLevelMap.get("level").toString()));
+ alarmRecord.setAlarmMessage("燃气报警");
+ String jobId = alarmRecordsMapper.isOldAlarmRecord(devcode, "燃气报警");
+ // 超出报警阈值 生成一条报警消息
+ if (!StringUtils.isEmpty(jobId)) {
+ alarmRecordsMapper.updateOldAlarmRecord(devcode, "燃气报警");
+ alarmRecord.setJobId(Long.valueOf(jobId));
+ } else {
+ AlarmJob alarmJob = alarmJobDao.saveData(devcode, wellCode, "RQZD", "1");
+ alarmRecord.setJobId(alarmJob.getId());
+ }
+ alarmRecordsMapper.insert(alarmRecord);
+ if (!updateFlag) {
+ alarmNormalData(dataReportParam, timeStamp, devcode, gasMap, dataReport);
+ }
+ break;
+ }
+ }
+ }
+ );
+ }
+
+ private void alarmNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap, Integer data) {
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+
+}
+
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index fac2afe..f8a06a6 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -1,40 +1,19 @@
server:
- port: 11556
+ port: 11320
################### 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
+ driver-class-name: org.postgresql.Driver
+ url: jdbc:postgresql://111.198.10.15:11209/smartwell_zq_cs
+ 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
- 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
+ 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
index 86411e6..ffc01e9 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -19,18 +19,11 @@
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
+ device:
+ gas-dector:
+ type: 101
+ minutes: 60
+ enable-local: false
+# type 可燃气体的设备类型
+# minutes: 燃气外协设备上传数据的分钟数
\ No newline at end of file
diff --git a/target/classes/application-dev.yml b/target/classes/application-dev.yml
new file mode 100644
index 0000000..fac2afe
--- /dev/null
+++ b/target/classes/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/target/classes/application-postgre.yml b/target/classes/application-postgre.yml
new file mode 100644
index 0000000..2b7f69c
--- /dev/null
+++ b/target/classes/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/target/classes/application.yml b/target/classes/application.yml
new file mode 100644
index 0000000..86411e6
--- /dev/null
+++ b/target/classes/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
diff --git a/target/classes/com/casic/CasicApplication.class b/target/classes/com/casic/CasicApplication.class
new file mode 100644
index 0000000..68c2f95
--- /dev/null
+++ b/target/classes/com/casic/CasicApplication.class
Binary files differ
diff --git a/target/classes/com/casic/controller/DeviceController.class b/target/classes/com/casic/controller/DeviceController.class
new file mode 100644
index 0000000..478d6ae
--- /dev/null
+++ b/target/classes/com/casic/controller/DeviceController.class
Binary files differ
diff --git a/target/classes/com/casic/controller/DeviceDataController.class b/target/classes/com/casic/controller/DeviceDataController.class
new file mode 100644
index 0000000..1f4400c
--- /dev/null
+++ b/target/classes/com/casic/controller/DeviceDataController.class
Binary files differ
diff --git a/target/classes/com/casic/dao/DataGasMapper.class b/target/classes/com/casic/dao/DataGasMapper.class
new file mode 100644
index 0000000..557d539
--- /dev/null
+++ b/target/classes/com/casic/dao/DataGasMapper.class
Binary files differ
diff --git a/target/classes/com/casic/dao/DeviceMapper.class b/target/classes/com/casic/dao/DeviceMapper.class
new file mode 100644
index 0000000..3ddcd2b
--- /dev/null
+++ b/target/classes/com/casic/dao/DeviceMapper.class
Binary files differ
diff --git a/target/classes/com/casic/dao/impl/DeviceDataMapper.class b/target/classes/com/casic/dao/impl/DeviceDataMapper.class
new file mode 100644
index 0000000..d73ed15
--- /dev/null
+++ b/target/classes/com/casic/dao/impl/DeviceDataMapper.class
Binary files differ
diff --git a/target/classes/com/casic/entity/DataGasReport.class b/target/classes/com/casic/entity/DataGasReport.class
new file mode 100644
index 0000000..a3dac78
--- /dev/null
+++ b/target/classes/com/casic/entity/DataGasReport.class
Binary files differ
diff --git a/target/classes/com/casic/model/DataReportParam.class b/target/classes/com/casic/model/DataReportParam.class
new file mode 100644
index 0000000..284c4f6
--- /dev/null
+++ b/target/classes/com/casic/model/DataReportParam.class
Binary files differ
diff --git a/target/classes/com/casic/model/DeviceOnlineParam.class b/target/classes/com/casic/model/DeviceOnlineParam.class
new file mode 100644
index 0000000..33c83e2
--- /dev/null
+++ b/target/classes/com/casic/model/DeviceOnlineParam.class
Binary files differ
diff --git a/target/classes/com/casic/model/HeartbeatParam.class b/target/classes/com/casic/model/HeartbeatParam.class
new file mode 100644
index 0000000..d6d6651
--- /dev/null
+++ b/target/classes/com/casic/model/HeartbeatParam.class
Binary files differ
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh
new file mode 100644
index 0000000..e14c4c7
--- /dev/null
+++ b/src/main/build/bin/start.sh
@@ -0,0 +1,2 @@
+java -jar ./lib/${project.build.finalName}.jar
+
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
index c55e37d..0887f1f 100644
--- a/src/main/java/com/casic/CasicApplication.java
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -3,8 +3,6 @@
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;
/**
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
index e5351c9..be0de6b 100644
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -1,14 +1,19 @@
package com.casic.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.casic.model.DataReportParam;
-import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
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;
+import java.util.Map;
+
+@Slf4j
@RequestMapping("/data")
@RestController
public class DeviceDataController {
@@ -19,19 +24,16 @@
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 String gasReceiver(@RequestBody Map map) {
+// log.info("---------"+JSON.toJSONString(map));
+// return "200";
+// }
@PostMapping("/gas/receiver")
- public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
- return dataService.heartBeatSave(heartbeatParam);
+ public ResponseData gasReceiver(@RequestBody DataReportParam dataReportParam) {
+ log.info("---------"+JSON.toJSONString(dataReportParam));
+ return dataService.gasReceiver(dataReportParam);
}
}
diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java
new file mode 100644
index 0000000..e5e9c8d
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmJobMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmJob;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface AlarmJobMapper extends BaseMapper {
+
+ @Select("SELECT MAX(jobcode) " +
+ "FROM alarm_job " +
+ "WHERE JOBCODE like '${jobcode}%'")
+ String getJobCodeMaxSerial(@Param("jobcode") String jobcode);
+
+}
diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
new file mode 100644
index 0000000..8da7dcb
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmRecords;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface AlarmRecordsMapper extends BaseMapper {
+
+
+ @Select("SELECT JOB_ID AS \"jobId\"\n " +
+ "FROM alarm_records\n " +
+ "WHERE DEVCODE = #{devcode}\n " +
+ "AND ALARM_CONTENT = #{MsgContent}\n " +
+ "AND STATUS='1'\n " +
+ "AND JOB_ID>0 ")
+ String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+
+ @Update(" UPDATE alarm_records\n" +
+ " SET STATUS='0'\n" +
+ " WHERE DEVCODE = #{devcode}\n" +
+ " AND ALARM_CONTENT = #{MsgContent}\n" +
+ " AND STATUS='1'")
+ Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
index 47e7cce..33ce14a 100644
--- a/src/main/java/com/casic/dao/DataGasMapper.java
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -1,9 +1,48 @@
package com.casic.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.casic.entity.DataGasReport;
+import com.casic.entity.DataGasDector;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+import java.util.Map;
@Mapper
-public interface DataGasMapper extends BaseMapper {
+public interface DataGasMapper extends BaseMapper {
+
+ @Select("select bd.id as \"deviceId\",bwi.WELL_CODE AS \"wellCode\" " +
+ "from bus_device_well bdw " +
+ "join (select id from bus_device where devcode=#{devcode}) bd ON bd.id=bdw.device_id " +
+ "join bus_well_info bwi ON bwi.id=bdw.well_id ")
+ Map getWellCode(@Param("devcode") String devcode);
+
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{onlineState} " +
+ "WHERE devcode=#{devcode} ")
+ void setOfflineByDevcode(@Param("devcode") String devcode,
+ @Param("onlineState") Integer onlineState);
+
+ @Select("SELECT level,high_value " +
+ "FROM alarm_level " +
+ "WHERE device_type=#{deviceType} ")
+ List> getAlarmLevelList(@Param("deviceType") Long deviceType);
+
+ @Select("SELECT devcode " +
+ "FROM data_gas_dector " +
+ "WHERE devcode=#{devcode} " +
+ "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+
+ "ORDER BY logtime DESC " +
+ "LIMIT 1")
+ String getLastData(@Param("minutes") String minutes,
+ @Param("devcode") String devcode);
+
+ @Select("SELECT alarm_content" +
+ "FROM BASE_alarm_content_type" +
+ "where device_type=#{deviceType}")
+ String getGasMsgContent(@Param("deviceType")Long deviceType);
+
+
}
diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
new file mode 100644
index 0000000..5131821
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
@@ -0,0 +1,59 @@
+package com.casic.dao.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmJobMapper;
+import com.casic.entity.AlarmJob;
+import org.springframework.stereotype.Component;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Component
+public class AlarmJobDao {
+
+ private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ private static Snowflake snowflake = new Snowflake(0, 2);
+// private static final Sn
+
+ @Resource
+ private AlarmJobMapper alarmJobMapper;
+
+ public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) {
+ AlarmJob alarmJob = new AlarmJob();
+ alarmJob.setId(snowflake.nextId());
+ alarmJob.setDevcode(devCode);
+ alarmJob.setWellCode(wellCode);
+ alarmJob.setJobStatus("0");
+ alarmJob.setCreateTime(new Date());
+ alarmJob.setJobcode(this.produceJobCode(devTypeName));
+ alarmJob.setJobType(jobType);
+ alarmJobMapper.insert(alarmJob);
+ return alarmJob;
+ }
+
+ /**
+ * 前缀+日期+4位流水号
+ *
+ * @param devTypeName
+ * @return
+ */
+ private String produceJobCode(String devTypeName) {
+ String pre = devTypeName;
+ String dataStr = sdf6.format(new Date());
+ String fix = this.getJobCodeMaxSerial(pre + dataStr);
+ return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001";
+ }
+
+
+ private String getJobCodeMaxSerial(String jobcode) {
+ String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode);
+ String fix = "";
+ if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) {
+ fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4);
+ }
+ return fix;
+ }
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
deleted file mode 100644
index c797e55..0000000
--- a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
+++ /dev/null
@@ -1,68 +0,0 @@
-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/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java
new file mode 100644
index 0000000..8a0f764
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmJob.java
@@ -0,0 +1,165 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 报警工单表
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_job")
+public class AlarmJob extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 工单编号
+ */
+ @TableField("JOBCODE")
+ private String jobcode;
+ /**
+ * 工单类型
+ */
+ @TableField("JOG_TYPE")
+ private String jobType;
+ /**
+ * 井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 工单创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+ /**
+ * 工单状态(0待处理,1待确认,2处理中,3完成)
+ */
+ @TableField("JOB_STATUS")
+ private String jobStatus;
+ /**
+ * 接单人员
+ */
+ @TableField("GET_JOB_PERSON")
+ private Long getJobPerson;
+ /**
+ * 接单时间
+ */
+ @TableField("GET_JOB_TIME")
+ private Date getJobTime;
+ /**
+ * 应接单时间
+ */
+ @TableField("SHOULD_GET_TIME")
+ private Date shouldGetTime;
+ /**
+ * 第一现场情况
+ */
+ @TableField("FIRST_STATE")
+ private String firstState;
+ /**
+ * 第一现场照片
+ */
+ @TableField("FIRST_STATE_PHOTOS")
+ private String firstStatePhotos;
+ /**
+ * 确认人员
+ */
+ @TableField("CONFIRM_JOB_PERSON")
+ private Long confirmJobPerson;
+ /**
+ * 确认时间
+ */
+ @TableField("CONFRIM_JOB_TIME")
+ private Date confrimJobTime;
+ /**
+ * 处理人员
+ */
+ @TableField("HANDLE_JOB_Person")
+ private Long handleJobPerson;
+ /**
+ * 处理时间
+ */
+ @TableField("HANDLE_JOB_TIME")
+ private Date handleJobTime;
+ /**
+ * 维护情况记录
+ */
+ @TableField("HANDLE_MESSAGE")
+ private String handleMessage;
+ /**
+ * 维护图片
+ */
+ @TableField("HANDLE_PHOTOS")
+ private String handlePhotos;
+ /**
+ * 工单流转记录
+ */
+ @TableField("FLOW")
+ private String flow;
+
+ @TableField("JOB_BELONG_TO")
+ private Long jobBelongTo;
+
+ @TableField("JOB_FLAG_DELAY")
+ private String jobFlagDelay;
+
+ @TableField("JOB_FLAG_1")
+ private String jobFlag1;
+
+ @TableField(exist = false)
+ private String alarmValue;
+
+ @TableField(exist = false)
+ private String alarmContentName;
+
+ @TableField(exist = false)
+ private Integer recordId;
+
+ @Override
+ public String toString() {
+ return "AlarmJob{" +
+ "id=" + id +
+ ", jobcode=" + jobcode +
+ ", jogType=" + jobType +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", createTime=" + createTime +
+ ", jobStatus=" + jobStatus +
+ ", getJobPerson=" + getJobPerson +
+ ", getJobTime=" + getJobTime +
+ ", firstState=" + firstState +
+ ", firstStatePhotos=" + firstStatePhotos +
+ ", confirmJobPerson=" + confirmJobPerson +
+ ", confrimJobTime=" + confrimJobTime +
+ ", handleJobPerson=" + handleJobPerson +
+ ", handleJobTime=" + handleJobTime +
+ ", handleMessage=" + handleMessage +
+ ", handlePhotos=" + handlePhotos +
+ ", flow=" + flow +
+ ", recordId=" + recordId +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java
new file mode 100644
index 0000000..88b0b26
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmRecords.java
@@ -0,0 +1,108 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ *
+ *
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_records")
+public class AlarmRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 设备ID
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 闸井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 告警类型
+ */
+ @TableField("ALARM_TYPE")
+ private String alarmType;
+ /**
+ * 告警内容
+ */
+ @TableField("ALARM_CONTENT")
+ private String alarmContent;
+ /**
+ * 告警数值
+ */
+ @TableField("ALARM_VALUE")
+ private String alarmValue;
+ /**
+ * 告警等级
+ */
+ @TableField("ALARM_LEVEL")
+ private Integer alarmLevel;
+ /**
+ * 告警详情
+ */
+ @TableField("ALARM_MSG")
+ private String alarmMessage;
+ /**
+ * 告警时间
+ */
+ @TableField("ALARM_TIME")
+ private Date alarmTime;
+ /**
+ * 告警状态
+ */
+ @TableField("STATUS")
+ private String status;
+ /**
+ * 工单编号
+ */
+ @TableField("JOB_ID")
+ private Long jobId;
+
+ @TableField(exist = false)
+ private Integer jobStatus;
+
+ @Override
+ public String toString() {
+ return "AlarmRecords{" +
+ "id=" + id +
+ ", deviceId=" + deviceId +
+ ", devcode=" + devcode +
+ ", wellCode=" + wellCode +
+ ", alarmType=" + alarmType +
+ ", alarmContent=" + alarmContent +
+ ", alarmValue=" + alarmValue +
+ ", alarmLevel=" + alarmLevel +
+ ", alarmMessage=" + alarmMessage +
+ ", alarmTime=" + alarmTime +
+ ", status=" + status +
+ ", jobId=" + jobId +
+ ", jobStatus=" + jobStatus +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/DataGasDector.java b/src/main/java/com/casic/entity/DataGasDector.java
new file mode 100644
index 0000000..537789a
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasDector.java
@@ -0,0 +1,42 @@
+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 DataGasDector {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ private String devcode;
+ private String wellCode;
+ private String strength;
+
+ private String descn;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
deleted file mode 100644
index c43ccdf..0000000
--- a/src/main/java/com/casic/entity/DataGasReport.java
+++ /dev/null
@@ -1,69 +0,0 @@
-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/entity/DeviceSatatus.java b/src/main/java/com/casic/entity/DeviceSatatus.java
new file mode 100644
index 0000000..bab7903
--- /dev/null
+++ b/src/main/java/com/casic/entity/DeviceSatatus.java
@@ -0,0 +1,19 @@
+package com.casic.entity;
+
+import lombok.Data;
+
+/**
+ * 不使用了
+ *
+ */
+@Data
+public class DeviceSatatus {
+ private String deviceId;
+ private String cell;
+ private String cellTs;
+ private String onlineState;
+ private String onlineTs;
+ private String lastDataId;
+ private String lastDataJson;
+ private String lastDataTs;
+}
diff --git a/src/main/java/com/casic/model/DataContentParam.java b/src/main/java/com/casic/model/DataContentParam.java
new file mode 100644
index 0000000..46d298a
--- /dev/null
+++ b/src/main/java/com/casic/model/DataContentParam.java
@@ -0,0 +1,19 @@
+package com.casic.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DataContentParam {
+ private String msg_type;
+ private String error_val;
+ private String ch_cnt;
+ private String erro_cnt;
+ private String alarm_low_cnt;
+ private String alarm_high_cnt;
+ private String offline_cnt;
+ private List rtd_val;
+ private List adc_val;
+ private List status_val;
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/model/DataReportParam.java b/src/main/java/com/casic/model/DataReportParam.java
index 082814c..754f330 100644
--- a/src/main/java/com/casic/model/DataReportParam.java
+++ b/src/main/java/com/casic/model/DataReportParam.java
@@ -11,25 +11,12 @@
*/
@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;
+ private String iotId;
+ private String requestId;
+ private Object checkFailedData;
+ private String productKey;
+ private String gmtCreate;
+ private String deviceName;
+ private Object items;
}
diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java
index d883fe4..457d710 100644
--- a/src/main/java/com/casic/service/DeviceDataService.java
+++ b/src/main/java/com/casic/service/DeviceDataService.java
@@ -3,25 +3,18 @@
import com.casic.model.DataReportParam;
import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
+import org.springframework.web.bind.annotation.RequestBody;
/**
* @author cz
* @date 2022
*/
public interface DeviceDataService {
-
/**
*
* @param dataReportParam
* @return
*/
- ResponseData DeviceDataCommit(DataReportParam dataReportParam);
-
- /**
- *
- * @param heartbeatParam
- * @return
- */
- ResponseData heartBeatSave(HeartbeatParam heartbeatParam);
+ ResponseData gasReceiver(DataReportParam dataReportParam);
}
diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
index 93f0685..e473f0c 100644
--- a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
+++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
@@ -1,58 +1,49 @@
package com.casic.service.impl;
-import com.casic.dao.impl.DeviceDataMapper;
+import com.alibaba.druid.util.StringUtils;
+import com.alibaba.fastjson.JSON;
import com.casic.model.*;
import com.casic.service.DeviceDataService;
+import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import java.util.Map;
+
/**
* @author cz
- * @date 2022-6-20
+ * @date 2022-9-26
*/
@Slf4j
@Service
public class DeviceDataServiceImpl implements DeviceDataService {
- @Autowired
- DeviceDataMapper deviceDataMapper;
+ private final NormalDataProcessor normalDataProcessor;
- /**
- * @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;
+ public DeviceDataServiceImpl(NormalDataProcessor normalDataProcessor) {
+ this.normalDataProcessor = normalDataProcessor;
}
- /**
- * @param heartbeatParam
- * @return
- */
- public ResponseData heartBeatSave(HeartbeatParam heartbeatParam) {
+ public ResponseData gasReceiver(DataReportParam dataReportParam) {
ResponseData responseData = new ResponseData();
try {
- deviceDataMapper.editDeviceData(heartbeatParam);
+ Map> updDataMap = new ObjectMapper().convertValue(dataReportParam.getItems(), Map.class);
+ DataContentParam dataContentParam = JSON.parseObject(updDataMap.get("updData").get("value"), DataContentParam.class);
+ Long uptime = Long.valueOf(String.valueOf(updDataMap.get("updData").get("time")));
+ if (StringUtils.isEmpty(dataReportParam.getDeviceName())) {
+ responseData.setCode(200);
+ responseData.setMessage("没有设备编号");
+ return responseData;
+ }
+ normalDataProcessor.normalDataProvider(dataContentParam, uptime, dataReportParam.getDeviceName());
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);
+ log.error("主题:设备数据上报出现错误,异常信息为{}", sqlex);
}
return responseData;
}
diff --git a/src/main/java/com/casic/service/impl/NormalDataProcessor.java b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
new file mode 100644
index 0000000..3f7630a
--- /dev/null
+++ b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
@@ -0,0 +1,164 @@
+package com.casic.service.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmRecordsMapper;
+import com.casic.dao.DataGasMapper;
+import com.casic.dao.impl.AlarmJobDao;
+import com.casic.entity.AlarmJob;
+import com.casic.entity.AlarmRecords;
+import com.casic.entity.DataGasDector;
+import com.casic.model.DataContentParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Component
+public class NormalDataProcessor {
+
+ public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ @Value("${casic.device.gas-dector.type}")
+ private Long deviceType;
+ @Value("${casic.device.gas-dector.minutes}")
+ private String minutes;
+ @Value("${casic.device.gas-dector.enable-local}")
+ private Boolean enableLocal;
+ @Resource
+ private DataGasMapper dataGasMapper;
+ @Autowired
+ private AlarmJobDao alarmJobDao;
+ @Resource
+ private AlarmRecordsMapper alarmRecordsMapper;
+ private static Snowflake snowflake = new Snowflake(0, 2);
+
+ public void normalDataProvider(DataContentParam dataReportParam, Long timeStamp, String devcode) {
+ Map gasMap = dataGasMapper.getWellCode(devcode);
+ if (ObjectUtils.isEmpty(gasMap)) {
+ log.info("没有该设备编号录入" + devcode);
+ if (enableLocal) {
+ return;
+ }
+ }
+ Boolean updateFlag = false;
+ if (ObjectUtils.isEmpty(dataGasMapper.getLastData(minutes, devcode))) {
+ updateFlag = this.saveNormalData(dataReportParam, timeStamp, devcode, gasMap);
+ }
+ this.dataTaskJudge(dataReportParam, devcode, timeStamp, gasMap, updateFlag);
+ return;
+ }
+
+ /**
+ * 自定义时间存库
+ *
+ * @param dataReportParam
+ * @param timeStamp
+ * @param devcode
+ * @param gasMap
+ */
+ private Boolean saveNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap) {
+ Boolean updateFlag = false;
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ List dataReportFilter = dataReportParam.getRtd_val().stream().filter(
+ data -> {
+ return data != -1;
+ }
+ ).collect(Collectors.toList());
+ if (dataReportFilter.size() > 0 && dataReportFilter.get(dataReportFilter.size() - 1) != 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 1);
+ updateFlag = true;
+ } else if (dataReportFilter.get(dataReportFilter.size() - 1) == 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 0);
+ }
+ dataReportFilter.forEach(
+ data -> {
+ if (data != 65535) {
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+ }
+ );
+ return updateFlag;
+ }
+
+ /**
+ * 报警就存库
+ *
+ * @param dataReportParam
+ * @param devcode
+ * @param timeStamp
+ * @param gasMap
+ */
+ private void dataTaskJudge(DataContentParam dataReportParam, String devcode, Long timeStamp, Map gasMap, Boolean updateFlag) {
+ List> alarmLevelList = dataGasMapper.getAlarmLevelList(deviceType);
+ String wellCode = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "";
+ Long deviceId = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? Long.valueOf(String.valueOf(gasMap.get("deviceId"))) : -1;
+ final String gasMsgContent=dataGasMapper.getGasMsgContent(deviceType);
+ dataReportParam.getRtd_val().stream().filter(
+ dataReport -> {
+ return dataReport != -1 && dataReport != 65535;
+ }
+ ).forEach(
+ dataReport -> {
+ for (Map alarmLevelMap : alarmLevelList) {
+ if (dataReport > Float.valueOf(String.valueOf(alarmLevelMap.get("high_value")))) {
+ AlarmRecords alarmRecord = new AlarmRecords();
+ alarmRecord.setId(snowflake.nextId());
+ alarmRecord.setDeviceId(deviceId);
+ alarmRecord.setDevcode(devcode);
+ alarmRecord.setWellCode(wellCode);
+ alarmRecord.setAlarmType("1"); // 业务报警
+ alarmRecord.setAlarmContent("燃气报警");
+ alarmRecord.setAlarmValue(String.valueOf(dataReport));
+ alarmRecord.setAlarmTime(new Date());
+ alarmRecord.setStatus("1");
+ alarmRecord.setAlarmLevel(Integer.valueOf(alarmLevelMap.get("level").toString()));
+ alarmRecord.setAlarmMessage("燃气报警");
+ String jobId = alarmRecordsMapper.isOldAlarmRecord(devcode, "燃气报警");
+ // 超出报警阈值 生成一条报警消息
+ if (!StringUtils.isEmpty(jobId)) {
+ alarmRecordsMapper.updateOldAlarmRecord(devcode, "燃气报警");
+ alarmRecord.setJobId(Long.valueOf(jobId));
+ } else {
+ AlarmJob alarmJob = alarmJobDao.saveData(devcode, wellCode, "RQZD", "1");
+ alarmRecord.setJobId(alarmJob.getId());
+ }
+ alarmRecordsMapper.insert(alarmRecord);
+ if (!updateFlag) {
+ alarmNormalData(dataReportParam, timeStamp, devcode, gasMap, dataReport);
+ }
+ break;
+ }
+ }
+ }
+ );
+ }
+
+ private void alarmNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap, Integer data) {
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+
+}
+
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index fac2afe..f8a06a6 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -1,40 +1,19 @@
server:
- port: 11556
+ port: 11320
################### 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
+ driver-class-name: org.postgresql.Driver
+ url: jdbc:postgresql://111.198.10.15:11209/smartwell_zq_cs
+ 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
- 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
+ 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
index 86411e6..ffc01e9 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -19,18 +19,11 @@
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
+ device:
+ gas-dector:
+ type: 101
+ minutes: 60
+ enable-local: false
+# type 可燃气体的设备类型
+# minutes: 燃气外协设备上传数据的分钟数
\ No newline at end of file
diff --git a/target/classes/application-dev.yml b/target/classes/application-dev.yml
new file mode 100644
index 0000000..fac2afe
--- /dev/null
+++ b/target/classes/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/target/classes/application-postgre.yml b/target/classes/application-postgre.yml
new file mode 100644
index 0000000..2b7f69c
--- /dev/null
+++ b/target/classes/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/target/classes/application.yml b/target/classes/application.yml
new file mode 100644
index 0000000..86411e6
--- /dev/null
+++ b/target/classes/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
diff --git a/target/classes/com/casic/CasicApplication.class b/target/classes/com/casic/CasicApplication.class
new file mode 100644
index 0000000..68c2f95
--- /dev/null
+++ b/target/classes/com/casic/CasicApplication.class
Binary files differ
diff --git a/target/classes/com/casic/controller/DeviceController.class b/target/classes/com/casic/controller/DeviceController.class
new file mode 100644
index 0000000..478d6ae
--- /dev/null
+++ b/target/classes/com/casic/controller/DeviceController.class
Binary files differ
diff --git a/target/classes/com/casic/controller/DeviceDataController.class b/target/classes/com/casic/controller/DeviceDataController.class
new file mode 100644
index 0000000..1f4400c
--- /dev/null
+++ b/target/classes/com/casic/controller/DeviceDataController.class
Binary files differ
diff --git a/target/classes/com/casic/dao/DataGasMapper.class b/target/classes/com/casic/dao/DataGasMapper.class
new file mode 100644
index 0000000..557d539
--- /dev/null
+++ b/target/classes/com/casic/dao/DataGasMapper.class
Binary files differ
diff --git a/target/classes/com/casic/dao/DeviceMapper.class b/target/classes/com/casic/dao/DeviceMapper.class
new file mode 100644
index 0000000..3ddcd2b
--- /dev/null
+++ b/target/classes/com/casic/dao/DeviceMapper.class
Binary files differ
diff --git a/target/classes/com/casic/dao/impl/DeviceDataMapper.class b/target/classes/com/casic/dao/impl/DeviceDataMapper.class
new file mode 100644
index 0000000..d73ed15
--- /dev/null
+++ b/target/classes/com/casic/dao/impl/DeviceDataMapper.class
Binary files differ
diff --git a/target/classes/com/casic/entity/DataGasReport.class b/target/classes/com/casic/entity/DataGasReport.class
new file mode 100644
index 0000000..a3dac78
--- /dev/null
+++ b/target/classes/com/casic/entity/DataGasReport.class
Binary files differ
diff --git a/target/classes/com/casic/model/DataReportParam.class b/target/classes/com/casic/model/DataReportParam.class
new file mode 100644
index 0000000..284c4f6
--- /dev/null
+++ b/target/classes/com/casic/model/DataReportParam.class
Binary files differ
diff --git a/target/classes/com/casic/model/DeviceOnlineParam.class b/target/classes/com/casic/model/DeviceOnlineParam.class
new file mode 100644
index 0000000..33c83e2
--- /dev/null
+++ b/target/classes/com/casic/model/DeviceOnlineParam.class
Binary files differ
diff --git a/target/classes/com/casic/model/HeartbeatParam.class b/target/classes/com/casic/model/HeartbeatParam.class
new file mode 100644
index 0000000..d6d6651
--- /dev/null
+++ b/target/classes/com/casic/model/HeartbeatParam.class
Binary files differ
diff --git a/target/classes/com/casic/model/ResponseData.class b/target/classes/com/casic/model/ResponseData.class
new file mode 100644
index 0000000..9d5cab1
--- /dev/null
+++ b/target/classes/com/casic/model/ResponseData.class
Binary files differ
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh
new file mode 100644
index 0000000..e14c4c7
--- /dev/null
+++ b/src/main/build/bin/start.sh
@@ -0,0 +1,2 @@
+java -jar ./lib/${project.build.finalName}.jar
+
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
index c55e37d..0887f1f 100644
--- a/src/main/java/com/casic/CasicApplication.java
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -3,8 +3,6 @@
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;
/**
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
index e5351c9..be0de6b 100644
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -1,14 +1,19 @@
package com.casic.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.casic.model.DataReportParam;
-import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
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;
+import java.util.Map;
+
+@Slf4j
@RequestMapping("/data")
@RestController
public class DeviceDataController {
@@ -19,19 +24,16 @@
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 String gasReceiver(@RequestBody Map map) {
+// log.info("---------"+JSON.toJSONString(map));
+// return "200";
+// }
@PostMapping("/gas/receiver")
- public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
- return dataService.heartBeatSave(heartbeatParam);
+ public ResponseData gasReceiver(@RequestBody DataReportParam dataReportParam) {
+ log.info("---------"+JSON.toJSONString(dataReportParam));
+ return dataService.gasReceiver(dataReportParam);
}
}
diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java
new file mode 100644
index 0000000..e5e9c8d
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmJobMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmJob;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface AlarmJobMapper extends BaseMapper {
+
+ @Select("SELECT MAX(jobcode) " +
+ "FROM alarm_job " +
+ "WHERE JOBCODE like '${jobcode}%'")
+ String getJobCodeMaxSerial(@Param("jobcode") String jobcode);
+
+}
diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
new file mode 100644
index 0000000..8da7dcb
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmRecords;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface AlarmRecordsMapper extends BaseMapper {
+
+
+ @Select("SELECT JOB_ID AS \"jobId\"\n " +
+ "FROM alarm_records\n " +
+ "WHERE DEVCODE = #{devcode}\n " +
+ "AND ALARM_CONTENT = #{MsgContent}\n " +
+ "AND STATUS='1'\n " +
+ "AND JOB_ID>0 ")
+ String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+
+ @Update(" UPDATE alarm_records\n" +
+ " SET STATUS='0'\n" +
+ " WHERE DEVCODE = #{devcode}\n" +
+ " AND ALARM_CONTENT = #{MsgContent}\n" +
+ " AND STATUS='1'")
+ Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
index 47e7cce..33ce14a 100644
--- a/src/main/java/com/casic/dao/DataGasMapper.java
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -1,9 +1,48 @@
package com.casic.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.casic.entity.DataGasReport;
+import com.casic.entity.DataGasDector;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+import java.util.Map;
@Mapper
-public interface DataGasMapper extends BaseMapper {
+public interface DataGasMapper extends BaseMapper {
+
+ @Select("select bd.id as \"deviceId\",bwi.WELL_CODE AS \"wellCode\" " +
+ "from bus_device_well bdw " +
+ "join (select id from bus_device where devcode=#{devcode}) bd ON bd.id=bdw.device_id " +
+ "join bus_well_info bwi ON bwi.id=bdw.well_id ")
+ Map getWellCode(@Param("devcode") String devcode);
+
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{onlineState} " +
+ "WHERE devcode=#{devcode} ")
+ void setOfflineByDevcode(@Param("devcode") String devcode,
+ @Param("onlineState") Integer onlineState);
+
+ @Select("SELECT level,high_value " +
+ "FROM alarm_level " +
+ "WHERE device_type=#{deviceType} ")
+ List> getAlarmLevelList(@Param("deviceType") Long deviceType);
+
+ @Select("SELECT devcode " +
+ "FROM data_gas_dector " +
+ "WHERE devcode=#{devcode} " +
+ "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+
+ "ORDER BY logtime DESC " +
+ "LIMIT 1")
+ String getLastData(@Param("minutes") String minutes,
+ @Param("devcode") String devcode);
+
+ @Select("SELECT alarm_content" +
+ "FROM BASE_alarm_content_type" +
+ "where device_type=#{deviceType}")
+ String getGasMsgContent(@Param("deviceType")Long deviceType);
+
+
}
diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
new file mode 100644
index 0000000..5131821
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
@@ -0,0 +1,59 @@
+package com.casic.dao.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmJobMapper;
+import com.casic.entity.AlarmJob;
+import org.springframework.stereotype.Component;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Component
+public class AlarmJobDao {
+
+ private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ private static Snowflake snowflake = new Snowflake(0, 2);
+// private static final Sn
+
+ @Resource
+ private AlarmJobMapper alarmJobMapper;
+
+ public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) {
+ AlarmJob alarmJob = new AlarmJob();
+ alarmJob.setId(snowflake.nextId());
+ alarmJob.setDevcode(devCode);
+ alarmJob.setWellCode(wellCode);
+ alarmJob.setJobStatus("0");
+ alarmJob.setCreateTime(new Date());
+ alarmJob.setJobcode(this.produceJobCode(devTypeName));
+ alarmJob.setJobType(jobType);
+ alarmJobMapper.insert(alarmJob);
+ return alarmJob;
+ }
+
+ /**
+ * 前缀+日期+4位流水号
+ *
+ * @param devTypeName
+ * @return
+ */
+ private String produceJobCode(String devTypeName) {
+ String pre = devTypeName;
+ String dataStr = sdf6.format(new Date());
+ String fix = this.getJobCodeMaxSerial(pre + dataStr);
+ return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001";
+ }
+
+
+ private String getJobCodeMaxSerial(String jobcode) {
+ String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode);
+ String fix = "";
+ if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) {
+ fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4);
+ }
+ return fix;
+ }
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
deleted file mode 100644
index c797e55..0000000
--- a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
+++ /dev/null
@@ -1,68 +0,0 @@
-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/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java
new file mode 100644
index 0000000..8a0f764
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmJob.java
@@ -0,0 +1,165 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 报警工单表
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_job")
+public class AlarmJob extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 工单编号
+ */
+ @TableField("JOBCODE")
+ private String jobcode;
+ /**
+ * 工单类型
+ */
+ @TableField("JOG_TYPE")
+ private String jobType;
+ /**
+ * 井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 工单创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+ /**
+ * 工单状态(0待处理,1待确认,2处理中,3完成)
+ */
+ @TableField("JOB_STATUS")
+ private String jobStatus;
+ /**
+ * 接单人员
+ */
+ @TableField("GET_JOB_PERSON")
+ private Long getJobPerson;
+ /**
+ * 接单时间
+ */
+ @TableField("GET_JOB_TIME")
+ private Date getJobTime;
+ /**
+ * 应接单时间
+ */
+ @TableField("SHOULD_GET_TIME")
+ private Date shouldGetTime;
+ /**
+ * 第一现场情况
+ */
+ @TableField("FIRST_STATE")
+ private String firstState;
+ /**
+ * 第一现场照片
+ */
+ @TableField("FIRST_STATE_PHOTOS")
+ private String firstStatePhotos;
+ /**
+ * 确认人员
+ */
+ @TableField("CONFIRM_JOB_PERSON")
+ private Long confirmJobPerson;
+ /**
+ * 确认时间
+ */
+ @TableField("CONFRIM_JOB_TIME")
+ private Date confrimJobTime;
+ /**
+ * 处理人员
+ */
+ @TableField("HANDLE_JOB_Person")
+ private Long handleJobPerson;
+ /**
+ * 处理时间
+ */
+ @TableField("HANDLE_JOB_TIME")
+ private Date handleJobTime;
+ /**
+ * 维护情况记录
+ */
+ @TableField("HANDLE_MESSAGE")
+ private String handleMessage;
+ /**
+ * 维护图片
+ */
+ @TableField("HANDLE_PHOTOS")
+ private String handlePhotos;
+ /**
+ * 工单流转记录
+ */
+ @TableField("FLOW")
+ private String flow;
+
+ @TableField("JOB_BELONG_TO")
+ private Long jobBelongTo;
+
+ @TableField("JOB_FLAG_DELAY")
+ private String jobFlagDelay;
+
+ @TableField("JOB_FLAG_1")
+ private String jobFlag1;
+
+ @TableField(exist = false)
+ private String alarmValue;
+
+ @TableField(exist = false)
+ private String alarmContentName;
+
+ @TableField(exist = false)
+ private Integer recordId;
+
+ @Override
+ public String toString() {
+ return "AlarmJob{" +
+ "id=" + id +
+ ", jobcode=" + jobcode +
+ ", jogType=" + jobType +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", createTime=" + createTime +
+ ", jobStatus=" + jobStatus +
+ ", getJobPerson=" + getJobPerson +
+ ", getJobTime=" + getJobTime +
+ ", firstState=" + firstState +
+ ", firstStatePhotos=" + firstStatePhotos +
+ ", confirmJobPerson=" + confirmJobPerson +
+ ", confrimJobTime=" + confrimJobTime +
+ ", handleJobPerson=" + handleJobPerson +
+ ", handleJobTime=" + handleJobTime +
+ ", handleMessage=" + handleMessage +
+ ", handlePhotos=" + handlePhotos +
+ ", flow=" + flow +
+ ", recordId=" + recordId +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java
new file mode 100644
index 0000000..88b0b26
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmRecords.java
@@ -0,0 +1,108 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ *
+ *
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_records")
+public class AlarmRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 设备ID
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 闸井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 告警类型
+ */
+ @TableField("ALARM_TYPE")
+ private String alarmType;
+ /**
+ * 告警内容
+ */
+ @TableField("ALARM_CONTENT")
+ private String alarmContent;
+ /**
+ * 告警数值
+ */
+ @TableField("ALARM_VALUE")
+ private String alarmValue;
+ /**
+ * 告警等级
+ */
+ @TableField("ALARM_LEVEL")
+ private Integer alarmLevel;
+ /**
+ * 告警详情
+ */
+ @TableField("ALARM_MSG")
+ private String alarmMessage;
+ /**
+ * 告警时间
+ */
+ @TableField("ALARM_TIME")
+ private Date alarmTime;
+ /**
+ * 告警状态
+ */
+ @TableField("STATUS")
+ private String status;
+ /**
+ * 工单编号
+ */
+ @TableField("JOB_ID")
+ private Long jobId;
+
+ @TableField(exist = false)
+ private Integer jobStatus;
+
+ @Override
+ public String toString() {
+ return "AlarmRecords{" +
+ "id=" + id +
+ ", deviceId=" + deviceId +
+ ", devcode=" + devcode +
+ ", wellCode=" + wellCode +
+ ", alarmType=" + alarmType +
+ ", alarmContent=" + alarmContent +
+ ", alarmValue=" + alarmValue +
+ ", alarmLevel=" + alarmLevel +
+ ", alarmMessage=" + alarmMessage +
+ ", alarmTime=" + alarmTime +
+ ", status=" + status +
+ ", jobId=" + jobId +
+ ", jobStatus=" + jobStatus +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/DataGasDector.java b/src/main/java/com/casic/entity/DataGasDector.java
new file mode 100644
index 0000000..537789a
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasDector.java
@@ -0,0 +1,42 @@
+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 DataGasDector {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ private String devcode;
+ private String wellCode;
+ private String strength;
+
+ private String descn;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
deleted file mode 100644
index c43ccdf..0000000
--- a/src/main/java/com/casic/entity/DataGasReport.java
+++ /dev/null
@@ -1,69 +0,0 @@
-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/entity/DeviceSatatus.java b/src/main/java/com/casic/entity/DeviceSatatus.java
new file mode 100644
index 0000000..bab7903
--- /dev/null
+++ b/src/main/java/com/casic/entity/DeviceSatatus.java
@@ -0,0 +1,19 @@
+package com.casic.entity;
+
+import lombok.Data;
+
+/**
+ * 不使用了
+ *
+ */
+@Data
+public class DeviceSatatus {
+ private String deviceId;
+ private String cell;
+ private String cellTs;
+ private String onlineState;
+ private String onlineTs;
+ private String lastDataId;
+ private String lastDataJson;
+ private String lastDataTs;
+}
diff --git a/src/main/java/com/casic/model/DataContentParam.java b/src/main/java/com/casic/model/DataContentParam.java
new file mode 100644
index 0000000..46d298a
--- /dev/null
+++ b/src/main/java/com/casic/model/DataContentParam.java
@@ -0,0 +1,19 @@
+package com.casic.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DataContentParam {
+ private String msg_type;
+ private String error_val;
+ private String ch_cnt;
+ private String erro_cnt;
+ private String alarm_low_cnt;
+ private String alarm_high_cnt;
+ private String offline_cnt;
+ private List rtd_val;
+ private List adc_val;
+ private List status_val;
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/model/DataReportParam.java b/src/main/java/com/casic/model/DataReportParam.java
index 082814c..754f330 100644
--- a/src/main/java/com/casic/model/DataReportParam.java
+++ b/src/main/java/com/casic/model/DataReportParam.java
@@ -11,25 +11,12 @@
*/
@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;
+ private String iotId;
+ private String requestId;
+ private Object checkFailedData;
+ private String productKey;
+ private String gmtCreate;
+ private String deviceName;
+ private Object items;
}
diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java
index d883fe4..457d710 100644
--- a/src/main/java/com/casic/service/DeviceDataService.java
+++ b/src/main/java/com/casic/service/DeviceDataService.java
@@ -3,25 +3,18 @@
import com.casic.model.DataReportParam;
import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
+import org.springframework.web.bind.annotation.RequestBody;
/**
* @author cz
* @date 2022
*/
public interface DeviceDataService {
-
/**
*
* @param dataReportParam
* @return
*/
- ResponseData DeviceDataCommit(DataReportParam dataReportParam);
-
- /**
- *
- * @param heartbeatParam
- * @return
- */
- ResponseData heartBeatSave(HeartbeatParam heartbeatParam);
+ ResponseData gasReceiver(DataReportParam dataReportParam);
}
diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
index 93f0685..e473f0c 100644
--- a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
+++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
@@ -1,58 +1,49 @@
package com.casic.service.impl;
-import com.casic.dao.impl.DeviceDataMapper;
+import com.alibaba.druid.util.StringUtils;
+import com.alibaba.fastjson.JSON;
import com.casic.model.*;
import com.casic.service.DeviceDataService;
+import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import java.util.Map;
+
/**
* @author cz
- * @date 2022-6-20
+ * @date 2022-9-26
*/
@Slf4j
@Service
public class DeviceDataServiceImpl implements DeviceDataService {
- @Autowired
- DeviceDataMapper deviceDataMapper;
+ private final NormalDataProcessor normalDataProcessor;
- /**
- * @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;
+ public DeviceDataServiceImpl(NormalDataProcessor normalDataProcessor) {
+ this.normalDataProcessor = normalDataProcessor;
}
- /**
- * @param heartbeatParam
- * @return
- */
- public ResponseData heartBeatSave(HeartbeatParam heartbeatParam) {
+ public ResponseData gasReceiver(DataReportParam dataReportParam) {
ResponseData responseData = new ResponseData();
try {
- deviceDataMapper.editDeviceData(heartbeatParam);
+ Map> updDataMap = new ObjectMapper().convertValue(dataReportParam.getItems(), Map.class);
+ DataContentParam dataContentParam = JSON.parseObject(updDataMap.get("updData").get("value"), DataContentParam.class);
+ Long uptime = Long.valueOf(String.valueOf(updDataMap.get("updData").get("time")));
+ if (StringUtils.isEmpty(dataReportParam.getDeviceName())) {
+ responseData.setCode(200);
+ responseData.setMessage("没有设备编号");
+ return responseData;
+ }
+ normalDataProcessor.normalDataProvider(dataContentParam, uptime, dataReportParam.getDeviceName());
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);
+ log.error("主题:设备数据上报出现错误,异常信息为{}", sqlex);
}
return responseData;
}
diff --git a/src/main/java/com/casic/service/impl/NormalDataProcessor.java b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
new file mode 100644
index 0000000..3f7630a
--- /dev/null
+++ b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
@@ -0,0 +1,164 @@
+package com.casic.service.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmRecordsMapper;
+import com.casic.dao.DataGasMapper;
+import com.casic.dao.impl.AlarmJobDao;
+import com.casic.entity.AlarmJob;
+import com.casic.entity.AlarmRecords;
+import com.casic.entity.DataGasDector;
+import com.casic.model.DataContentParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Component
+public class NormalDataProcessor {
+
+ public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ @Value("${casic.device.gas-dector.type}")
+ private Long deviceType;
+ @Value("${casic.device.gas-dector.minutes}")
+ private String minutes;
+ @Value("${casic.device.gas-dector.enable-local}")
+ private Boolean enableLocal;
+ @Resource
+ private DataGasMapper dataGasMapper;
+ @Autowired
+ private AlarmJobDao alarmJobDao;
+ @Resource
+ private AlarmRecordsMapper alarmRecordsMapper;
+ private static Snowflake snowflake = new Snowflake(0, 2);
+
+ public void normalDataProvider(DataContentParam dataReportParam, Long timeStamp, String devcode) {
+ Map gasMap = dataGasMapper.getWellCode(devcode);
+ if (ObjectUtils.isEmpty(gasMap)) {
+ log.info("没有该设备编号录入" + devcode);
+ if (enableLocal) {
+ return;
+ }
+ }
+ Boolean updateFlag = false;
+ if (ObjectUtils.isEmpty(dataGasMapper.getLastData(minutes, devcode))) {
+ updateFlag = this.saveNormalData(dataReportParam, timeStamp, devcode, gasMap);
+ }
+ this.dataTaskJudge(dataReportParam, devcode, timeStamp, gasMap, updateFlag);
+ return;
+ }
+
+ /**
+ * 自定义时间存库
+ *
+ * @param dataReportParam
+ * @param timeStamp
+ * @param devcode
+ * @param gasMap
+ */
+ private Boolean saveNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap) {
+ Boolean updateFlag = false;
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ List dataReportFilter = dataReportParam.getRtd_val().stream().filter(
+ data -> {
+ return data != -1;
+ }
+ ).collect(Collectors.toList());
+ if (dataReportFilter.size() > 0 && dataReportFilter.get(dataReportFilter.size() - 1) != 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 1);
+ updateFlag = true;
+ } else if (dataReportFilter.get(dataReportFilter.size() - 1) == 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 0);
+ }
+ dataReportFilter.forEach(
+ data -> {
+ if (data != 65535) {
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+ }
+ );
+ return updateFlag;
+ }
+
+ /**
+ * 报警就存库
+ *
+ * @param dataReportParam
+ * @param devcode
+ * @param timeStamp
+ * @param gasMap
+ */
+ private void dataTaskJudge(DataContentParam dataReportParam, String devcode, Long timeStamp, Map gasMap, Boolean updateFlag) {
+ List> alarmLevelList = dataGasMapper.getAlarmLevelList(deviceType);
+ String wellCode = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "";
+ Long deviceId = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? Long.valueOf(String.valueOf(gasMap.get("deviceId"))) : -1;
+ final String gasMsgContent=dataGasMapper.getGasMsgContent(deviceType);
+ dataReportParam.getRtd_val().stream().filter(
+ dataReport -> {
+ return dataReport != -1 && dataReport != 65535;
+ }
+ ).forEach(
+ dataReport -> {
+ for (Map alarmLevelMap : alarmLevelList) {
+ if (dataReport > Float.valueOf(String.valueOf(alarmLevelMap.get("high_value")))) {
+ AlarmRecords alarmRecord = new AlarmRecords();
+ alarmRecord.setId(snowflake.nextId());
+ alarmRecord.setDeviceId(deviceId);
+ alarmRecord.setDevcode(devcode);
+ alarmRecord.setWellCode(wellCode);
+ alarmRecord.setAlarmType("1"); // 业务报警
+ alarmRecord.setAlarmContent("燃气报警");
+ alarmRecord.setAlarmValue(String.valueOf(dataReport));
+ alarmRecord.setAlarmTime(new Date());
+ alarmRecord.setStatus("1");
+ alarmRecord.setAlarmLevel(Integer.valueOf(alarmLevelMap.get("level").toString()));
+ alarmRecord.setAlarmMessage("燃气报警");
+ String jobId = alarmRecordsMapper.isOldAlarmRecord(devcode, "燃气报警");
+ // 超出报警阈值 生成一条报警消息
+ if (!StringUtils.isEmpty(jobId)) {
+ alarmRecordsMapper.updateOldAlarmRecord(devcode, "燃气报警");
+ alarmRecord.setJobId(Long.valueOf(jobId));
+ } else {
+ AlarmJob alarmJob = alarmJobDao.saveData(devcode, wellCode, "RQZD", "1");
+ alarmRecord.setJobId(alarmJob.getId());
+ }
+ alarmRecordsMapper.insert(alarmRecord);
+ if (!updateFlag) {
+ alarmNormalData(dataReportParam, timeStamp, devcode, gasMap, dataReport);
+ }
+ break;
+ }
+ }
+ }
+ );
+ }
+
+ private void alarmNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap, Integer data) {
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+
+}
+
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index fac2afe..f8a06a6 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -1,40 +1,19 @@
server:
- port: 11556
+ port: 11320
################### 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
+ driver-class-name: org.postgresql.Driver
+ url: jdbc:postgresql://111.198.10.15:11209/smartwell_zq_cs
+ 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
- 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
+ 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
index 86411e6..ffc01e9 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -19,18 +19,11 @@
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
+ device:
+ gas-dector:
+ type: 101
+ minutes: 60
+ enable-local: false
+# type 可燃气体的设备类型
+# minutes: 燃气外协设备上传数据的分钟数
\ No newline at end of file
diff --git a/target/classes/application-dev.yml b/target/classes/application-dev.yml
new file mode 100644
index 0000000..fac2afe
--- /dev/null
+++ b/target/classes/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/target/classes/application-postgre.yml b/target/classes/application-postgre.yml
new file mode 100644
index 0000000..2b7f69c
--- /dev/null
+++ b/target/classes/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/target/classes/application.yml b/target/classes/application.yml
new file mode 100644
index 0000000..86411e6
--- /dev/null
+++ b/target/classes/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
diff --git a/target/classes/com/casic/CasicApplication.class b/target/classes/com/casic/CasicApplication.class
new file mode 100644
index 0000000..68c2f95
--- /dev/null
+++ b/target/classes/com/casic/CasicApplication.class
Binary files differ
diff --git a/target/classes/com/casic/controller/DeviceController.class b/target/classes/com/casic/controller/DeviceController.class
new file mode 100644
index 0000000..478d6ae
--- /dev/null
+++ b/target/classes/com/casic/controller/DeviceController.class
Binary files differ
diff --git a/target/classes/com/casic/controller/DeviceDataController.class b/target/classes/com/casic/controller/DeviceDataController.class
new file mode 100644
index 0000000..1f4400c
--- /dev/null
+++ b/target/classes/com/casic/controller/DeviceDataController.class
Binary files differ
diff --git a/target/classes/com/casic/dao/DataGasMapper.class b/target/classes/com/casic/dao/DataGasMapper.class
new file mode 100644
index 0000000..557d539
--- /dev/null
+++ b/target/classes/com/casic/dao/DataGasMapper.class
Binary files differ
diff --git a/target/classes/com/casic/dao/DeviceMapper.class b/target/classes/com/casic/dao/DeviceMapper.class
new file mode 100644
index 0000000..3ddcd2b
--- /dev/null
+++ b/target/classes/com/casic/dao/DeviceMapper.class
Binary files differ
diff --git a/target/classes/com/casic/dao/impl/DeviceDataMapper.class b/target/classes/com/casic/dao/impl/DeviceDataMapper.class
new file mode 100644
index 0000000..d73ed15
--- /dev/null
+++ b/target/classes/com/casic/dao/impl/DeviceDataMapper.class
Binary files differ
diff --git a/target/classes/com/casic/entity/DataGasReport.class b/target/classes/com/casic/entity/DataGasReport.class
new file mode 100644
index 0000000..a3dac78
--- /dev/null
+++ b/target/classes/com/casic/entity/DataGasReport.class
Binary files differ
diff --git a/target/classes/com/casic/model/DataReportParam.class b/target/classes/com/casic/model/DataReportParam.class
new file mode 100644
index 0000000..284c4f6
--- /dev/null
+++ b/target/classes/com/casic/model/DataReportParam.class
Binary files differ
diff --git a/target/classes/com/casic/model/DeviceOnlineParam.class b/target/classes/com/casic/model/DeviceOnlineParam.class
new file mode 100644
index 0000000..33c83e2
--- /dev/null
+++ b/target/classes/com/casic/model/DeviceOnlineParam.class
Binary files differ
diff --git a/target/classes/com/casic/model/HeartbeatParam.class b/target/classes/com/casic/model/HeartbeatParam.class
new file mode 100644
index 0000000..d6d6651
--- /dev/null
+++ b/target/classes/com/casic/model/HeartbeatParam.class
Binary files differ
diff --git a/target/classes/com/casic/model/ResponseData.class b/target/classes/com/casic/model/ResponseData.class
new file mode 100644
index 0000000..9d5cab1
--- /dev/null
+++ b/target/classes/com/casic/model/ResponseData.class
Binary files differ
diff --git a/target/classes/com/casic/service/DeviceDataService.class b/target/classes/com/casic/service/DeviceDataService.class
new file mode 100644
index 0000000..0807bfb
--- /dev/null
+++ b/target/classes/com/casic/service/DeviceDataService.class
Binary files differ
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh
new file mode 100644
index 0000000..e14c4c7
--- /dev/null
+++ b/src/main/build/bin/start.sh
@@ -0,0 +1,2 @@
+java -jar ./lib/${project.build.finalName}.jar
+
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
index c55e37d..0887f1f 100644
--- a/src/main/java/com/casic/CasicApplication.java
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -3,8 +3,6 @@
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;
/**
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
index e5351c9..be0de6b 100644
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -1,14 +1,19 @@
package com.casic.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.casic.model.DataReportParam;
-import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
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;
+import java.util.Map;
+
+@Slf4j
@RequestMapping("/data")
@RestController
public class DeviceDataController {
@@ -19,19 +24,16 @@
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 String gasReceiver(@RequestBody Map map) {
+// log.info("---------"+JSON.toJSONString(map));
+// return "200";
+// }
@PostMapping("/gas/receiver")
- public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
- return dataService.heartBeatSave(heartbeatParam);
+ public ResponseData gasReceiver(@RequestBody DataReportParam dataReportParam) {
+ log.info("---------"+JSON.toJSONString(dataReportParam));
+ return dataService.gasReceiver(dataReportParam);
}
}
diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java
new file mode 100644
index 0000000..e5e9c8d
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmJobMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmJob;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface AlarmJobMapper extends BaseMapper {
+
+ @Select("SELECT MAX(jobcode) " +
+ "FROM alarm_job " +
+ "WHERE JOBCODE like '${jobcode}%'")
+ String getJobCodeMaxSerial(@Param("jobcode") String jobcode);
+
+}
diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
new file mode 100644
index 0000000..8da7dcb
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmRecords;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface AlarmRecordsMapper extends BaseMapper {
+
+
+ @Select("SELECT JOB_ID AS \"jobId\"\n " +
+ "FROM alarm_records\n " +
+ "WHERE DEVCODE = #{devcode}\n " +
+ "AND ALARM_CONTENT = #{MsgContent}\n " +
+ "AND STATUS='1'\n " +
+ "AND JOB_ID>0 ")
+ String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+
+ @Update(" UPDATE alarm_records\n" +
+ " SET STATUS='0'\n" +
+ " WHERE DEVCODE = #{devcode}\n" +
+ " AND ALARM_CONTENT = #{MsgContent}\n" +
+ " AND STATUS='1'")
+ Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
index 47e7cce..33ce14a 100644
--- a/src/main/java/com/casic/dao/DataGasMapper.java
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -1,9 +1,48 @@
package com.casic.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.casic.entity.DataGasReport;
+import com.casic.entity.DataGasDector;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+import java.util.Map;
@Mapper
-public interface DataGasMapper extends BaseMapper {
+public interface DataGasMapper extends BaseMapper {
+
+ @Select("select bd.id as \"deviceId\",bwi.WELL_CODE AS \"wellCode\" " +
+ "from bus_device_well bdw " +
+ "join (select id from bus_device where devcode=#{devcode}) bd ON bd.id=bdw.device_id " +
+ "join bus_well_info bwi ON bwi.id=bdw.well_id ")
+ Map getWellCode(@Param("devcode") String devcode);
+
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{onlineState} " +
+ "WHERE devcode=#{devcode} ")
+ void setOfflineByDevcode(@Param("devcode") String devcode,
+ @Param("onlineState") Integer onlineState);
+
+ @Select("SELECT level,high_value " +
+ "FROM alarm_level " +
+ "WHERE device_type=#{deviceType} ")
+ List> getAlarmLevelList(@Param("deviceType") Long deviceType);
+
+ @Select("SELECT devcode " +
+ "FROM data_gas_dector " +
+ "WHERE devcode=#{devcode} " +
+ "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+
+ "ORDER BY logtime DESC " +
+ "LIMIT 1")
+ String getLastData(@Param("minutes") String minutes,
+ @Param("devcode") String devcode);
+
+ @Select("SELECT alarm_content" +
+ "FROM BASE_alarm_content_type" +
+ "where device_type=#{deviceType}")
+ String getGasMsgContent(@Param("deviceType")Long deviceType);
+
+
}
diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
new file mode 100644
index 0000000..5131821
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
@@ -0,0 +1,59 @@
+package com.casic.dao.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmJobMapper;
+import com.casic.entity.AlarmJob;
+import org.springframework.stereotype.Component;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Component
+public class AlarmJobDao {
+
+ private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ private static Snowflake snowflake = new Snowflake(0, 2);
+// private static final Sn
+
+ @Resource
+ private AlarmJobMapper alarmJobMapper;
+
+ public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) {
+ AlarmJob alarmJob = new AlarmJob();
+ alarmJob.setId(snowflake.nextId());
+ alarmJob.setDevcode(devCode);
+ alarmJob.setWellCode(wellCode);
+ alarmJob.setJobStatus("0");
+ alarmJob.setCreateTime(new Date());
+ alarmJob.setJobcode(this.produceJobCode(devTypeName));
+ alarmJob.setJobType(jobType);
+ alarmJobMapper.insert(alarmJob);
+ return alarmJob;
+ }
+
+ /**
+ * 前缀+日期+4位流水号
+ *
+ * @param devTypeName
+ * @return
+ */
+ private String produceJobCode(String devTypeName) {
+ String pre = devTypeName;
+ String dataStr = sdf6.format(new Date());
+ String fix = this.getJobCodeMaxSerial(pre + dataStr);
+ return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001";
+ }
+
+
+ private String getJobCodeMaxSerial(String jobcode) {
+ String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode);
+ String fix = "";
+ if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) {
+ fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4);
+ }
+ return fix;
+ }
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
deleted file mode 100644
index c797e55..0000000
--- a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
+++ /dev/null
@@ -1,68 +0,0 @@
-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/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java
new file mode 100644
index 0000000..8a0f764
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmJob.java
@@ -0,0 +1,165 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 报警工单表
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_job")
+public class AlarmJob extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 工单编号
+ */
+ @TableField("JOBCODE")
+ private String jobcode;
+ /**
+ * 工单类型
+ */
+ @TableField("JOG_TYPE")
+ private String jobType;
+ /**
+ * 井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 工单创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+ /**
+ * 工单状态(0待处理,1待确认,2处理中,3完成)
+ */
+ @TableField("JOB_STATUS")
+ private String jobStatus;
+ /**
+ * 接单人员
+ */
+ @TableField("GET_JOB_PERSON")
+ private Long getJobPerson;
+ /**
+ * 接单时间
+ */
+ @TableField("GET_JOB_TIME")
+ private Date getJobTime;
+ /**
+ * 应接单时间
+ */
+ @TableField("SHOULD_GET_TIME")
+ private Date shouldGetTime;
+ /**
+ * 第一现场情况
+ */
+ @TableField("FIRST_STATE")
+ private String firstState;
+ /**
+ * 第一现场照片
+ */
+ @TableField("FIRST_STATE_PHOTOS")
+ private String firstStatePhotos;
+ /**
+ * 确认人员
+ */
+ @TableField("CONFIRM_JOB_PERSON")
+ private Long confirmJobPerson;
+ /**
+ * 确认时间
+ */
+ @TableField("CONFRIM_JOB_TIME")
+ private Date confrimJobTime;
+ /**
+ * 处理人员
+ */
+ @TableField("HANDLE_JOB_Person")
+ private Long handleJobPerson;
+ /**
+ * 处理时间
+ */
+ @TableField("HANDLE_JOB_TIME")
+ private Date handleJobTime;
+ /**
+ * 维护情况记录
+ */
+ @TableField("HANDLE_MESSAGE")
+ private String handleMessage;
+ /**
+ * 维护图片
+ */
+ @TableField("HANDLE_PHOTOS")
+ private String handlePhotos;
+ /**
+ * 工单流转记录
+ */
+ @TableField("FLOW")
+ private String flow;
+
+ @TableField("JOB_BELONG_TO")
+ private Long jobBelongTo;
+
+ @TableField("JOB_FLAG_DELAY")
+ private String jobFlagDelay;
+
+ @TableField("JOB_FLAG_1")
+ private String jobFlag1;
+
+ @TableField(exist = false)
+ private String alarmValue;
+
+ @TableField(exist = false)
+ private String alarmContentName;
+
+ @TableField(exist = false)
+ private Integer recordId;
+
+ @Override
+ public String toString() {
+ return "AlarmJob{" +
+ "id=" + id +
+ ", jobcode=" + jobcode +
+ ", jogType=" + jobType +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", createTime=" + createTime +
+ ", jobStatus=" + jobStatus +
+ ", getJobPerson=" + getJobPerson +
+ ", getJobTime=" + getJobTime +
+ ", firstState=" + firstState +
+ ", firstStatePhotos=" + firstStatePhotos +
+ ", confirmJobPerson=" + confirmJobPerson +
+ ", confrimJobTime=" + confrimJobTime +
+ ", handleJobPerson=" + handleJobPerson +
+ ", handleJobTime=" + handleJobTime +
+ ", handleMessage=" + handleMessage +
+ ", handlePhotos=" + handlePhotos +
+ ", flow=" + flow +
+ ", recordId=" + recordId +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java
new file mode 100644
index 0000000..88b0b26
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmRecords.java
@@ -0,0 +1,108 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ *
+ *
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_records")
+public class AlarmRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 设备ID
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 闸井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 告警类型
+ */
+ @TableField("ALARM_TYPE")
+ private String alarmType;
+ /**
+ * 告警内容
+ */
+ @TableField("ALARM_CONTENT")
+ private String alarmContent;
+ /**
+ * 告警数值
+ */
+ @TableField("ALARM_VALUE")
+ private String alarmValue;
+ /**
+ * 告警等级
+ */
+ @TableField("ALARM_LEVEL")
+ private Integer alarmLevel;
+ /**
+ * 告警详情
+ */
+ @TableField("ALARM_MSG")
+ private String alarmMessage;
+ /**
+ * 告警时间
+ */
+ @TableField("ALARM_TIME")
+ private Date alarmTime;
+ /**
+ * 告警状态
+ */
+ @TableField("STATUS")
+ private String status;
+ /**
+ * 工单编号
+ */
+ @TableField("JOB_ID")
+ private Long jobId;
+
+ @TableField(exist = false)
+ private Integer jobStatus;
+
+ @Override
+ public String toString() {
+ return "AlarmRecords{" +
+ "id=" + id +
+ ", deviceId=" + deviceId +
+ ", devcode=" + devcode +
+ ", wellCode=" + wellCode +
+ ", alarmType=" + alarmType +
+ ", alarmContent=" + alarmContent +
+ ", alarmValue=" + alarmValue +
+ ", alarmLevel=" + alarmLevel +
+ ", alarmMessage=" + alarmMessage +
+ ", alarmTime=" + alarmTime +
+ ", status=" + status +
+ ", jobId=" + jobId +
+ ", jobStatus=" + jobStatus +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/DataGasDector.java b/src/main/java/com/casic/entity/DataGasDector.java
new file mode 100644
index 0000000..537789a
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasDector.java
@@ -0,0 +1,42 @@
+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 DataGasDector {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ private String devcode;
+ private String wellCode;
+ private String strength;
+
+ private String descn;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
deleted file mode 100644
index c43ccdf..0000000
--- a/src/main/java/com/casic/entity/DataGasReport.java
+++ /dev/null
@@ -1,69 +0,0 @@
-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/entity/DeviceSatatus.java b/src/main/java/com/casic/entity/DeviceSatatus.java
new file mode 100644
index 0000000..bab7903
--- /dev/null
+++ b/src/main/java/com/casic/entity/DeviceSatatus.java
@@ -0,0 +1,19 @@
+package com.casic.entity;
+
+import lombok.Data;
+
+/**
+ * 不使用了
+ *
+ */
+@Data
+public class DeviceSatatus {
+ private String deviceId;
+ private String cell;
+ private String cellTs;
+ private String onlineState;
+ private String onlineTs;
+ private String lastDataId;
+ private String lastDataJson;
+ private String lastDataTs;
+}
diff --git a/src/main/java/com/casic/model/DataContentParam.java b/src/main/java/com/casic/model/DataContentParam.java
new file mode 100644
index 0000000..46d298a
--- /dev/null
+++ b/src/main/java/com/casic/model/DataContentParam.java
@@ -0,0 +1,19 @@
+package com.casic.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DataContentParam {
+ private String msg_type;
+ private String error_val;
+ private String ch_cnt;
+ private String erro_cnt;
+ private String alarm_low_cnt;
+ private String alarm_high_cnt;
+ private String offline_cnt;
+ private List rtd_val;
+ private List adc_val;
+ private List status_val;
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/model/DataReportParam.java b/src/main/java/com/casic/model/DataReportParam.java
index 082814c..754f330 100644
--- a/src/main/java/com/casic/model/DataReportParam.java
+++ b/src/main/java/com/casic/model/DataReportParam.java
@@ -11,25 +11,12 @@
*/
@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;
+ private String iotId;
+ private String requestId;
+ private Object checkFailedData;
+ private String productKey;
+ private String gmtCreate;
+ private String deviceName;
+ private Object items;
}
diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java
index d883fe4..457d710 100644
--- a/src/main/java/com/casic/service/DeviceDataService.java
+++ b/src/main/java/com/casic/service/DeviceDataService.java
@@ -3,25 +3,18 @@
import com.casic.model.DataReportParam;
import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
+import org.springframework.web.bind.annotation.RequestBody;
/**
* @author cz
* @date 2022
*/
public interface DeviceDataService {
-
/**
*
* @param dataReportParam
* @return
*/
- ResponseData DeviceDataCommit(DataReportParam dataReportParam);
-
- /**
- *
- * @param heartbeatParam
- * @return
- */
- ResponseData heartBeatSave(HeartbeatParam heartbeatParam);
+ ResponseData gasReceiver(DataReportParam dataReportParam);
}
diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
index 93f0685..e473f0c 100644
--- a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
+++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
@@ -1,58 +1,49 @@
package com.casic.service.impl;
-import com.casic.dao.impl.DeviceDataMapper;
+import com.alibaba.druid.util.StringUtils;
+import com.alibaba.fastjson.JSON;
import com.casic.model.*;
import com.casic.service.DeviceDataService;
+import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import java.util.Map;
+
/**
* @author cz
- * @date 2022-6-20
+ * @date 2022-9-26
*/
@Slf4j
@Service
public class DeviceDataServiceImpl implements DeviceDataService {
- @Autowired
- DeviceDataMapper deviceDataMapper;
+ private final NormalDataProcessor normalDataProcessor;
- /**
- * @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;
+ public DeviceDataServiceImpl(NormalDataProcessor normalDataProcessor) {
+ this.normalDataProcessor = normalDataProcessor;
}
- /**
- * @param heartbeatParam
- * @return
- */
- public ResponseData heartBeatSave(HeartbeatParam heartbeatParam) {
+ public ResponseData gasReceiver(DataReportParam dataReportParam) {
ResponseData responseData = new ResponseData();
try {
- deviceDataMapper.editDeviceData(heartbeatParam);
+ Map> updDataMap = new ObjectMapper().convertValue(dataReportParam.getItems(), Map.class);
+ DataContentParam dataContentParam = JSON.parseObject(updDataMap.get("updData").get("value"), DataContentParam.class);
+ Long uptime = Long.valueOf(String.valueOf(updDataMap.get("updData").get("time")));
+ if (StringUtils.isEmpty(dataReportParam.getDeviceName())) {
+ responseData.setCode(200);
+ responseData.setMessage("没有设备编号");
+ return responseData;
+ }
+ normalDataProcessor.normalDataProvider(dataContentParam, uptime, dataReportParam.getDeviceName());
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);
+ log.error("主题:设备数据上报出现错误,异常信息为{}", sqlex);
}
return responseData;
}
diff --git a/src/main/java/com/casic/service/impl/NormalDataProcessor.java b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
new file mode 100644
index 0000000..3f7630a
--- /dev/null
+++ b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
@@ -0,0 +1,164 @@
+package com.casic.service.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmRecordsMapper;
+import com.casic.dao.DataGasMapper;
+import com.casic.dao.impl.AlarmJobDao;
+import com.casic.entity.AlarmJob;
+import com.casic.entity.AlarmRecords;
+import com.casic.entity.DataGasDector;
+import com.casic.model.DataContentParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Component
+public class NormalDataProcessor {
+
+ public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ @Value("${casic.device.gas-dector.type}")
+ private Long deviceType;
+ @Value("${casic.device.gas-dector.minutes}")
+ private String minutes;
+ @Value("${casic.device.gas-dector.enable-local}")
+ private Boolean enableLocal;
+ @Resource
+ private DataGasMapper dataGasMapper;
+ @Autowired
+ private AlarmJobDao alarmJobDao;
+ @Resource
+ private AlarmRecordsMapper alarmRecordsMapper;
+ private static Snowflake snowflake = new Snowflake(0, 2);
+
+ public void normalDataProvider(DataContentParam dataReportParam, Long timeStamp, String devcode) {
+ Map gasMap = dataGasMapper.getWellCode(devcode);
+ if (ObjectUtils.isEmpty(gasMap)) {
+ log.info("没有该设备编号录入" + devcode);
+ if (enableLocal) {
+ return;
+ }
+ }
+ Boolean updateFlag = false;
+ if (ObjectUtils.isEmpty(dataGasMapper.getLastData(minutes, devcode))) {
+ updateFlag = this.saveNormalData(dataReportParam, timeStamp, devcode, gasMap);
+ }
+ this.dataTaskJudge(dataReportParam, devcode, timeStamp, gasMap, updateFlag);
+ return;
+ }
+
+ /**
+ * 自定义时间存库
+ *
+ * @param dataReportParam
+ * @param timeStamp
+ * @param devcode
+ * @param gasMap
+ */
+ private Boolean saveNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap) {
+ Boolean updateFlag = false;
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ List dataReportFilter = dataReportParam.getRtd_val().stream().filter(
+ data -> {
+ return data != -1;
+ }
+ ).collect(Collectors.toList());
+ if (dataReportFilter.size() > 0 && dataReportFilter.get(dataReportFilter.size() - 1) != 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 1);
+ updateFlag = true;
+ } else if (dataReportFilter.get(dataReportFilter.size() - 1) == 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 0);
+ }
+ dataReportFilter.forEach(
+ data -> {
+ if (data != 65535) {
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+ }
+ );
+ return updateFlag;
+ }
+
+ /**
+ * 报警就存库
+ *
+ * @param dataReportParam
+ * @param devcode
+ * @param timeStamp
+ * @param gasMap
+ */
+ private void dataTaskJudge(DataContentParam dataReportParam, String devcode, Long timeStamp, Map gasMap, Boolean updateFlag) {
+ List> alarmLevelList = dataGasMapper.getAlarmLevelList(deviceType);
+ String wellCode = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "";
+ Long deviceId = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? Long.valueOf(String.valueOf(gasMap.get("deviceId"))) : -1;
+ final String gasMsgContent=dataGasMapper.getGasMsgContent(deviceType);
+ dataReportParam.getRtd_val().stream().filter(
+ dataReport -> {
+ return dataReport != -1 && dataReport != 65535;
+ }
+ ).forEach(
+ dataReport -> {
+ for (Map alarmLevelMap : alarmLevelList) {
+ if (dataReport > Float.valueOf(String.valueOf(alarmLevelMap.get("high_value")))) {
+ AlarmRecords alarmRecord = new AlarmRecords();
+ alarmRecord.setId(snowflake.nextId());
+ alarmRecord.setDeviceId(deviceId);
+ alarmRecord.setDevcode(devcode);
+ alarmRecord.setWellCode(wellCode);
+ alarmRecord.setAlarmType("1"); // 业务报警
+ alarmRecord.setAlarmContent("燃气报警");
+ alarmRecord.setAlarmValue(String.valueOf(dataReport));
+ alarmRecord.setAlarmTime(new Date());
+ alarmRecord.setStatus("1");
+ alarmRecord.setAlarmLevel(Integer.valueOf(alarmLevelMap.get("level").toString()));
+ alarmRecord.setAlarmMessage("燃气报警");
+ String jobId = alarmRecordsMapper.isOldAlarmRecord(devcode, "燃气报警");
+ // 超出报警阈值 生成一条报警消息
+ if (!StringUtils.isEmpty(jobId)) {
+ alarmRecordsMapper.updateOldAlarmRecord(devcode, "燃气报警");
+ alarmRecord.setJobId(Long.valueOf(jobId));
+ } else {
+ AlarmJob alarmJob = alarmJobDao.saveData(devcode, wellCode, "RQZD", "1");
+ alarmRecord.setJobId(alarmJob.getId());
+ }
+ alarmRecordsMapper.insert(alarmRecord);
+ if (!updateFlag) {
+ alarmNormalData(dataReportParam, timeStamp, devcode, gasMap, dataReport);
+ }
+ break;
+ }
+ }
+ }
+ );
+ }
+
+ private void alarmNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap, Integer data) {
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+
+}
+
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index fac2afe..f8a06a6 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -1,40 +1,19 @@
server:
- port: 11556
+ port: 11320
################### 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
+ driver-class-name: org.postgresql.Driver
+ url: jdbc:postgresql://111.198.10.15:11209/smartwell_zq_cs
+ 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
- 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
+ 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
index 86411e6..ffc01e9 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -19,18 +19,11 @@
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
+ device:
+ gas-dector:
+ type: 101
+ minutes: 60
+ enable-local: false
+# type 可燃气体的设备类型
+# minutes: 燃气外协设备上传数据的分钟数
\ No newline at end of file
diff --git a/target/classes/application-dev.yml b/target/classes/application-dev.yml
new file mode 100644
index 0000000..fac2afe
--- /dev/null
+++ b/target/classes/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/target/classes/application-postgre.yml b/target/classes/application-postgre.yml
new file mode 100644
index 0000000..2b7f69c
--- /dev/null
+++ b/target/classes/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/target/classes/application.yml b/target/classes/application.yml
new file mode 100644
index 0000000..86411e6
--- /dev/null
+++ b/target/classes/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
diff --git a/target/classes/com/casic/CasicApplication.class b/target/classes/com/casic/CasicApplication.class
new file mode 100644
index 0000000..68c2f95
--- /dev/null
+++ b/target/classes/com/casic/CasicApplication.class
Binary files differ
diff --git a/target/classes/com/casic/controller/DeviceController.class b/target/classes/com/casic/controller/DeviceController.class
new file mode 100644
index 0000000..478d6ae
--- /dev/null
+++ b/target/classes/com/casic/controller/DeviceController.class
Binary files differ
diff --git a/target/classes/com/casic/controller/DeviceDataController.class b/target/classes/com/casic/controller/DeviceDataController.class
new file mode 100644
index 0000000..1f4400c
--- /dev/null
+++ b/target/classes/com/casic/controller/DeviceDataController.class
Binary files differ
diff --git a/target/classes/com/casic/dao/DataGasMapper.class b/target/classes/com/casic/dao/DataGasMapper.class
new file mode 100644
index 0000000..557d539
--- /dev/null
+++ b/target/classes/com/casic/dao/DataGasMapper.class
Binary files differ
diff --git a/target/classes/com/casic/dao/DeviceMapper.class b/target/classes/com/casic/dao/DeviceMapper.class
new file mode 100644
index 0000000..3ddcd2b
--- /dev/null
+++ b/target/classes/com/casic/dao/DeviceMapper.class
Binary files differ
diff --git a/target/classes/com/casic/dao/impl/DeviceDataMapper.class b/target/classes/com/casic/dao/impl/DeviceDataMapper.class
new file mode 100644
index 0000000..d73ed15
--- /dev/null
+++ b/target/classes/com/casic/dao/impl/DeviceDataMapper.class
Binary files differ
diff --git a/target/classes/com/casic/entity/DataGasReport.class b/target/classes/com/casic/entity/DataGasReport.class
new file mode 100644
index 0000000..a3dac78
--- /dev/null
+++ b/target/classes/com/casic/entity/DataGasReport.class
Binary files differ
diff --git a/target/classes/com/casic/model/DataReportParam.class b/target/classes/com/casic/model/DataReportParam.class
new file mode 100644
index 0000000..284c4f6
--- /dev/null
+++ b/target/classes/com/casic/model/DataReportParam.class
Binary files differ
diff --git a/target/classes/com/casic/model/DeviceOnlineParam.class b/target/classes/com/casic/model/DeviceOnlineParam.class
new file mode 100644
index 0000000..33c83e2
--- /dev/null
+++ b/target/classes/com/casic/model/DeviceOnlineParam.class
Binary files differ
diff --git a/target/classes/com/casic/model/HeartbeatParam.class b/target/classes/com/casic/model/HeartbeatParam.class
new file mode 100644
index 0000000..d6d6651
--- /dev/null
+++ b/target/classes/com/casic/model/HeartbeatParam.class
Binary files differ
diff --git a/target/classes/com/casic/model/ResponseData.class b/target/classes/com/casic/model/ResponseData.class
new file mode 100644
index 0000000..9d5cab1
--- /dev/null
+++ b/target/classes/com/casic/model/ResponseData.class
Binary files differ
diff --git a/target/classes/com/casic/service/DeviceDataService.class b/target/classes/com/casic/service/DeviceDataService.class
new file mode 100644
index 0000000..0807bfb
--- /dev/null
+++ b/target/classes/com/casic/service/DeviceDataService.class
Binary files differ
diff --git a/target/classes/com/casic/service/DeviceService.class b/target/classes/com/casic/service/DeviceService.class
new file mode 100644
index 0000000..765368a
--- /dev/null
+++ b/target/classes/com/casic/service/DeviceService.class
Binary files differ
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh
new file mode 100644
index 0000000..e14c4c7
--- /dev/null
+++ b/src/main/build/bin/start.sh
@@ -0,0 +1,2 @@
+java -jar ./lib/${project.build.finalName}.jar
+
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
index c55e37d..0887f1f 100644
--- a/src/main/java/com/casic/CasicApplication.java
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -3,8 +3,6 @@
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;
/**
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
index e5351c9..be0de6b 100644
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -1,14 +1,19 @@
package com.casic.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.casic.model.DataReportParam;
-import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
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;
+import java.util.Map;
+
+@Slf4j
@RequestMapping("/data")
@RestController
public class DeviceDataController {
@@ -19,19 +24,16 @@
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 String gasReceiver(@RequestBody Map map) {
+// log.info("---------"+JSON.toJSONString(map));
+// return "200";
+// }
@PostMapping("/gas/receiver")
- public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
- return dataService.heartBeatSave(heartbeatParam);
+ public ResponseData gasReceiver(@RequestBody DataReportParam dataReportParam) {
+ log.info("---------"+JSON.toJSONString(dataReportParam));
+ return dataService.gasReceiver(dataReportParam);
}
}
diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java
new file mode 100644
index 0000000..e5e9c8d
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmJobMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmJob;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface AlarmJobMapper extends BaseMapper {
+
+ @Select("SELECT MAX(jobcode) " +
+ "FROM alarm_job " +
+ "WHERE JOBCODE like '${jobcode}%'")
+ String getJobCodeMaxSerial(@Param("jobcode") String jobcode);
+
+}
diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
new file mode 100644
index 0000000..8da7dcb
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmRecords;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface AlarmRecordsMapper extends BaseMapper {
+
+
+ @Select("SELECT JOB_ID AS \"jobId\"\n " +
+ "FROM alarm_records\n " +
+ "WHERE DEVCODE = #{devcode}\n " +
+ "AND ALARM_CONTENT = #{MsgContent}\n " +
+ "AND STATUS='1'\n " +
+ "AND JOB_ID>0 ")
+ String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+
+ @Update(" UPDATE alarm_records\n" +
+ " SET STATUS='0'\n" +
+ " WHERE DEVCODE = #{devcode}\n" +
+ " AND ALARM_CONTENT = #{MsgContent}\n" +
+ " AND STATUS='1'")
+ Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
index 47e7cce..33ce14a 100644
--- a/src/main/java/com/casic/dao/DataGasMapper.java
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -1,9 +1,48 @@
package com.casic.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.casic.entity.DataGasReport;
+import com.casic.entity.DataGasDector;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+import java.util.Map;
@Mapper
-public interface DataGasMapper extends BaseMapper {
+public interface DataGasMapper extends BaseMapper {
+
+ @Select("select bd.id as \"deviceId\",bwi.WELL_CODE AS \"wellCode\" " +
+ "from bus_device_well bdw " +
+ "join (select id from bus_device where devcode=#{devcode}) bd ON bd.id=bdw.device_id " +
+ "join bus_well_info bwi ON bwi.id=bdw.well_id ")
+ Map getWellCode(@Param("devcode") String devcode);
+
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{onlineState} " +
+ "WHERE devcode=#{devcode} ")
+ void setOfflineByDevcode(@Param("devcode") String devcode,
+ @Param("onlineState") Integer onlineState);
+
+ @Select("SELECT level,high_value " +
+ "FROM alarm_level " +
+ "WHERE device_type=#{deviceType} ")
+ List> getAlarmLevelList(@Param("deviceType") Long deviceType);
+
+ @Select("SELECT devcode " +
+ "FROM data_gas_dector " +
+ "WHERE devcode=#{devcode} " +
+ "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+
+ "ORDER BY logtime DESC " +
+ "LIMIT 1")
+ String getLastData(@Param("minutes") String minutes,
+ @Param("devcode") String devcode);
+
+ @Select("SELECT alarm_content" +
+ "FROM BASE_alarm_content_type" +
+ "where device_type=#{deviceType}")
+ String getGasMsgContent(@Param("deviceType")Long deviceType);
+
+
}
diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
new file mode 100644
index 0000000..5131821
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
@@ -0,0 +1,59 @@
+package com.casic.dao.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmJobMapper;
+import com.casic.entity.AlarmJob;
+import org.springframework.stereotype.Component;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Component
+public class AlarmJobDao {
+
+ private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ private static Snowflake snowflake = new Snowflake(0, 2);
+// private static final Sn
+
+ @Resource
+ private AlarmJobMapper alarmJobMapper;
+
+ public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) {
+ AlarmJob alarmJob = new AlarmJob();
+ alarmJob.setId(snowflake.nextId());
+ alarmJob.setDevcode(devCode);
+ alarmJob.setWellCode(wellCode);
+ alarmJob.setJobStatus("0");
+ alarmJob.setCreateTime(new Date());
+ alarmJob.setJobcode(this.produceJobCode(devTypeName));
+ alarmJob.setJobType(jobType);
+ alarmJobMapper.insert(alarmJob);
+ return alarmJob;
+ }
+
+ /**
+ * 前缀+日期+4位流水号
+ *
+ * @param devTypeName
+ * @return
+ */
+ private String produceJobCode(String devTypeName) {
+ String pre = devTypeName;
+ String dataStr = sdf6.format(new Date());
+ String fix = this.getJobCodeMaxSerial(pre + dataStr);
+ return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001";
+ }
+
+
+ private String getJobCodeMaxSerial(String jobcode) {
+ String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode);
+ String fix = "";
+ if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) {
+ fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4);
+ }
+ return fix;
+ }
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
deleted file mode 100644
index c797e55..0000000
--- a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
+++ /dev/null
@@ -1,68 +0,0 @@
-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/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java
new file mode 100644
index 0000000..8a0f764
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmJob.java
@@ -0,0 +1,165 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 报警工单表
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_job")
+public class AlarmJob extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 工单编号
+ */
+ @TableField("JOBCODE")
+ private String jobcode;
+ /**
+ * 工单类型
+ */
+ @TableField("JOG_TYPE")
+ private String jobType;
+ /**
+ * 井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 工单创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+ /**
+ * 工单状态(0待处理,1待确认,2处理中,3完成)
+ */
+ @TableField("JOB_STATUS")
+ private String jobStatus;
+ /**
+ * 接单人员
+ */
+ @TableField("GET_JOB_PERSON")
+ private Long getJobPerson;
+ /**
+ * 接单时间
+ */
+ @TableField("GET_JOB_TIME")
+ private Date getJobTime;
+ /**
+ * 应接单时间
+ */
+ @TableField("SHOULD_GET_TIME")
+ private Date shouldGetTime;
+ /**
+ * 第一现场情况
+ */
+ @TableField("FIRST_STATE")
+ private String firstState;
+ /**
+ * 第一现场照片
+ */
+ @TableField("FIRST_STATE_PHOTOS")
+ private String firstStatePhotos;
+ /**
+ * 确认人员
+ */
+ @TableField("CONFIRM_JOB_PERSON")
+ private Long confirmJobPerson;
+ /**
+ * 确认时间
+ */
+ @TableField("CONFRIM_JOB_TIME")
+ private Date confrimJobTime;
+ /**
+ * 处理人员
+ */
+ @TableField("HANDLE_JOB_Person")
+ private Long handleJobPerson;
+ /**
+ * 处理时间
+ */
+ @TableField("HANDLE_JOB_TIME")
+ private Date handleJobTime;
+ /**
+ * 维护情况记录
+ */
+ @TableField("HANDLE_MESSAGE")
+ private String handleMessage;
+ /**
+ * 维护图片
+ */
+ @TableField("HANDLE_PHOTOS")
+ private String handlePhotos;
+ /**
+ * 工单流转记录
+ */
+ @TableField("FLOW")
+ private String flow;
+
+ @TableField("JOB_BELONG_TO")
+ private Long jobBelongTo;
+
+ @TableField("JOB_FLAG_DELAY")
+ private String jobFlagDelay;
+
+ @TableField("JOB_FLAG_1")
+ private String jobFlag1;
+
+ @TableField(exist = false)
+ private String alarmValue;
+
+ @TableField(exist = false)
+ private String alarmContentName;
+
+ @TableField(exist = false)
+ private Integer recordId;
+
+ @Override
+ public String toString() {
+ return "AlarmJob{" +
+ "id=" + id +
+ ", jobcode=" + jobcode +
+ ", jogType=" + jobType +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", createTime=" + createTime +
+ ", jobStatus=" + jobStatus +
+ ", getJobPerson=" + getJobPerson +
+ ", getJobTime=" + getJobTime +
+ ", firstState=" + firstState +
+ ", firstStatePhotos=" + firstStatePhotos +
+ ", confirmJobPerson=" + confirmJobPerson +
+ ", confrimJobTime=" + confrimJobTime +
+ ", handleJobPerson=" + handleJobPerson +
+ ", handleJobTime=" + handleJobTime +
+ ", handleMessage=" + handleMessage +
+ ", handlePhotos=" + handlePhotos +
+ ", flow=" + flow +
+ ", recordId=" + recordId +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java
new file mode 100644
index 0000000..88b0b26
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmRecords.java
@@ -0,0 +1,108 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ *
+ *
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_records")
+public class AlarmRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 设备ID
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 闸井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 告警类型
+ */
+ @TableField("ALARM_TYPE")
+ private String alarmType;
+ /**
+ * 告警内容
+ */
+ @TableField("ALARM_CONTENT")
+ private String alarmContent;
+ /**
+ * 告警数值
+ */
+ @TableField("ALARM_VALUE")
+ private String alarmValue;
+ /**
+ * 告警等级
+ */
+ @TableField("ALARM_LEVEL")
+ private Integer alarmLevel;
+ /**
+ * 告警详情
+ */
+ @TableField("ALARM_MSG")
+ private String alarmMessage;
+ /**
+ * 告警时间
+ */
+ @TableField("ALARM_TIME")
+ private Date alarmTime;
+ /**
+ * 告警状态
+ */
+ @TableField("STATUS")
+ private String status;
+ /**
+ * 工单编号
+ */
+ @TableField("JOB_ID")
+ private Long jobId;
+
+ @TableField(exist = false)
+ private Integer jobStatus;
+
+ @Override
+ public String toString() {
+ return "AlarmRecords{" +
+ "id=" + id +
+ ", deviceId=" + deviceId +
+ ", devcode=" + devcode +
+ ", wellCode=" + wellCode +
+ ", alarmType=" + alarmType +
+ ", alarmContent=" + alarmContent +
+ ", alarmValue=" + alarmValue +
+ ", alarmLevel=" + alarmLevel +
+ ", alarmMessage=" + alarmMessage +
+ ", alarmTime=" + alarmTime +
+ ", status=" + status +
+ ", jobId=" + jobId +
+ ", jobStatus=" + jobStatus +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/DataGasDector.java b/src/main/java/com/casic/entity/DataGasDector.java
new file mode 100644
index 0000000..537789a
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasDector.java
@@ -0,0 +1,42 @@
+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 DataGasDector {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ private String devcode;
+ private String wellCode;
+ private String strength;
+
+ private String descn;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
deleted file mode 100644
index c43ccdf..0000000
--- a/src/main/java/com/casic/entity/DataGasReport.java
+++ /dev/null
@@ -1,69 +0,0 @@
-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/entity/DeviceSatatus.java b/src/main/java/com/casic/entity/DeviceSatatus.java
new file mode 100644
index 0000000..bab7903
--- /dev/null
+++ b/src/main/java/com/casic/entity/DeviceSatatus.java
@@ -0,0 +1,19 @@
+package com.casic.entity;
+
+import lombok.Data;
+
+/**
+ * 不使用了
+ *
+ */
+@Data
+public class DeviceSatatus {
+ private String deviceId;
+ private String cell;
+ private String cellTs;
+ private String onlineState;
+ private String onlineTs;
+ private String lastDataId;
+ private String lastDataJson;
+ private String lastDataTs;
+}
diff --git a/src/main/java/com/casic/model/DataContentParam.java b/src/main/java/com/casic/model/DataContentParam.java
new file mode 100644
index 0000000..46d298a
--- /dev/null
+++ b/src/main/java/com/casic/model/DataContentParam.java
@@ -0,0 +1,19 @@
+package com.casic.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DataContentParam {
+ private String msg_type;
+ private String error_val;
+ private String ch_cnt;
+ private String erro_cnt;
+ private String alarm_low_cnt;
+ private String alarm_high_cnt;
+ private String offline_cnt;
+ private List rtd_val;
+ private List adc_val;
+ private List status_val;
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/model/DataReportParam.java b/src/main/java/com/casic/model/DataReportParam.java
index 082814c..754f330 100644
--- a/src/main/java/com/casic/model/DataReportParam.java
+++ b/src/main/java/com/casic/model/DataReportParam.java
@@ -11,25 +11,12 @@
*/
@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;
+ private String iotId;
+ private String requestId;
+ private Object checkFailedData;
+ private String productKey;
+ private String gmtCreate;
+ private String deviceName;
+ private Object items;
}
diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java
index d883fe4..457d710 100644
--- a/src/main/java/com/casic/service/DeviceDataService.java
+++ b/src/main/java/com/casic/service/DeviceDataService.java
@@ -3,25 +3,18 @@
import com.casic.model.DataReportParam;
import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
+import org.springframework.web.bind.annotation.RequestBody;
/**
* @author cz
* @date 2022
*/
public interface DeviceDataService {
-
/**
*
* @param dataReportParam
* @return
*/
- ResponseData DeviceDataCommit(DataReportParam dataReportParam);
-
- /**
- *
- * @param heartbeatParam
- * @return
- */
- ResponseData heartBeatSave(HeartbeatParam heartbeatParam);
+ ResponseData gasReceiver(DataReportParam dataReportParam);
}
diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
index 93f0685..e473f0c 100644
--- a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
+++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
@@ -1,58 +1,49 @@
package com.casic.service.impl;
-import com.casic.dao.impl.DeviceDataMapper;
+import com.alibaba.druid.util.StringUtils;
+import com.alibaba.fastjson.JSON;
import com.casic.model.*;
import com.casic.service.DeviceDataService;
+import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import java.util.Map;
+
/**
* @author cz
- * @date 2022-6-20
+ * @date 2022-9-26
*/
@Slf4j
@Service
public class DeviceDataServiceImpl implements DeviceDataService {
- @Autowired
- DeviceDataMapper deviceDataMapper;
+ private final NormalDataProcessor normalDataProcessor;
- /**
- * @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;
+ public DeviceDataServiceImpl(NormalDataProcessor normalDataProcessor) {
+ this.normalDataProcessor = normalDataProcessor;
}
- /**
- * @param heartbeatParam
- * @return
- */
- public ResponseData heartBeatSave(HeartbeatParam heartbeatParam) {
+ public ResponseData gasReceiver(DataReportParam dataReportParam) {
ResponseData responseData = new ResponseData();
try {
- deviceDataMapper.editDeviceData(heartbeatParam);
+ Map> updDataMap = new ObjectMapper().convertValue(dataReportParam.getItems(), Map.class);
+ DataContentParam dataContentParam = JSON.parseObject(updDataMap.get("updData").get("value"), DataContentParam.class);
+ Long uptime = Long.valueOf(String.valueOf(updDataMap.get("updData").get("time")));
+ if (StringUtils.isEmpty(dataReportParam.getDeviceName())) {
+ responseData.setCode(200);
+ responseData.setMessage("没有设备编号");
+ return responseData;
+ }
+ normalDataProcessor.normalDataProvider(dataContentParam, uptime, dataReportParam.getDeviceName());
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);
+ log.error("主题:设备数据上报出现错误,异常信息为{}", sqlex);
}
return responseData;
}
diff --git a/src/main/java/com/casic/service/impl/NormalDataProcessor.java b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
new file mode 100644
index 0000000..3f7630a
--- /dev/null
+++ b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
@@ -0,0 +1,164 @@
+package com.casic.service.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmRecordsMapper;
+import com.casic.dao.DataGasMapper;
+import com.casic.dao.impl.AlarmJobDao;
+import com.casic.entity.AlarmJob;
+import com.casic.entity.AlarmRecords;
+import com.casic.entity.DataGasDector;
+import com.casic.model.DataContentParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Component
+public class NormalDataProcessor {
+
+ public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ @Value("${casic.device.gas-dector.type}")
+ private Long deviceType;
+ @Value("${casic.device.gas-dector.minutes}")
+ private String minutes;
+ @Value("${casic.device.gas-dector.enable-local}")
+ private Boolean enableLocal;
+ @Resource
+ private DataGasMapper dataGasMapper;
+ @Autowired
+ private AlarmJobDao alarmJobDao;
+ @Resource
+ private AlarmRecordsMapper alarmRecordsMapper;
+ private static Snowflake snowflake = new Snowflake(0, 2);
+
+ public void normalDataProvider(DataContentParam dataReportParam, Long timeStamp, String devcode) {
+ Map gasMap = dataGasMapper.getWellCode(devcode);
+ if (ObjectUtils.isEmpty(gasMap)) {
+ log.info("没有该设备编号录入" + devcode);
+ if (enableLocal) {
+ return;
+ }
+ }
+ Boolean updateFlag = false;
+ if (ObjectUtils.isEmpty(dataGasMapper.getLastData(minutes, devcode))) {
+ updateFlag = this.saveNormalData(dataReportParam, timeStamp, devcode, gasMap);
+ }
+ this.dataTaskJudge(dataReportParam, devcode, timeStamp, gasMap, updateFlag);
+ return;
+ }
+
+ /**
+ * 自定义时间存库
+ *
+ * @param dataReportParam
+ * @param timeStamp
+ * @param devcode
+ * @param gasMap
+ */
+ private Boolean saveNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap) {
+ Boolean updateFlag = false;
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ List dataReportFilter = dataReportParam.getRtd_val().stream().filter(
+ data -> {
+ return data != -1;
+ }
+ ).collect(Collectors.toList());
+ if (dataReportFilter.size() > 0 && dataReportFilter.get(dataReportFilter.size() - 1) != 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 1);
+ updateFlag = true;
+ } else if (dataReportFilter.get(dataReportFilter.size() - 1) == 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 0);
+ }
+ dataReportFilter.forEach(
+ data -> {
+ if (data != 65535) {
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+ }
+ );
+ return updateFlag;
+ }
+
+ /**
+ * 报警就存库
+ *
+ * @param dataReportParam
+ * @param devcode
+ * @param timeStamp
+ * @param gasMap
+ */
+ private void dataTaskJudge(DataContentParam dataReportParam, String devcode, Long timeStamp, Map gasMap, Boolean updateFlag) {
+ List> alarmLevelList = dataGasMapper.getAlarmLevelList(deviceType);
+ String wellCode = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "";
+ Long deviceId = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? Long.valueOf(String.valueOf(gasMap.get("deviceId"))) : -1;
+ final String gasMsgContent=dataGasMapper.getGasMsgContent(deviceType);
+ dataReportParam.getRtd_val().stream().filter(
+ dataReport -> {
+ return dataReport != -1 && dataReport != 65535;
+ }
+ ).forEach(
+ dataReport -> {
+ for (Map alarmLevelMap : alarmLevelList) {
+ if (dataReport > Float.valueOf(String.valueOf(alarmLevelMap.get("high_value")))) {
+ AlarmRecords alarmRecord = new AlarmRecords();
+ alarmRecord.setId(snowflake.nextId());
+ alarmRecord.setDeviceId(deviceId);
+ alarmRecord.setDevcode(devcode);
+ alarmRecord.setWellCode(wellCode);
+ alarmRecord.setAlarmType("1"); // 业务报警
+ alarmRecord.setAlarmContent("燃气报警");
+ alarmRecord.setAlarmValue(String.valueOf(dataReport));
+ alarmRecord.setAlarmTime(new Date());
+ alarmRecord.setStatus("1");
+ alarmRecord.setAlarmLevel(Integer.valueOf(alarmLevelMap.get("level").toString()));
+ alarmRecord.setAlarmMessage("燃气报警");
+ String jobId = alarmRecordsMapper.isOldAlarmRecord(devcode, "燃气报警");
+ // 超出报警阈值 生成一条报警消息
+ if (!StringUtils.isEmpty(jobId)) {
+ alarmRecordsMapper.updateOldAlarmRecord(devcode, "燃气报警");
+ alarmRecord.setJobId(Long.valueOf(jobId));
+ } else {
+ AlarmJob alarmJob = alarmJobDao.saveData(devcode, wellCode, "RQZD", "1");
+ alarmRecord.setJobId(alarmJob.getId());
+ }
+ alarmRecordsMapper.insert(alarmRecord);
+ if (!updateFlag) {
+ alarmNormalData(dataReportParam, timeStamp, devcode, gasMap, dataReport);
+ }
+ break;
+ }
+ }
+ }
+ );
+ }
+
+ private void alarmNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap, Integer data) {
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+
+}
+
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index fac2afe..f8a06a6 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -1,40 +1,19 @@
server:
- port: 11556
+ port: 11320
################### 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
+ driver-class-name: org.postgresql.Driver
+ url: jdbc:postgresql://111.198.10.15:11209/smartwell_zq_cs
+ 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
- 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
+ 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
index 86411e6..ffc01e9 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -19,18 +19,11 @@
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
+ device:
+ gas-dector:
+ type: 101
+ minutes: 60
+ enable-local: false
+# type 可燃气体的设备类型
+# minutes: 燃气外协设备上传数据的分钟数
\ No newline at end of file
diff --git a/target/classes/application-dev.yml b/target/classes/application-dev.yml
new file mode 100644
index 0000000..fac2afe
--- /dev/null
+++ b/target/classes/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/target/classes/application-postgre.yml b/target/classes/application-postgre.yml
new file mode 100644
index 0000000..2b7f69c
--- /dev/null
+++ b/target/classes/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/target/classes/application.yml b/target/classes/application.yml
new file mode 100644
index 0000000..86411e6
--- /dev/null
+++ b/target/classes/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
diff --git a/target/classes/com/casic/CasicApplication.class b/target/classes/com/casic/CasicApplication.class
new file mode 100644
index 0000000..68c2f95
--- /dev/null
+++ b/target/classes/com/casic/CasicApplication.class
Binary files differ
diff --git a/target/classes/com/casic/controller/DeviceController.class b/target/classes/com/casic/controller/DeviceController.class
new file mode 100644
index 0000000..478d6ae
--- /dev/null
+++ b/target/classes/com/casic/controller/DeviceController.class
Binary files differ
diff --git a/target/classes/com/casic/controller/DeviceDataController.class b/target/classes/com/casic/controller/DeviceDataController.class
new file mode 100644
index 0000000..1f4400c
--- /dev/null
+++ b/target/classes/com/casic/controller/DeviceDataController.class
Binary files differ
diff --git a/target/classes/com/casic/dao/DataGasMapper.class b/target/classes/com/casic/dao/DataGasMapper.class
new file mode 100644
index 0000000..557d539
--- /dev/null
+++ b/target/classes/com/casic/dao/DataGasMapper.class
Binary files differ
diff --git a/target/classes/com/casic/dao/DeviceMapper.class b/target/classes/com/casic/dao/DeviceMapper.class
new file mode 100644
index 0000000..3ddcd2b
--- /dev/null
+++ b/target/classes/com/casic/dao/DeviceMapper.class
Binary files differ
diff --git a/target/classes/com/casic/dao/impl/DeviceDataMapper.class b/target/classes/com/casic/dao/impl/DeviceDataMapper.class
new file mode 100644
index 0000000..d73ed15
--- /dev/null
+++ b/target/classes/com/casic/dao/impl/DeviceDataMapper.class
Binary files differ
diff --git a/target/classes/com/casic/entity/DataGasReport.class b/target/classes/com/casic/entity/DataGasReport.class
new file mode 100644
index 0000000..a3dac78
--- /dev/null
+++ b/target/classes/com/casic/entity/DataGasReport.class
Binary files differ
diff --git a/target/classes/com/casic/model/DataReportParam.class b/target/classes/com/casic/model/DataReportParam.class
new file mode 100644
index 0000000..284c4f6
--- /dev/null
+++ b/target/classes/com/casic/model/DataReportParam.class
Binary files differ
diff --git a/target/classes/com/casic/model/DeviceOnlineParam.class b/target/classes/com/casic/model/DeviceOnlineParam.class
new file mode 100644
index 0000000..33c83e2
--- /dev/null
+++ b/target/classes/com/casic/model/DeviceOnlineParam.class
Binary files differ
diff --git a/target/classes/com/casic/model/HeartbeatParam.class b/target/classes/com/casic/model/HeartbeatParam.class
new file mode 100644
index 0000000..d6d6651
--- /dev/null
+++ b/target/classes/com/casic/model/HeartbeatParam.class
Binary files differ
diff --git a/target/classes/com/casic/model/ResponseData.class b/target/classes/com/casic/model/ResponseData.class
new file mode 100644
index 0000000..9d5cab1
--- /dev/null
+++ b/target/classes/com/casic/model/ResponseData.class
Binary files differ
diff --git a/target/classes/com/casic/service/DeviceDataService.class b/target/classes/com/casic/service/DeviceDataService.class
new file mode 100644
index 0000000..0807bfb
--- /dev/null
+++ b/target/classes/com/casic/service/DeviceDataService.class
Binary files differ
diff --git a/target/classes/com/casic/service/DeviceService.class b/target/classes/com/casic/service/DeviceService.class
new file mode 100644
index 0000000..765368a
--- /dev/null
+++ b/target/classes/com/casic/service/DeviceService.class
Binary files differ
diff --git a/target/classes/com/casic/service/impl/DeviceDataServiceImpl.class b/target/classes/com/casic/service/impl/DeviceDataServiceImpl.class
new file mode 100644
index 0000000..afcd9eb
--- /dev/null
+++ b/target/classes/com/casic/service/impl/DeviceDataServiceImpl.class
Binary files differ
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh
new file mode 100644
index 0000000..e14c4c7
--- /dev/null
+++ b/src/main/build/bin/start.sh
@@ -0,0 +1,2 @@
+java -jar ./lib/${project.build.finalName}.jar
+
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
index c55e37d..0887f1f 100644
--- a/src/main/java/com/casic/CasicApplication.java
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -3,8 +3,6 @@
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;
/**
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
index e5351c9..be0de6b 100644
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -1,14 +1,19 @@
package com.casic.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.casic.model.DataReportParam;
-import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
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;
+import java.util.Map;
+
+@Slf4j
@RequestMapping("/data")
@RestController
public class DeviceDataController {
@@ -19,19 +24,16 @@
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 String gasReceiver(@RequestBody Map map) {
+// log.info("---------"+JSON.toJSONString(map));
+// return "200";
+// }
@PostMapping("/gas/receiver")
- public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
- return dataService.heartBeatSave(heartbeatParam);
+ public ResponseData gasReceiver(@RequestBody DataReportParam dataReportParam) {
+ log.info("---------"+JSON.toJSONString(dataReportParam));
+ return dataService.gasReceiver(dataReportParam);
}
}
diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java
new file mode 100644
index 0000000..e5e9c8d
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmJobMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmJob;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface AlarmJobMapper extends BaseMapper {
+
+ @Select("SELECT MAX(jobcode) " +
+ "FROM alarm_job " +
+ "WHERE JOBCODE like '${jobcode}%'")
+ String getJobCodeMaxSerial(@Param("jobcode") String jobcode);
+
+}
diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
new file mode 100644
index 0000000..8da7dcb
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmRecords;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface AlarmRecordsMapper extends BaseMapper {
+
+
+ @Select("SELECT JOB_ID AS \"jobId\"\n " +
+ "FROM alarm_records\n " +
+ "WHERE DEVCODE = #{devcode}\n " +
+ "AND ALARM_CONTENT = #{MsgContent}\n " +
+ "AND STATUS='1'\n " +
+ "AND JOB_ID>0 ")
+ String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+
+ @Update(" UPDATE alarm_records\n" +
+ " SET STATUS='0'\n" +
+ " WHERE DEVCODE = #{devcode}\n" +
+ " AND ALARM_CONTENT = #{MsgContent}\n" +
+ " AND STATUS='1'")
+ Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
index 47e7cce..33ce14a 100644
--- a/src/main/java/com/casic/dao/DataGasMapper.java
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -1,9 +1,48 @@
package com.casic.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.casic.entity.DataGasReport;
+import com.casic.entity.DataGasDector;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+import java.util.Map;
@Mapper
-public interface DataGasMapper extends BaseMapper {
+public interface DataGasMapper extends BaseMapper {
+
+ @Select("select bd.id as \"deviceId\",bwi.WELL_CODE AS \"wellCode\" " +
+ "from bus_device_well bdw " +
+ "join (select id from bus_device where devcode=#{devcode}) bd ON bd.id=bdw.device_id " +
+ "join bus_well_info bwi ON bwi.id=bdw.well_id ")
+ Map getWellCode(@Param("devcode") String devcode);
+
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{onlineState} " +
+ "WHERE devcode=#{devcode} ")
+ void setOfflineByDevcode(@Param("devcode") String devcode,
+ @Param("onlineState") Integer onlineState);
+
+ @Select("SELECT level,high_value " +
+ "FROM alarm_level " +
+ "WHERE device_type=#{deviceType} ")
+ List> getAlarmLevelList(@Param("deviceType") Long deviceType);
+
+ @Select("SELECT devcode " +
+ "FROM data_gas_dector " +
+ "WHERE devcode=#{devcode} " +
+ "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+
+ "ORDER BY logtime DESC " +
+ "LIMIT 1")
+ String getLastData(@Param("minutes") String minutes,
+ @Param("devcode") String devcode);
+
+ @Select("SELECT alarm_content" +
+ "FROM BASE_alarm_content_type" +
+ "where device_type=#{deviceType}")
+ String getGasMsgContent(@Param("deviceType")Long deviceType);
+
+
}
diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
new file mode 100644
index 0000000..5131821
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
@@ -0,0 +1,59 @@
+package com.casic.dao.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmJobMapper;
+import com.casic.entity.AlarmJob;
+import org.springframework.stereotype.Component;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Component
+public class AlarmJobDao {
+
+ private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ private static Snowflake snowflake = new Snowflake(0, 2);
+// private static final Sn
+
+ @Resource
+ private AlarmJobMapper alarmJobMapper;
+
+ public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) {
+ AlarmJob alarmJob = new AlarmJob();
+ alarmJob.setId(snowflake.nextId());
+ alarmJob.setDevcode(devCode);
+ alarmJob.setWellCode(wellCode);
+ alarmJob.setJobStatus("0");
+ alarmJob.setCreateTime(new Date());
+ alarmJob.setJobcode(this.produceJobCode(devTypeName));
+ alarmJob.setJobType(jobType);
+ alarmJobMapper.insert(alarmJob);
+ return alarmJob;
+ }
+
+ /**
+ * 前缀+日期+4位流水号
+ *
+ * @param devTypeName
+ * @return
+ */
+ private String produceJobCode(String devTypeName) {
+ String pre = devTypeName;
+ String dataStr = sdf6.format(new Date());
+ String fix = this.getJobCodeMaxSerial(pre + dataStr);
+ return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001";
+ }
+
+
+ private String getJobCodeMaxSerial(String jobcode) {
+ String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode);
+ String fix = "";
+ if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) {
+ fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4);
+ }
+ return fix;
+ }
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
deleted file mode 100644
index c797e55..0000000
--- a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
+++ /dev/null
@@ -1,68 +0,0 @@
-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/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java
new file mode 100644
index 0000000..8a0f764
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmJob.java
@@ -0,0 +1,165 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 报警工单表
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_job")
+public class AlarmJob extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 工单编号
+ */
+ @TableField("JOBCODE")
+ private String jobcode;
+ /**
+ * 工单类型
+ */
+ @TableField("JOG_TYPE")
+ private String jobType;
+ /**
+ * 井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 工单创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+ /**
+ * 工单状态(0待处理,1待确认,2处理中,3完成)
+ */
+ @TableField("JOB_STATUS")
+ private String jobStatus;
+ /**
+ * 接单人员
+ */
+ @TableField("GET_JOB_PERSON")
+ private Long getJobPerson;
+ /**
+ * 接单时间
+ */
+ @TableField("GET_JOB_TIME")
+ private Date getJobTime;
+ /**
+ * 应接单时间
+ */
+ @TableField("SHOULD_GET_TIME")
+ private Date shouldGetTime;
+ /**
+ * 第一现场情况
+ */
+ @TableField("FIRST_STATE")
+ private String firstState;
+ /**
+ * 第一现场照片
+ */
+ @TableField("FIRST_STATE_PHOTOS")
+ private String firstStatePhotos;
+ /**
+ * 确认人员
+ */
+ @TableField("CONFIRM_JOB_PERSON")
+ private Long confirmJobPerson;
+ /**
+ * 确认时间
+ */
+ @TableField("CONFRIM_JOB_TIME")
+ private Date confrimJobTime;
+ /**
+ * 处理人员
+ */
+ @TableField("HANDLE_JOB_Person")
+ private Long handleJobPerson;
+ /**
+ * 处理时间
+ */
+ @TableField("HANDLE_JOB_TIME")
+ private Date handleJobTime;
+ /**
+ * 维护情况记录
+ */
+ @TableField("HANDLE_MESSAGE")
+ private String handleMessage;
+ /**
+ * 维护图片
+ */
+ @TableField("HANDLE_PHOTOS")
+ private String handlePhotos;
+ /**
+ * 工单流转记录
+ */
+ @TableField("FLOW")
+ private String flow;
+
+ @TableField("JOB_BELONG_TO")
+ private Long jobBelongTo;
+
+ @TableField("JOB_FLAG_DELAY")
+ private String jobFlagDelay;
+
+ @TableField("JOB_FLAG_1")
+ private String jobFlag1;
+
+ @TableField(exist = false)
+ private String alarmValue;
+
+ @TableField(exist = false)
+ private String alarmContentName;
+
+ @TableField(exist = false)
+ private Integer recordId;
+
+ @Override
+ public String toString() {
+ return "AlarmJob{" +
+ "id=" + id +
+ ", jobcode=" + jobcode +
+ ", jogType=" + jobType +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", createTime=" + createTime +
+ ", jobStatus=" + jobStatus +
+ ", getJobPerson=" + getJobPerson +
+ ", getJobTime=" + getJobTime +
+ ", firstState=" + firstState +
+ ", firstStatePhotos=" + firstStatePhotos +
+ ", confirmJobPerson=" + confirmJobPerson +
+ ", confrimJobTime=" + confrimJobTime +
+ ", handleJobPerson=" + handleJobPerson +
+ ", handleJobTime=" + handleJobTime +
+ ", handleMessage=" + handleMessage +
+ ", handlePhotos=" + handlePhotos +
+ ", flow=" + flow +
+ ", recordId=" + recordId +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java
new file mode 100644
index 0000000..88b0b26
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmRecords.java
@@ -0,0 +1,108 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ *
+ *
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_records")
+public class AlarmRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 设备ID
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 闸井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 告警类型
+ */
+ @TableField("ALARM_TYPE")
+ private String alarmType;
+ /**
+ * 告警内容
+ */
+ @TableField("ALARM_CONTENT")
+ private String alarmContent;
+ /**
+ * 告警数值
+ */
+ @TableField("ALARM_VALUE")
+ private String alarmValue;
+ /**
+ * 告警等级
+ */
+ @TableField("ALARM_LEVEL")
+ private Integer alarmLevel;
+ /**
+ * 告警详情
+ */
+ @TableField("ALARM_MSG")
+ private String alarmMessage;
+ /**
+ * 告警时间
+ */
+ @TableField("ALARM_TIME")
+ private Date alarmTime;
+ /**
+ * 告警状态
+ */
+ @TableField("STATUS")
+ private String status;
+ /**
+ * 工单编号
+ */
+ @TableField("JOB_ID")
+ private Long jobId;
+
+ @TableField(exist = false)
+ private Integer jobStatus;
+
+ @Override
+ public String toString() {
+ return "AlarmRecords{" +
+ "id=" + id +
+ ", deviceId=" + deviceId +
+ ", devcode=" + devcode +
+ ", wellCode=" + wellCode +
+ ", alarmType=" + alarmType +
+ ", alarmContent=" + alarmContent +
+ ", alarmValue=" + alarmValue +
+ ", alarmLevel=" + alarmLevel +
+ ", alarmMessage=" + alarmMessage +
+ ", alarmTime=" + alarmTime +
+ ", status=" + status +
+ ", jobId=" + jobId +
+ ", jobStatus=" + jobStatus +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/DataGasDector.java b/src/main/java/com/casic/entity/DataGasDector.java
new file mode 100644
index 0000000..537789a
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasDector.java
@@ -0,0 +1,42 @@
+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 DataGasDector {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ private String devcode;
+ private String wellCode;
+ private String strength;
+
+ private String descn;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
deleted file mode 100644
index c43ccdf..0000000
--- a/src/main/java/com/casic/entity/DataGasReport.java
+++ /dev/null
@@ -1,69 +0,0 @@
-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/entity/DeviceSatatus.java b/src/main/java/com/casic/entity/DeviceSatatus.java
new file mode 100644
index 0000000..bab7903
--- /dev/null
+++ b/src/main/java/com/casic/entity/DeviceSatatus.java
@@ -0,0 +1,19 @@
+package com.casic.entity;
+
+import lombok.Data;
+
+/**
+ * 不使用了
+ *
+ */
+@Data
+public class DeviceSatatus {
+ private String deviceId;
+ private String cell;
+ private String cellTs;
+ private String onlineState;
+ private String onlineTs;
+ private String lastDataId;
+ private String lastDataJson;
+ private String lastDataTs;
+}
diff --git a/src/main/java/com/casic/model/DataContentParam.java b/src/main/java/com/casic/model/DataContentParam.java
new file mode 100644
index 0000000..46d298a
--- /dev/null
+++ b/src/main/java/com/casic/model/DataContentParam.java
@@ -0,0 +1,19 @@
+package com.casic.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DataContentParam {
+ private String msg_type;
+ private String error_val;
+ private String ch_cnt;
+ private String erro_cnt;
+ private String alarm_low_cnt;
+ private String alarm_high_cnt;
+ private String offline_cnt;
+ private List rtd_val;
+ private List adc_val;
+ private List status_val;
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/model/DataReportParam.java b/src/main/java/com/casic/model/DataReportParam.java
index 082814c..754f330 100644
--- a/src/main/java/com/casic/model/DataReportParam.java
+++ b/src/main/java/com/casic/model/DataReportParam.java
@@ -11,25 +11,12 @@
*/
@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;
+ private String iotId;
+ private String requestId;
+ private Object checkFailedData;
+ private String productKey;
+ private String gmtCreate;
+ private String deviceName;
+ private Object items;
}
diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java
index d883fe4..457d710 100644
--- a/src/main/java/com/casic/service/DeviceDataService.java
+++ b/src/main/java/com/casic/service/DeviceDataService.java
@@ -3,25 +3,18 @@
import com.casic.model.DataReportParam;
import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
+import org.springframework.web.bind.annotation.RequestBody;
/**
* @author cz
* @date 2022
*/
public interface DeviceDataService {
-
/**
*
* @param dataReportParam
* @return
*/
- ResponseData DeviceDataCommit(DataReportParam dataReportParam);
-
- /**
- *
- * @param heartbeatParam
- * @return
- */
- ResponseData heartBeatSave(HeartbeatParam heartbeatParam);
+ ResponseData gasReceiver(DataReportParam dataReportParam);
}
diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
index 93f0685..e473f0c 100644
--- a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
+++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
@@ -1,58 +1,49 @@
package com.casic.service.impl;
-import com.casic.dao.impl.DeviceDataMapper;
+import com.alibaba.druid.util.StringUtils;
+import com.alibaba.fastjson.JSON;
import com.casic.model.*;
import com.casic.service.DeviceDataService;
+import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import java.util.Map;
+
/**
* @author cz
- * @date 2022-6-20
+ * @date 2022-9-26
*/
@Slf4j
@Service
public class DeviceDataServiceImpl implements DeviceDataService {
- @Autowired
- DeviceDataMapper deviceDataMapper;
+ private final NormalDataProcessor normalDataProcessor;
- /**
- * @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;
+ public DeviceDataServiceImpl(NormalDataProcessor normalDataProcessor) {
+ this.normalDataProcessor = normalDataProcessor;
}
- /**
- * @param heartbeatParam
- * @return
- */
- public ResponseData heartBeatSave(HeartbeatParam heartbeatParam) {
+ public ResponseData gasReceiver(DataReportParam dataReportParam) {
ResponseData responseData = new ResponseData();
try {
- deviceDataMapper.editDeviceData(heartbeatParam);
+ Map> updDataMap = new ObjectMapper().convertValue(dataReportParam.getItems(), Map.class);
+ DataContentParam dataContentParam = JSON.parseObject(updDataMap.get("updData").get("value"), DataContentParam.class);
+ Long uptime = Long.valueOf(String.valueOf(updDataMap.get("updData").get("time")));
+ if (StringUtils.isEmpty(dataReportParam.getDeviceName())) {
+ responseData.setCode(200);
+ responseData.setMessage("没有设备编号");
+ return responseData;
+ }
+ normalDataProcessor.normalDataProvider(dataContentParam, uptime, dataReportParam.getDeviceName());
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);
+ log.error("主题:设备数据上报出现错误,异常信息为{}", sqlex);
}
return responseData;
}
diff --git a/src/main/java/com/casic/service/impl/NormalDataProcessor.java b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
new file mode 100644
index 0000000..3f7630a
--- /dev/null
+++ b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
@@ -0,0 +1,164 @@
+package com.casic.service.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmRecordsMapper;
+import com.casic.dao.DataGasMapper;
+import com.casic.dao.impl.AlarmJobDao;
+import com.casic.entity.AlarmJob;
+import com.casic.entity.AlarmRecords;
+import com.casic.entity.DataGasDector;
+import com.casic.model.DataContentParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Component
+public class NormalDataProcessor {
+
+ public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ @Value("${casic.device.gas-dector.type}")
+ private Long deviceType;
+ @Value("${casic.device.gas-dector.minutes}")
+ private String minutes;
+ @Value("${casic.device.gas-dector.enable-local}")
+ private Boolean enableLocal;
+ @Resource
+ private DataGasMapper dataGasMapper;
+ @Autowired
+ private AlarmJobDao alarmJobDao;
+ @Resource
+ private AlarmRecordsMapper alarmRecordsMapper;
+ private static Snowflake snowflake = new Snowflake(0, 2);
+
+ public void normalDataProvider(DataContentParam dataReportParam, Long timeStamp, String devcode) {
+ Map gasMap = dataGasMapper.getWellCode(devcode);
+ if (ObjectUtils.isEmpty(gasMap)) {
+ log.info("没有该设备编号录入" + devcode);
+ if (enableLocal) {
+ return;
+ }
+ }
+ Boolean updateFlag = false;
+ if (ObjectUtils.isEmpty(dataGasMapper.getLastData(minutes, devcode))) {
+ updateFlag = this.saveNormalData(dataReportParam, timeStamp, devcode, gasMap);
+ }
+ this.dataTaskJudge(dataReportParam, devcode, timeStamp, gasMap, updateFlag);
+ return;
+ }
+
+ /**
+ * 自定义时间存库
+ *
+ * @param dataReportParam
+ * @param timeStamp
+ * @param devcode
+ * @param gasMap
+ */
+ private Boolean saveNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap) {
+ Boolean updateFlag = false;
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ List dataReportFilter = dataReportParam.getRtd_val().stream().filter(
+ data -> {
+ return data != -1;
+ }
+ ).collect(Collectors.toList());
+ if (dataReportFilter.size() > 0 && dataReportFilter.get(dataReportFilter.size() - 1) != 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 1);
+ updateFlag = true;
+ } else if (dataReportFilter.get(dataReportFilter.size() - 1) == 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 0);
+ }
+ dataReportFilter.forEach(
+ data -> {
+ if (data != 65535) {
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+ }
+ );
+ return updateFlag;
+ }
+
+ /**
+ * 报警就存库
+ *
+ * @param dataReportParam
+ * @param devcode
+ * @param timeStamp
+ * @param gasMap
+ */
+ private void dataTaskJudge(DataContentParam dataReportParam, String devcode, Long timeStamp, Map gasMap, Boolean updateFlag) {
+ List> alarmLevelList = dataGasMapper.getAlarmLevelList(deviceType);
+ String wellCode = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "";
+ Long deviceId = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? Long.valueOf(String.valueOf(gasMap.get("deviceId"))) : -1;
+ final String gasMsgContent=dataGasMapper.getGasMsgContent(deviceType);
+ dataReportParam.getRtd_val().stream().filter(
+ dataReport -> {
+ return dataReport != -1 && dataReport != 65535;
+ }
+ ).forEach(
+ dataReport -> {
+ for (Map alarmLevelMap : alarmLevelList) {
+ if (dataReport > Float.valueOf(String.valueOf(alarmLevelMap.get("high_value")))) {
+ AlarmRecords alarmRecord = new AlarmRecords();
+ alarmRecord.setId(snowflake.nextId());
+ alarmRecord.setDeviceId(deviceId);
+ alarmRecord.setDevcode(devcode);
+ alarmRecord.setWellCode(wellCode);
+ alarmRecord.setAlarmType("1"); // 业务报警
+ alarmRecord.setAlarmContent("燃气报警");
+ alarmRecord.setAlarmValue(String.valueOf(dataReport));
+ alarmRecord.setAlarmTime(new Date());
+ alarmRecord.setStatus("1");
+ alarmRecord.setAlarmLevel(Integer.valueOf(alarmLevelMap.get("level").toString()));
+ alarmRecord.setAlarmMessage("燃气报警");
+ String jobId = alarmRecordsMapper.isOldAlarmRecord(devcode, "燃气报警");
+ // 超出报警阈值 生成一条报警消息
+ if (!StringUtils.isEmpty(jobId)) {
+ alarmRecordsMapper.updateOldAlarmRecord(devcode, "燃气报警");
+ alarmRecord.setJobId(Long.valueOf(jobId));
+ } else {
+ AlarmJob alarmJob = alarmJobDao.saveData(devcode, wellCode, "RQZD", "1");
+ alarmRecord.setJobId(alarmJob.getId());
+ }
+ alarmRecordsMapper.insert(alarmRecord);
+ if (!updateFlag) {
+ alarmNormalData(dataReportParam, timeStamp, devcode, gasMap, dataReport);
+ }
+ break;
+ }
+ }
+ }
+ );
+ }
+
+ private void alarmNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap, Integer data) {
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+
+}
+
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index fac2afe..f8a06a6 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -1,40 +1,19 @@
server:
- port: 11556
+ port: 11320
################### 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
+ driver-class-name: org.postgresql.Driver
+ url: jdbc:postgresql://111.198.10.15:11209/smartwell_zq_cs
+ 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
- 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
+ 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
index 86411e6..ffc01e9 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -19,18 +19,11 @@
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
+ device:
+ gas-dector:
+ type: 101
+ minutes: 60
+ enable-local: false
+# type 可燃气体的设备类型
+# minutes: 燃气外协设备上传数据的分钟数
\ No newline at end of file
diff --git a/target/classes/application-dev.yml b/target/classes/application-dev.yml
new file mode 100644
index 0000000..fac2afe
--- /dev/null
+++ b/target/classes/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/target/classes/application-postgre.yml b/target/classes/application-postgre.yml
new file mode 100644
index 0000000..2b7f69c
--- /dev/null
+++ b/target/classes/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/target/classes/application.yml b/target/classes/application.yml
new file mode 100644
index 0000000..86411e6
--- /dev/null
+++ b/target/classes/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
diff --git a/target/classes/com/casic/CasicApplication.class b/target/classes/com/casic/CasicApplication.class
new file mode 100644
index 0000000..68c2f95
--- /dev/null
+++ b/target/classes/com/casic/CasicApplication.class
Binary files differ
diff --git a/target/classes/com/casic/controller/DeviceController.class b/target/classes/com/casic/controller/DeviceController.class
new file mode 100644
index 0000000..478d6ae
--- /dev/null
+++ b/target/classes/com/casic/controller/DeviceController.class
Binary files differ
diff --git a/target/classes/com/casic/controller/DeviceDataController.class b/target/classes/com/casic/controller/DeviceDataController.class
new file mode 100644
index 0000000..1f4400c
--- /dev/null
+++ b/target/classes/com/casic/controller/DeviceDataController.class
Binary files differ
diff --git a/target/classes/com/casic/dao/DataGasMapper.class b/target/classes/com/casic/dao/DataGasMapper.class
new file mode 100644
index 0000000..557d539
--- /dev/null
+++ b/target/classes/com/casic/dao/DataGasMapper.class
Binary files differ
diff --git a/target/classes/com/casic/dao/DeviceMapper.class b/target/classes/com/casic/dao/DeviceMapper.class
new file mode 100644
index 0000000..3ddcd2b
--- /dev/null
+++ b/target/classes/com/casic/dao/DeviceMapper.class
Binary files differ
diff --git a/target/classes/com/casic/dao/impl/DeviceDataMapper.class b/target/classes/com/casic/dao/impl/DeviceDataMapper.class
new file mode 100644
index 0000000..d73ed15
--- /dev/null
+++ b/target/classes/com/casic/dao/impl/DeviceDataMapper.class
Binary files differ
diff --git a/target/classes/com/casic/entity/DataGasReport.class b/target/classes/com/casic/entity/DataGasReport.class
new file mode 100644
index 0000000..a3dac78
--- /dev/null
+++ b/target/classes/com/casic/entity/DataGasReport.class
Binary files differ
diff --git a/target/classes/com/casic/model/DataReportParam.class b/target/classes/com/casic/model/DataReportParam.class
new file mode 100644
index 0000000..284c4f6
--- /dev/null
+++ b/target/classes/com/casic/model/DataReportParam.class
Binary files differ
diff --git a/target/classes/com/casic/model/DeviceOnlineParam.class b/target/classes/com/casic/model/DeviceOnlineParam.class
new file mode 100644
index 0000000..33c83e2
--- /dev/null
+++ b/target/classes/com/casic/model/DeviceOnlineParam.class
Binary files differ
diff --git a/target/classes/com/casic/model/HeartbeatParam.class b/target/classes/com/casic/model/HeartbeatParam.class
new file mode 100644
index 0000000..d6d6651
--- /dev/null
+++ b/target/classes/com/casic/model/HeartbeatParam.class
Binary files differ
diff --git a/target/classes/com/casic/model/ResponseData.class b/target/classes/com/casic/model/ResponseData.class
new file mode 100644
index 0000000..9d5cab1
--- /dev/null
+++ b/target/classes/com/casic/model/ResponseData.class
Binary files differ
diff --git a/target/classes/com/casic/service/DeviceDataService.class b/target/classes/com/casic/service/DeviceDataService.class
new file mode 100644
index 0000000..0807bfb
--- /dev/null
+++ b/target/classes/com/casic/service/DeviceDataService.class
Binary files differ
diff --git a/target/classes/com/casic/service/DeviceService.class b/target/classes/com/casic/service/DeviceService.class
new file mode 100644
index 0000000..765368a
--- /dev/null
+++ b/target/classes/com/casic/service/DeviceService.class
Binary files differ
diff --git a/target/classes/com/casic/service/impl/DeviceDataServiceImpl.class b/target/classes/com/casic/service/impl/DeviceDataServiceImpl.class
new file mode 100644
index 0000000..afcd9eb
--- /dev/null
+++ b/target/classes/com/casic/service/impl/DeviceDataServiceImpl.class
Binary files differ
diff --git a/target/classes/com/casic/service/impl/DeviceServiceImpl.class b/target/classes/com/casic/service/impl/DeviceServiceImpl.class
new file mode 100644
index 0000000..4ef6b15
--- /dev/null
+++ b/target/classes/com/casic/service/impl/DeviceServiceImpl.class
Binary files differ
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..814888c
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1664156118846
+
+
+ 1664156118846
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 74d7bd1..bf4cf7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
com.casic.sensor
sensor-transfer
1.0-SNAPSHOT
- war
+ jar
UTF-8
@@ -36,6 +36,13 @@
+ xyz.downgoon
+ snowflake
+ 1.0.0
+
+
+
+
org.springframework.boot
spring-boot-starter-web
2.1.3.RELEASE
@@ -118,6 +125,25 @@
+
+
+ src/main/resources
+
+
+ /config/*/*
+ /config/*-*.yml
+
+ true
+
+
+ src/main/resources
+
+ **/*.xml
+
+ true
+
+
+
\ No newline at end of file
diff --git a/src/main/build/bin/start.bat b/src/main/build/bin/start.bat
new file mode 100644
index 0000000..d858fb2
--- /dev/null
+++ b/src/main/build/bin/start.bat
@@ -0,0 +1,4 @@
+@echo off
+title ${project.build.finalName}
+java -jar ./lib/${project.build.finalName}.jar
+@pause
diff --git a/src/main/build/bin/start.sh b/src/main/build/bin/start.sh
new file mode 100644
index 0000000..e14c4c7
--- /dev/null
+++ b/src/main/build/bin/start.sh
@@ -0,0 +1,2 @@
+java -jar ./lib/${project.build.finalName}.jar
+
diff --git a/src/main/java/com/casic/CasicApplication.java b/src/main/java/com/casic/CasicApplication.java
index c55e37d..0887f1f 100644
--- a/src/main/java/com/casic/CasicApplication.java
+++ b/src/main/java/com/casic/CasicApplication.java
@@ -3,8 +3,6 @@
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;
/**
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
index e5351c9..be0de6b 100644
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ b/src/main/java/com/casic/controller/DeviceDataController.java
@@ -1,14 +1,19 @@
package com.casic.controller;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.casic.model.DataReportParam;
-import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
import com.casic.service.DeviceDataService;
+import lombok.extern.slf4j.Slf4j;
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;
+import java.util.Map;
+
+@Slf4j
@RequestMapping("/data")
@RestController
public class DeviceDataController {
@@ -19,19 +24,16 @@
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 String gasReceiver(@RequestBody Map map) {
+// log.info("---------"+JSON.toJSONString(map));
+// return "200";
+// }
@PostMapping("/gas/receiver")
- public ResponseData gasReceiver(@RequestBody HeartbeatParam heartbeatParam) {
- return dataService.heartBeatSave(heartbeatParam);
+ public ResponseData gasReceiver(@RequestBody DataReportParam dataReportParam) {
+ log.info("---------"+JSON.toJSONString(dataReportParam));
+ return dataService.gasReceiver(dataReportParam);
}
}
diff --git a/src/main/java/com/casic/dao/AlarmJobMapper.java b/src/main/java/com/casic/dao/AlarmJobMapper.java
new file mode 100644
index 0000000..e5e9c8d
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmJobMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmJob;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface AlarmJobMapper extends BaseMapper {
+
+ @Select("SELECT MAX(jobcode) " +
+ "FROM alarm_job " +
+ "WHERE JOBCODE like '${jobcode}%'")
+ String getJobCodeMaxSerial(@Param("jobcode") String jobcode);
+
+}
diff --git a/src/main/java/com/casic/dao/AlarmRecordsMapper.java b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
new file mode 100644
index 0000000..8da7dcb
--- /dev/null
+++ b/src/main/java/com/casic/dao/AlarmRecordsMapper.java
@@ -0,0 +1,28 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.entity.AlarmRecords;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface AlarmRecordsMapper extends BaseMapper {
+
+
+ @Select("SELECT JOB_ID AS \"jobId\"\n " +
+ "FROM alarm_records\n " +
+ "WHERE DEVCODE = #{devcode}\n " +
+ "AND ALARM_CONTENT = #{MsgContent}\n " +
+ "AND STATUS='1'\n " +
+ "AND JOB_ID>0 ")
+ String isOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+
+ @Update(" UPDATE alarm_records\n" +
+ " SET STATUS='0'\n" +
+ " WHERE DEVCODE = #{devcode}\n" +
+ " AND ALARM_CONTENT = #{MsgContent}\n" +
+ " AND STATUS='1'")
+ Integer updateOldAlarmRecord(@Param("devcode") String devcode, @Param("MsgContent") String MsgContent);
+}
diff --git a/src/main/java/com/casic/dao/DataGasMapper.java b/src/main/java/com/casic/dao/DataGasMapper.java
index 47e7cce..33ce14a 100644
--- a/src/main/java/com/casic/dao/DataGasMapper.java
+++ b/src/main/java/com/casic/dao/DataGasMapper.java
@@ -1,9 +1,48 @@
package com.casic.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.casic.entity.DataGasReport;
+import com.casic.entity.DataGasDector;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+import java.util.Map;
@Mapper
-public interface DataGasMapper extends BaseMapper {
+public interface DataGasMapper extends BaseMapper {
+
+ @Select("select bd.id as \"deviceId\",bwi.WELL_CODE AS \"wellCode\" " +
+ "from bus_device_well bdw " +
+ "join (select id from bus_device where devcode=#{devcode}) bd ON bd.id=bdw.device_id " +
+ "join bus_well_info bwi ON bwi.id=bdw.well_id ")
+ Map getWellCode(@Param("devcode") String devcode);
+
+ @Update("UPDATE bus_device " +
+ "SET ONLINE_STATE=#{onlineState} " +
+ "WHERE devcode=#{devcode} ")
+ void setOfflineByDevcode(@Param("devcode") String devcode,
+ @Param("onlineState") Integer onlineState);
+
+ @Select("SELECT level,high_value " +
+ "FROM alarm_level " +
+ "WHERE device_type=#{deviceType} ")
+ List> getAlarmLevelList(@Param("deviceType") Long deviceType);
+
+ @Select("SELECT devcode " +
+ "FROM data_gas_dector " +
+ "WHERE devcode=#{devcode} " +
+ "AND (EXTRACT(epoch FROM CAST(now() AS TIMESTAMPTZ))-EXTRACT(epoch FROM CAST(logtime AS TIMESTAMPTZ)))/60.0 < ${minutes} "+
+ "ORDER BY logtime DESC " +
+ "LIMIT 1")
+ String getLastData(@Param("minutes") String minutes,
+ @Param("devcode") String devcode);
+
+ @Select("SELECT alarm_content" +
+ "FROM BASE_alarm_content_type" +
+ "where device_type=#{deviceType}")
+ String getGasMsgContent(@Param("deviceType")Long deviceType);
+
+
}
diff --git a/src/main/java/com/casic/dao/impl/AlarmJobDao.java b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
new file mode 100644
index 0000000..5131821
--- /dev/null
+++ b/src/main/java/com/casic/dao/impl/AlarmJobDao.java
@@ -0,0 +1,59 @@
+package com.casic.dao.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmJobMapper;
+import com.casic.entity.AlarmJob;
+import org.springframework.stereotype.Component;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Component
+public class AlarmJobDao {
+
+ private static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ private static Snowflake snowflake = new Snowflake(0, 2);
+// private static final Sn
+
+ @Resource
+ private AlarmJobMapper alarmJobMapper;
+
+ public AlarmJob saveData(String devCode, String wellCode, String devTypeName, String jobType) {
+ AlarmJob alarmJob = new AlarmJob();
+ alarmJob.setId(snowflake.nextId());
+ alarmJob.setDevcode(devCode);
+ alarmJob.setWellCode(wellCode);
+ alarmJob.setJobStatus("0");
+ alarmJob.setCreateTime(new Date());
+ alarmJob.setJobcode(this.produceJobCode(devTypeName));
+ alarmJob.setJobType(jobType);
+ alarmJobMapper.insert(alarmJob);
+ return alarmJob;
+ }
+
+ /**
+ * 前缀+日期+4位流水号
+ *
+ * @param devTypeName
+ * @return
+ */
+ private String produceJobCode(String devTypeName) {
+ String pre = devTypeName;
+ String dataStr = sdf6.format(new Date());
+ String fix = this.getJobCodeMaxSerial(pre + dataStr);
+ return StringUtils.isEmpty(fix) ? pre + dataStr + String.format("%04d", Long.valueOf(StringUtils.isEmpty(fix)?"0":fix) + 1L) : pre + dataStr + "0001";
+ }
+
+
+ private String getJobCodeMaxSerial(String jobcode) {
+ String MaxSerialJobCode = alarmJobMapper.getJobCodeMaxSerial(jobcode);
+ String fix = "";
+ if (null != MaxSerialJobCode && MaxSerialJobCode.length() > 4) {
+ fix = MaxSerialJobCode.substring(MaxSerialJobCode.length() - 4);
+ }
+ return fix;
+ }
+}
diff --git a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java b/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
deleted file mode 100644
index c797e55..0000000
--- a/src/main/java/com/casic/dao/impl/DeviceDataMapper.java
+++ /dev/null
@@ -1,68 +0,0 @@
-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/AlarmJob.java b/src/main/java/com/casic/entity/AlarmJob.java
new file mode 100644
index 0000000..8a0f764
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmJob.java
@@ -0,0 +1,165 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 报警工单表
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_job")
+public class AlarmJob extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 工单编号
+ */
+ @TableField("JOBCODE")
+ private String jobcode;
+ /**
+ * 工单类型
+ */
+ @TableField("JOG_TYPE")
+ private String jobType;
+ /**
+ * 井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 工单创建时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+ /**
+ * 工单状态(0待处理,1待确认,2处理中,3完成)
+ */
+ @TableField("JOB_STATUS")
+ private String jobStatus;
+ /**
+ * 接单人员
+ */
+ @TableField("GET_JOB_PERSON")
+ private Long getJobPerson;
+ /**
+ * 接单时间
+ */
+ @TableField("GET_JOB_TIME")
+ private Date getJobTime;
+ /**
+ * 应接单时间
+ */
+ @TableField("SHOULD_GET_TIME")
+ private Date shouldGetTime;
+ /**
+ * 第一现场情况
+ */
+ @TableField("FIRST_STATE")
+ private String firstState;
+ /**
+ * 第一现场照片
+ */
+ @TableField("FIRST_STATE_PHOTOS")
+ private String firstStatePhotos;
+ /**
+ * 确认人员
+ */
+ @TableField("CONFIRM_JOB_PERSON")
+ private Long confirmJobPerson;
+ /**
+ * 确认时间
+ */
+ @TableField("CONFRIM_JOB_TIME")
+ private Date confrimJobTime;
+ /**
+ * 处理人员
+ */
+ @TableField("HANDLE_JOB_Person")
+ private Long handleJobPerson;
+ /**
+ * 处理时间
+ */
+ @TableField("HANDLE_JOB_TIME")
+ private Date handleJobTime;
+ /**
+ * 维护情况记录
+ */
+ @TableField("HANDLE_MESSAGE")
+ private String handleMessage;
+ /**
+ * 维护图片
+ */
+ @TableField("HANDLE_PHOTOS")
+ private String handlePhotos;
+ /**
+ * 工单流转记录
+ */
+ @TableField("FLOW")
+ private String flow;
+
+ @TableField("JOB_BELONG_TO")
+ private Long jobBelongTo;
+
+ @TableField("JOB_FLAG_DELAY")
+ private String jobFlagDelay;
+
+ @TableField("JOB_FLAG_1")
+ private String jobFlag1;
+
+ @TableField(exist = false)
+ private String alarmValue;
+
+ @TableField(exist = false)
+ private String alarmContentName;
+
+ @TableField(exist = false)
+ private Integer recordId;
+
+ @Override
+ public String toString() {
+ return "AlarmJob{" +
+ "id=" + id +
+ ", jobcode=" + jobcode +
+ ", jogType=" + jobType +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", createTime=" + createTime +
+ ", jobStatus=" + jobStatus +
+ ", getJobPerson=" + getJobPerson +
+ ", getJobTime=" + getJobTime +
+ ", firstState=" + firstState +
+ ", firstStatePhotos=" + firstStatePhotos +
+ ", confirmJobPerson=" + confirmJobPerson +
+ ", confrimJobTime=" + confrimJobTime +
+ ", handleJobPerson=" + handleJobPerson +
+ ", handleJobTime=" + handleJobTime +
+ ", handleMessage=" + handleMessage +
+ ", handlePhotos=" + handlePhotos +
+ ", flow=" + flow +
+ ", recordId=" + recordId +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/AlarmRecords.java b/src/main/java/com/casic/entity/AlarmRecords.java
new file mode 100644
index 0000000..88b0b26
--- /dev/null
+++ b/src/main/java/com/casic/entity/AlarmRecords.java
@@ -0,0 +1,108 @@
+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 com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ *
+ *
+ *
+ *
+ * @author casic123
+ * @since 2019-05-17
+ */
+@Data
+@TableName("alarm_records")
+public class AlarmRecords extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+ /**
+ * 设备ID
+ */
+ @TableField("DEVICE_ID")
+ private Long deviceId;
+ /**
+ * 设备编号
+ */
+ @TableField("DEVCODE")
+ private String devcode;
+ /**
+ * 闸井编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 告警类型
+ */
+ @TableField("ALARM_TYPE")
+ private String alarmType;
+ /**
+ * 告警内容
+ */
+ @TableField("ALARM_CONTENT")
+ private String alarmContent;
+ /**
+ * 告警数值
+ */
+ @TableField("ALARM_VALUE")
+ private String alarmValue;
+ /**
+ * 告警等级
+ */
+ @TableField("ALARM_LEVEL")
+ private Integer alarmLevel;
+ /**
+ * 告警详情
+ */
+ @TableField("ALARM_MSG")
+ private String alarmMessage;
+ /**
+ * 告警时间
+ */
+ @TableField("ALARM_TIME")
+ private Date alarmTime;
+ /**
+ * 告警状态
+ */
+ @TableField("STATUS")
+ private String status;
+ /**
+ * 工单编号
+ */
+ @TableField("JOB_ID")
+ private Long jobId;
+
+ @TableField(exist = false)
+ private Integer jobStatus;
+
+ @Override
+ public String toString() {
+ return "AlarmRecords{" +
+ "id=" + id +
+ ", deviceId=" + deviceId +
+ ", devcode=" + devcode +
+ ", wellCode=" + wellCode +
+ ", alarmType=" + alarmType +
+ ", alarmContent=" + alarmContent +
+ ", alarmValue=" + alarmValue +
+ ", alarmLevel=" + alarmLevel +
+ ", alarmMessage=" + alarmMessage +
+ ", alarmTime=" + alarmTime +
+ ", status=" + status +
+ ", jobId=" + jobId +
+ ", jobStatus=" + jobStatus +
+ "}";
+ }
+}
diff --git a/src/main/java/com/casic/entity/DataGasDector.java b/src/main/java/com/casic/entity/DataGasDector.java
new file mode 100644
index 0000000..537789a
--- /dev/null
+++ b/src/main/java/com/casic/entity/DataGasDector.java
@@ -0,0 +1,42 @@
+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 DataGasDector {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ private String devcode;
+ private String wellCode;
+ private String strength;
+
+ private String descn;
+ /**
+ * --信号与干扰加噪声比
+ */
+ private String sinr;
+ /**
+ * --参考信号接收功率
+ */
+ private String rsrp;
+ /**
+ * --物理小区标识
+ */
+ private String pci;
+ private Date uptime;
+ private Date logtime;
+}
diff --git a/src/main/java/com/casic/entity/DataGasReport.java b/src/main/java/com/casic/entity/DataGasReport.java
deleted file mode 100644
index c43ccdf..0000000
--- a/src/main/java/com/casic/entity/DataGasReport.java
+++ /dev/null
@@ -1,69 +0,0 @@
-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/entity/DeviceSatatus.java b/src/main/java/com/casic/entity/DeviceSatatus.java
new file mode 100644
index 0000000..bab7903
--- /dev/null
+++ b/src/main/java/com/casic/entity/DeviceSatatus.java
@@ -0,0 +1,19 @@
+package com.casic.entity;
+
+import lombok.Data;
+
+/**
+ * 不使用了
+ *
+ */
+@Data
+public class DeviceSatatus {
+ private String deviceId;
+ private String cell;
+ private String cellTs;
+ private String onlineState;
+ private String onlineTs;
+ private String lastDataId;
+ private String lastDataJson;
+ private String lastDataTs;
+}
diff --git a/src/main/java/com/casic/model/DataContentParam.java b/src/main/java/com/casic/model/DataContentParam.java
new file mode 100644
index 0000000..46d298a
--- /dev/null
+++ b/src/main/java/com/casic/model/DataContentParam.java
@@ -0,0 +1,19 @@
+package com.casic.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DataContentParam {
+ private String msg_type;
+ private String error_val;
+ private String ch_cnt;
+ private String erro_cnt;
+ private String alarm_low_cnt;
+ private String alarm_high_cnt;
+ private String offline_cnt;
+ private List rtd_val;
+ private List adc_val;
+ private List status_val;
+}
\ No newline at end of file
diff --git a/src/main/java/com/casic/model/DataReportParam.java b/src/main/java/com/casic/model/DataReportParam.java
index 082814c..754f330 100644
--- a/src/main/java/com/casic/model/DataReportParam.java
+++ b/src/main/java/com/casic/model/DataReportParam.java
@@ -11,25 +11,12 @@
*/
@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;
+ private String iotId;
+ private String requestId;
+ private Object checkFailedData;
+ private String productKey;
+ private String gmtCreate;
+ private String deviceName;
+ private Object items;
}
diff --git a/src/main/java/com/casic/service/DeviceDataService.java b/src/main/java/com/casic/service/DeviceDataService.java
index d883fe4..457d710 100644
--- a/src/main/java/com/casic/service/DeviceDataService.java
+++ b/src/main/java/com/casic/service/DeviceDataService.java
@@ -3,25 +3,18 @@
import com.casic.model.DataReportParam;
import com.casic.model.HeartbeatParam;
import com.casic.model.ResponseData;
+import org.springframework.web.bind.annotation.RequestBody;
/**
* @author cz
* @date 2022
*/
public interface DeviceDataService {
-
/**
*
* @param dataReportParam
* @return
*/
- ResponseData DeviceDataCommit(DataReportParam dataReportParam);
-
- /**
- *
- * @param heartbeatParam
- * @return
- */
- ResponseData heartBeatSave(HeartbeatParam heartbeatParam);
+ ResponseData gasReceiver(DataReportParam dataReportParam);
}
diff --git a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
index 93f0685..e473f0c 100644
--- a/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
+++ b/src/main/java/com/casic/service/impl/DeviceDataServiceImpl.java
@@ -1,58 +1,49 @@
package com.casic.service.impl;
-import com.casic.dao.impl.DeviceDataMapper;
+import com.alibaba.druid.util.StringUtils;
+import com.alibaba.fastjson.JSON;
import com.casic.model.*;
import com.casic.service.DeviceDataService;
+import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
+import java.util.Map;
+
/**
* @author cz
- * @date 2022-6-20
+ * @date 2022-9-26
*/
@Slf4j
@Service
public class DeviceDataServiceImpl implements DeviceDataService {
- @Autowired
- DeviceDataMapper deviceDataMapper;
+ private final NormalDataProcessor normalDataProcessor;
- /**
- * @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;
+ public DeviceDataServiceImpl(NormalDataProcessor normalDataProcessor) {
+ this.normalDataProcessor = normalDataProcessor;
}
- /**
- * @param heartbeatParam
- * @return
- */
- public ResponseData heartBeatSave(HeartbeatParam heartbeatParam) {
+ public ResponseData gasReceiver(DataReportParam dataReportParam) {
ResponseData responseData = new ResponseData();
try {
- deviceDataMapper.editDeviceData(heartbeatParam);
+ Map> updDataMap = new ObjectMapper().convertValue(dataReportParam.getItems(), Map.class);
+ DataContentParam dataContentParam = JSON.parseObject(updDataMap.get("updData").get("value"), DataContentParam.class);
+ Long uptime = Long.valueOf(String.valueOf(updDataMap.get("updData").get("time")));
+ if (StringUtils.isEmpty(dataReportParam.getDeviceName())) {
+ responseData.setCode(200);
+ responseData.setMessage("没有设备编号");
+ return responseData;
+ }
+ normalDataProcessor.normalDataProvider(dataContentParam, uptime, dataReportParam.getDeviceName());
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);
+ log.error("主题:设备数据上报出现错误,异常信息为{}", sqlex);
}
return responseData;
}
diff --git a/src/main/java/com/casic/service/impl/NormalDataProcessor.java b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
new file mode 100644
index 0000000..3f7630a
--- /dev/null
+++ b/src/main/java/com/casic/service/impl/NormalDataProcessor.java
@@ -0,0 +1,164 @@
+package com.casic.service.impl;
+
+import com.alibaba.druid.util.StringUtils;
+import com.casic.dao.AlarmRecordsMapper;
+import com.casic.dao.DataGasMapper;
+import com.casic.dao.impl.AlarmJobDao;
+import com.casic.entity.AlarmJob;
+import com.casic.entity.AlarmRecords;
+import com.casic.entity.DataGasDector;
+import com.casic.model.DataContentParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+import xyz.downgoon.snowflake.Snowflake;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Component
+public class NormalDataProcessor {
+
+ public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
+
+ @Value("${casic.device.gas-dector.type}")
+ private Long deviceType;
+ @Value("${casic.device.gas-dector.minutes}")
+ private String minutes;
+ @Value("${casic.device.gas-dector.enable-local}")
+ private Boolean enableLocal;
+ @Resource
+ private DataGasMapper dataGasMapper;
+ @Autowired
+ private AlarmJobDao alarmJobDao;
+ @Resource
+ private AlarmRecordsMapper alarmRecordsMapper;
+ private static Snowflake snowflake = new Snowflake(0, 2);
+
+ public void normalDataProvider(DataContentParam dataReportParam, Long timeStamp, String devcode) {
+ Map gasMap = dataGasMapper.getWellCode(devcode);
+ if (ObjectUtils.isEmpty(gasMap)) {
+ log.info("没有该设备编号录入" + devcode);
+ if (enableLocal) {
+ return;
+ }
+ }
+ Boolean updateFlag = false;
+ if (ObjectUtils.isEmpty(dataGasMapper.getLastData(minutes, devcode))) {
+ updateFlag = this.saveNormalData(dataReportParam, timeStamp, devcode, gasMap);
+ }
+ this.dataTaskJudge(dataReportParam, devcode, timeStamp, gasMap, updateFlag);
+ return;
+ }
+
+ /**
+ * 自定义时间存库
+ *
+ * @param dataReportParam
+ * @param timeStamp
+ * @param devcode
+ * @param gasMap
+ */
+ private Boolean saveNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap) {
+ Boolean updateFlag = false;
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ List dataReportFilter = dataReportParam.getRtd_val().stream().filter(
+ data -> {
+ return data != -1;
+ }
+ ).collect(Collectors.toList());
+ if (dataReportFilter.size() > 0 && dataReportFilter.get(dataReportFilter.size() - 1) != 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 1);
+ updateFlag = true;
+ } else if (dataReportFilter.get(dataReportFilter.size() - 1) == 65535) {
+ dataGasMapper.setOfflineByDevcode(devcode, 0);
+ }
+ dataReportFilter.forEach(
+ data -> {
+ if (data != 65535) {
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+ }
+ );
+ return updateFlag;
+ }
+
+ /**
+ * 报警就存库
+ *
+ * @param dataReportParam
+ * @param devcode
+ * @param timeStamp
+ * @param gasMap
+ */
+ private void dataTaskJudge(DataContentParam dataReportParam, String devcode, Long timeStamp, Map gasMap, Boolean updateFlag) {
+ List> alarmLevelList = dataGasMapper.getAlarmLevelList(deviceType);
+ String wellCode = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "";
+ Long deviceId = !ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? Long.valueOf(String.valueOf(gasMap.get("deviceId"))) : -1;
+ final String gasMsgContent=dataGasMapper.getGasMsgContent(deviceType);
+ dataReportParam.getRtd_val().stream().filter(
+ dataReport -> {
+ return dataReport != -1 && dataReport != 65535;
+ }
+ ).forEach(
+ dataReport -> {
+ for (Map alarmLevelMap : alarmLevelList) {
+ if (dataReport > Float.valueOf(String.valueOf(alarmLevelMap.get("high_value")))) {
+ AlarmRecords alarmRecord = new AlarmRecords();
+ alarmRecord.setId(snowflake.nextId());
+ alarmRecord.setDeviceId(deviceId);
+ alarmRecord.setDevcode(devcode);
+ alarmRecord.setWellCode(wellCode);
+ alarmRecord.setAlarmType("1"); // 业务报警
+ alarmRecord.setAlarmContent("燃气报警");
+ alarmRecord.setAlarmValue(String.valueOf(dataReport));
+ alarmRecord.setAlarmTime(new Date());
+ alarmRecord.setStatus("1");
+ alarmRecord.setAlarmLevel(Integer.valueOf(alarmLevelMap.get("level").toString()));
+ alarmRecord.setAlarmMessage("燃气报警");
+ String jobId = alarmRecordsMapper.isOldAlarmRecord(devcode, "燃气报警");
+ // 超出报警阈值 生成一条报警消息
+ if (!StringUtils.isEmpty(jobId)) {
+ alarmRecordsMapper.updateOldAlarmRecord(devcode, "燃气报警");
+ alarmRecord.setJobId(Long.valueOf(jobId));
+ } else {
+ AlarmJob alarmJob = alarmJobDao.saveData(devcode, wellCode, "RQZD", "1");
+ alarmRecord.setJobId(alarmJob.getId());
+ }
+ alarmRecordsMapper.insert(alarmRecord);
+ if (!updateFlag) {
+ alarmNormalData(dataReportParam, timeStamp, devcode, gasMap, dataReport);
+ }
+ break;
+ }
+ }
+ }
+ );
+ }
+
+ private void alarmNormalData(DataContentParam dataReportParam, Long timeStamp, String devcode, Map gasMap, Integer data) {
+ DataGasDector dataGasDector = new DataGasDector();
+ dataGasDector.setDevcode(devcode);
+ dataGasDector.setWellCode(!ObjectUtils.isEmpty(gasMap) && gasMap.containsKey("wellCode") ? gasMap.get("wellCode") : "");
+ dataGasDector.setLogtime(new Date());
+ dataGasDector.setUptime(new Date(timeStamp));
+ dataGasDector.setDescn(dataReportParam.getMsg_type());
+ dataGasDector.setStrength(String.valueOf(data));
+ dataGasMapper.insert(dataGasDector);
+ }
+
+}
+
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index fac2afe..f8a06a6 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -1,40 +1,19 @@
server:
- port: 11556
+ port: 11320
################### 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
+ driver-class-name: org.postgresql.Driver
+ url: jdbc:postgresql://111.198.10.15:11209/smartwell_zq_cs
+ 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
- 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
+ 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
index 86411e6..ffc01e9 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -19,18 +19,11 @@
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
+ device:
+ gas-dector:
+ type: 101
+ minutes: 60
+ enable-local: false
+# type 可燃气体的设备类型
+# minutes: 燃气外协设备上传数据的分钟数
\ No newline at end of file
diff --git a/target/classes/application-dev.yml b/target/classes/application-dev.yml
new file mode 100644
index 0000000..fac2afe
--- /dev/null
+++ b/target/classes/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/target/classes/application-postgre.yml b/target/classes/application-postgre.yml
new file mode 100644
index 0000000..2b7f69c
--- /dev/null
+++ b/target/classes/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/target/classes/application.yml b/target/classes/application.yml
new file mode 100644
index 0000000..86411e6
--- /dev/null
+++ b/target/classes/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
diff --git a/target/classes/com/casic/CasicApplication.class b/target/classes/com/casic/CasicApplication.class
new file mode 100644
index 0000000..68c2f95
--- /dev/null
+++ b/target/classes/com/casic/CasicApplication.class
Binary files differ
diff --git a/target/classes/com/casic/controller/DeviceController.class b/target/classes/com/casic/controller/DeviceController.class
new file mode 100644
index 0000000..478d6ae
--- /dev/null
+++ b/target/classes/com/casic/controller/DeviceController.class
Binary files differ
diff --git a/target/classes/com/casic/controller/DeviceDataController.class b/target/classes/com/casic/controller/DeviceDataController.class
new file mode 100644
index 0000000..1f4400c
--- /dev/null
+++ b/target/classes/com/casic/controller/DeviceDataController.class
Binary files differ
diff --git a/target/classes/com/casic/dao/DataGasMapper.class b/target/classes/com/casic/dao/DataGasMapper.class
new file mode 100644
index 0000000..557d539
--- /dev/null
+++ b/target/classes/com/casic/dao/DataGasMapper.class
Binary files differ
diff --git a/target/classes/com/casic/dao/DeviceMapper.class b/target/classes/com/casic/dao/DeviceMapper.class
new file mode 100644
index 0000000..3ddcd2b
--- /dev/null
+++ b/target/classes/com/casic/dao/DeviceMapper.class
Binary files differ
diff --git a/target/classes/com/casic/dao/impl/DeviceDataMapper.class b/target/classes/com/casic/dao/impl/DeviceDataMapper.class
new file mode 100644
index 0000000..d73ed15
--- /dev/null
+++ b/target/classes/com/casic/dao/impl/DeviceDataMapper.class
Binary files differ
diff --git a/target/classes/com/casic/entity/DataGasReport.class b/target/classes/com/casic/entity/DataGasReport.class
new file mode 100644
index 0000000..a3dac78
--- /dev/null
+++ b/target/classes/com/casic/entity/DataGasReport.class
Binary files differ
diff --git a/target/classes/com/casic/model/DataReportParam.class b/target/classes/com/casic/model/DataReportParam.class
new file mode 100644
index 0000000..284c4f6
--- /dev/null
+++ b/target/classes/com/casic/model/DataReportParam.class
Binary files differ
diff --git a/target/classes/com/casic/model/DeviceOnlineParam.class b/target/classes/com/casic/model/DeviceOnlineParam.class
new file mode 100644
index 0000000..33c83e2
--- /dev/null
+++ b/target/classes/com/casic/model/DeviceOnlineParam.class
Binary files differ
diff --git a/target/classes/com/casic/model/HeartbeatParam.class b/target/classes/com/casic/model/HeartbeatParam.class
new file mode 100644
index 0000000..d6d6651
--- /dev/null
+++ b/target/classes/com/casic/model/HeartbeatParam.class
Binary files differ
diff --git a/target/classes/com/casic/model/ResponseData.class b/target/classes/com/casic/model/ResponseData.class
new file mode 100644
index 0000000..9d5cab1
--- /dev/null
+++ b/target/classes/com/casic/model/ResponseData.class
Binary files differ
diff --git a/target/classes/com/casic/service/DeviceDataService.class b/target/classes/com/casic/service/DeviceDataService.class
new file mode 100644
index 0000000..0807bfb
--- /dev/null
+++ b/target/classes/com/casic/service/DeviceDataService.class
Binary files differ
diff --git a/target/classes/com/casic/service/DeviceService.class b/target/classes/com/casic/service/DeviceService.class
new file mode 100644
index 0000000..765368a
--- /dev/null
+++ b/target/classes/com/casic/service/DeviceService.class
Binary files differ
diff --git a/target/classes/com/casic/service/impl/DeviceDataServiceImpl.class b/target/classes/com/casic/service/impl/DeviceDataServiceImpl.class
new file mode 100644
index 0000000..afcd9eb
--- /dev/null
+++ b/target/classes/com/casic/service/impl/DeviceDataServiceImpl.class
Binary files differ
diff --git a/target/classes/com/casic/service/impl/DeviceServiceImpl.class b/target/classes/com/casic/service/impl/DeviceServiceImpl.class
new file mode 100644
index 0000000..4ef6b15
--- /dev/null
+++ b/target/classes/com/casic/service/impl/DeviceServiceImpl.class
Binary files differ
diff --git a/target/classes/com/casic/util/ConestUtil.class b/target/classes/com/casic/util/ConestUtil.class
new file mode 100644
index 0000000..cafcba6
--- /dev/null
+++ b/target/classes/com/casic/util/ConestUtil.class
Binary files differ