diff --git a/sec-beidou-fwd/pom.xml b/sec-beidou-fwd/pom.xml
index 1c56e2f1..031a6412 100644
--- a/sec-beidou-fwd/pom.xml
+++ b/sec-beidou-fwd/pom.xml
@@ -114,15 +114,7 @@
-
- org.apache.maven.plugins
- maven-compiler-plugin
- 3.8.1
-
- 11
- 11
-
-
+
diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/GnssSingleBufferServiceImpl.java b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/GnssSingleBufferServiceImpl.java
index e49b92d8..44b7295d 100644
--- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/GnssSingleBufferServiceImpl.java
+++ b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/service/GnssSingleBufferServiceImpl.java
@@ -1,5 +1,6 @@
package com.imdroid.sideslope.service;
+import com.imdroid.common.util.ThreadManager;
import com.imdroid.secapi.dto.GnssSingleData;
import com.imdroid.secapi.dto.GnssSingleDataMapper;
import org.slf4j.Logger;
@@ -32,7 +33,6 @@ public class GnssSingleBufferServiceImpl implements GnssSingleBufferService {
buffer.add(data);
if (buffer.size() >= BUFFER_SIZE) {
// 溢出时直接保存
- // 此处暂定,但很有必要引入一个线程来保存,避免阻塞主线程
flush();
}
}
@@ -48,12 +48,19 @@ public class GnssSingleBufferServiceImpl implements GnssSingleBufferService {
try {
List batchList = new ArrayList<>(buffer);
buffer.clear();
- // 由于每秒写数据库操作频繁,这里采用批量保存的方式
- saveBatch(batchList);
- logger.debug("批量插入{}条数据成功", batchList.size());
+ // 数据库操作异步执行,不阻塞主线程
+ ThreadManager.getSingleThreadPool("gnss-single-save").submit(() -> {
+ try {
+ saveBatch(batchList);
+ logger.debug("批量插入{}条数据成功", batchList.size());
+ } catch (Exception e) {
+ logger.error("批量插入数据失败", e);
+ }
+ });
+
} catch (Exception e) {
- logger.error("批量插入数据失败", e);
+ logger.error("线程创建失败", e);
throw e;
}
}
diff --git a/sec-beidou-rtcm/src/main/resources/application.properties b/sec-beidou-rtcm/src/main/resources/application.properties
index 05977793..0210c779 100644
--- a/sec-beidou-rtcm/src/main/resources/application.properties
+++ b/sec-beidou-rtcm/src/main/resources/application.properties
@@ -33,4 +33,6 @@ mybatis-plus.configuration.map-underscore-to-camel-case=false
xfz.server.host = 171.106.48.63
xfz.server.port = 52000
-xfz.server.data.send = false
\ No newline at end of file
+xfz.server.data.send = false
+
+warning.log.directory=./log
\ No newline at end of file
diff --git a/sec-beidou-rtcm/src/main/resources/logback.xml b/sec-beidou-rtcm/src/main/resources/logback.xml
index 1742b9e7..f8735b8b 100644
--- a/sec-beidou-rtcm/src/main/resources/logback.xml
+++ b/sec-beidou-rtcm/src/main/resources/logback.xml
@@ -20,7 +20,7 @@
-
+
diff --git a/sec-beidou/pom.xml b/sec-beidou/pom.xml
index d14c4b5e..ba7c6cf7 100644
--- a/sec-beidou/pom.xml
+++ b/sec-beidou/pom.xml
@@ -155,7 +155,7 @@
- org.apache.maven.pluginsmaven-compiler-plugin1111
+
diff --git a/sec-beidou/src/main/java/com/imdroid/beidou/controller/GnssSingleDataController.java b/sec-beidou/src/main/java/com/imdroid/beidou/controller/GnssSingleDataController.java
index 4c4f2cd5..2ddaa671 100644
--- a/sec-beidou/src/main/java/com/imdroid/beidou/controller/GnssSingleDataController.java
+++ b/sec-beidou/src/main/java/com/imdroid/beidou/controller/GnssSingleDataController.java
@@ -12,6 +12,8 @@ import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.time.Duration;
import java.time.LocalDateTime;
@@ -80,6 +82,11 @@ public class GnssSingleDataController extends BasicController implements CommonE
return this.pageList(session, page, limit, searchParams);
}
+ @RequestMapping("/gnss/data/single/export")
+ @ResponseBody
+ public void exportData(HttpSession session, HttpServletRequest request, HttpServletResponse response) throws Exception {
+ this.export(session, request, response);
+ }
@Override
public Class getEntityClass() {
diff --git a/sec-beidou/src/main/resources/application.properties b/sec-beidou/src/main/resources/application.properties
index 22c57f7c..b458234c 100644
--- a/sec-beidou/src/main/resources/application.properties
+++ b/sec-beidou/src/main/resources/application.properties
@@ -46,3 +46,5 @@ aliyun.oss.accessKey = LTAI4G6hmpX7h9hQvUnwKWxj
aliyun.oss.accessSecret = GHVzHKLLor8i5ZR1qyeoi4KMf3mjHb
aliyun.oss.bucket = imdroid-device-management
aliyun.oss.publicReadUrl = https://imdroid-device-management.oss-cn-shanghai.aliyuncs.com
+
+warning.log.directory=./log
\ No newline at end of file
diff --git a/sec-beidou/src/main/resources/db/schema.sql b/sec-beidou/src/main/resources/db/schema.sql
index d35646a3..3dc7f2dd 100644
--- a/sec-beidou/src/main/resources/db/schema.sql
+++ b/sec-beidou/src/main/resources/db/schema.sql
@@ -67,6 +67,7 @@ CREATE TABLE IF NOT EXISTS `gnssdevices` (
`appver` varchar(16) DEFAULT NULL COMMENT '固件版本',
`imei` varchar(16) DEFAULT NULL,
`model` smallint DEFAULT 0,
+ `loggingmode` smallint DEFAULT 0 COMMENT '日志模式: 0-精简模式(仅D3F0和D3F2), 1-完整模式',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
@@ -320,3 +321,17 @@ CREATE TABLE IF NOT EXISTS `ApiKey` (
`tenantname` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+CREATE TABLE IF NOT EXISTS `gnssdevicesinglerecords` (
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
+ `deviceid` varchar(64) NOT NULL COMMENT '设备ID',
+ `createtime` datetime(3) NOT NULL COMMENT '创建时间',
+ `model` smallint NOT NULL COMMENT '设备型号: 0-F9P(G505), 1-博通(G510)',
+ `x` double NOT NULL COMMENT 'GGA时是latitude, ECEF时是x',
+ `y` double NOT NULL COMMENT 'GGA时是longitude, ECEF时是y',
+ `z` double NOT NULL COMMENT 'GGA时是altitude, ECEF时是z',
+ `status` int NOT NULL DEFAULT '0' COMMENT 'GGA: 0初始化,1单点定位,2码差分,3无效PPS,4固定解,5浮点解,6估算,7人工固定,8模拟,9WAAS差分; ECEF: 0无B562,1浮点解,2固定解',
+ PRIMARY KEY (`id`),
+ KEY `idx_deviceid_createtime` (`deviceid`,`createtime`),
+ KEY `idx_createtime` (`createtime`)
+) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='GNSS单次解算记录表';
\ No newline at end of file
diff --git a/sec-beidou/src/main/resources/templates/page/gnss_single_data.html b/sec-beidou/src/main/resources/templates/page/gnss_single_data.html
index 3555a637..3def2e9f 100644
--- a/sec-beidou/src/main/resources/templates/page/gnss_single_data.html
+++ b/sec-beidou/src/main/resources/templates/page/gnss_single_data.html
@@ -149,7 +149,7 @@
// 监听导出操作
form.on('submit(data-export-btn)', function (data) {
var result = $('#searchFrm').serialize();
- var u = "/gnss/data/calc/export?" + result;
+ var u = "/gnss/data/single/export?" + result;
window.open(u, "_blank");
return false;
});
diff --git a/sec-common/src/main/java/com/imdroid/common/util/WarningLogExecutor.java b/sec-common/src/main/java/com/imdroid/common/util/WarningLogExecutor.java
index feaf22bc..f2e6e47b 100644
--- a/sec-common/src/main/java/com/imdroid/common/util/WarningLogExecutor.java
+++ b/sec-common/src/main/java/com/imdroid/common/util/WarningLogExecutor.java
@@ -8,6 +8,7 @@ import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
+import java.util.stream.Stream;
public class WarningLogExecutor {
@@ -32,14 +33,15 @@ public class WarningLogExecutor {
initializeWarningFile(warningFile, keyword, warningTypeName);
}
- // 找到日志文件
- List logFiles = Files.list(Paths.get(logDirectory))
- .filter(Files::isRegularFile)
- .filter(path -> path.getFileName().toString().matches("sideslopertcm(\\.\\d{4}-\\d{2}-\\d{2}\\.\\d+)?\\.log"))
- .collect(Collectors.toList());
+ try (Stream logFilesStream = Files.list(Paths.get(logDirectory))) {
+ List logFiles = logFilesStream
+ .filter(Files::isRegularFile)
+ .filter(path -> path.getFileName().toString().matches("sideslopertcm(\\.\\d{4}-\\d{2}-\\d{2}\\.\\d+)?\\.log"))
+ .collect(Collectors.toList());
- for (Path logFile : logFiles) {
- executor.submit(() -> processFile(logFile, keyword, warningTypeName, warningFile));
+ for (Path logFile : logFiles) {
+ executor.submit(() -> processFile(logFile, keyword, warningFile));
+ }
}
} catch (IOException e) {
e.printStackTrace();
@@ -67,7 +69,7 @@ public class WarningLogExecutor {
}
}
- private void processFile(Path logFile, String keyword, String warningTypeName, Path warningFile) {
+ private void processFile(Path logFile, String keyword, Path warningFile) {
try (BufferedReader reader = Files.newBufferedReader(logFile);
BufferedWriter writer = Files.newBufferedWriter(warningFile,
StandardOpenOption.CREATE, StandardOpenOption.APPEND)) {
diff --git a/sec-test-device/pom.xml b/sec-test-device/pom.xml
index 271a8f75..a3596c3d 100644
--- a/sec-test-device/pom.xml
+++ b/sec-test-device/pom.xml
@@ -100,14 +100,7 @@
-
- org.apache.maven.plugins
- maven-compiler-plugin
-
- 11
- 11
-
-
+
diff --git a/sec-test-device/src/main/resources/application.properties b/sec-test-device/src/main/resources/application.properties
index 9ac62967..fa848559 100644
--- a/sec-test-device/src/main/resources/application.properties
+++ b/sec-test-device/src/main/resources/application.properties
@@ -20,3 +20,5 @@ app.format.time = HH:mm:ss
app.format.datetime = yyyy-MM-dd HH:mm:ss
mybatis-plus.configuration.map-underscore-to-camel-case=false
+
+netty.test.port = 9917
\ No newline at end of file