From 1598527dd6a818b89269d48f7cf39b900065a0f9 Mon Sep 17 00:00:00 2001
From: pengjie <17373303529@163.com>
Date: Fri, 28 Feb 2025 14:50:27 +0800
Subject: [PATCH] =?UTF-8?q?BUG=E4=BF=AE=E5=A4=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../mapper/xml/SafetyHatDevMapper.xml | 2 +-
.../com/zhgd/xmgl/task/SafetyHatTask.java | 116 ++++++++++--------
2 files changed, 63 insertions(+), 55 deletions(-)
diff --git a/src/main/java/com/zhgd/xmgl/modules/safetyhat/mapper/xml/SafetyHatDevMapper.xml b/src/main/java/com/zhgd/xmgl/modules/safetyhat/mapper/xml/SafetyHatDevMapper.xml
index 32d56356b..898ddaac3 100644
--- a/src/main/java/com/zhgd/xmgl/modules/safetyhat/mapper/xml/SafetyHatDevMapper.xml
+++ b/src/main/java/com/zhgd/xmgl/modules/safetyhat/mapper/xml/SafetyHatDevMapper.xml
@@ -15,7 +15,7 @@
select count(*) count,
IFNULL(sum(online),0) onlineCount
from safety_hat_dev
- where 1 = 1
+ where type = 1
and dev_sn = #{devSn}
diff --git a/src/main/java/com/zhgd/xmgl/task/SafetyHatTask.java b/src/main/java/com/zhgd/xmgl/task/SafetyHatTask.java
index d3535adc9..d1e50db8d 100644
--- a/src/main/java/com/zhgd/xmgl/task/SafetyHatTask.java
+++ b/src/main/java/com/zhgd/xmgl/task/SafetyHatTask.java
@@ -110,7 +110,7 @@ public class SafetyHatTask {
}
// 设置每秒最大请求数
- private static final double MAX_REQUESTS_PER_SECOND = 10.0;
+ private static final double MAX_REQUESTS_PER_SECOND = 20.0;
// 创建一个RateLimiter实例
private static final RateLimiter rateLimiter = RateLimiter.create(MAX_REQUESTS_PER_SECOND);
@@ -131,64 +131,72 @@ public class SafetyHatTask {
for (SafetyHatDev dev : devList) {
// 等待从RateLimiter获取权限
rateLimiter.acquire();
- if (StrUtil.isBlank(dev.getExtUserId())) {
- log.info("定时2分钟获取安全帽数据任务,安全帽外部user_id没有设置,devSn:{}", dev.getDevSn());
- continue;
- }
- SafetyHatData lastData = safetyHatDataMapper.selectOne(new LambdaQueryWrapper()
- .eq(SafetyHatData::getDevSn, dev.getDevSn()).orderByDesc(SafetyHatData::getUploadTime).last("limit 1"));
- String start;
- if (lastData != null) {
- start = lastData.getUploadTime().getTime() / 1000L + "";
- } else {
- start = DateUtil.offsetHour(new Date(), -12).getTime() / 1000L + "";
- }
- //轨迹回放
- String url = "https://caps.runde.pro/api/index.php?ctl=location&act=get_user_path_web";
- JSONObject pJo = new JSONObject();
- pJo.put("admin_id", project.getHelmetUser());
- pJo.put("user_id", dev.getExtUserId());
- String end = System.currentTimeMillis() / 1000L + "";
- pJo.put("start", start);
- pJo.put("end", end);
- String json = pJo.toJSONString();
- log.info("定时2分钟获取安全帽数据任务开始,devSn:{},url:{},json:{}", dev.getDevSn(), url, json);
- String rs = HttpRequest.post(url)
- .body(json)
- .timeout(20000)//超时,毫秒
- .execute().body();
- log.info("定时2分钟获取安全帽数据任务开始rs,devSn:{},rs:{}", dev.getDevSn(), rs);
- JSONObject rsJo = JSON.parseObject(rs);
- if (rsJo.getBoolean("status")) {
- JSONArray dataJa = rsJo.getJSONArray("data");
- if (CollUtil.isEmpty(dataJa)) {
- continue;
- }
- for (int i = 0; i < dataJa.size(); i++) {
- JSONObject dataJo = dataJa.getJSONObject(i);
- Double xPoint = dataJo.getDouble("x_point");
- Double yPoint = dataJo.getDouble("y_point");
- Long time = dataJo.getLong("time");
- SafetyHatData data = new SafetyHatData();
- data.setWorkerInfoId(dev.getWorkerInfoId());
- data.setDevSn(dev.getDevSn());
- data.setLatitude(xPoint);
- data.setLongitude(yPoint);
- data.setUploadTime(new Date(time * 1000L));
- data.setProjectSn(dev.getProjectSn());
- data.setIsPlatformData(1);
- data.setType(dev.getType());
- safetyHatDataService.add(data);
- }
- } else {
- log.error("定时2分钟获取安全帽数据任务失败:devSn:{}", dev.getDevSn());
- }
+ CompletableFuture.runAsync(() -> {
+ doGet(dev, project);
+ }).exceptionally(throwable -> {
+ log.error("err", throwable);
+ return null;
+ });
}
-
}
}
}
+ private void doGet(SafetyHatDev dev, Project project) {
+ if (StrUtil.isBlank(dev.getExtUserId())) {
+ log.info("定时2分钟获取安全帽数据任务,安全帽外部user_id没有设置,devSn:{}", dev.getDevSn());
+ return;
+ }
+ SafetyHatData lastData = safetyHatDataMapper.selectOne(new LambdaQueryWrapper()
+ .eq(SafetyHatData::getDevSn, dev.getDevSn()).orderByDesc(SafetyHatData::getUploadTime).last("limit 1"));
+ String start;
+ if (lastData != null) {
+ start = lastData.getUploadTime().getTime() / 1000L + "";
+ } else {
+ start = DateUtil.offsetHour(new Date(), -12).getTime() / 1000L + "";
+ }
+ //轨迹回放
+ String url = "https://caps.runde.pro/api/index.php?ctl=location&act=get_user_path_web";
+ JSONObject pJo = new JSONObject();
+ pJo.put("admin_id", project.getHelmetUser());
+ pJo.put("user_id", dev.getExtUserId());
+ String end = System.currentTimeMillis() / 1000L + "";
+ pJo.put("start", start);
+ pJo.put("end", end);
+ String json = pJo.toJSONString();
+ log.info("定时2分钟获取安全帽数据任务开始,devSn:{},url:{},json:{}", dev.getDevSn(), url, json);
+ String rs = HttpRequest.post(url)
+ .body(json)
+ .timeout(20000)//超时,毫秒
+ .execute().body();
+ log.info("定时2分钟获取安全帽数据任务开始rs,devSn:{},rs:{}", dev.getDevSn(), rs);
+ JSONObject rsJo = JSON.parseObject(rs);
+ if (rsJo.getBoolean("status")) {
+ JSONArray dataJa = rsJo.getJSONArray("data");
+ if (CollUtil.isEmpty(dataJa)) {
+ return;
+ }
+ for (int i = 0; i < dataJa.size(); i++) {
+ JSONObject dataJo = dataJa.getJSONObject(i);
+ Double xPoint = dataJo.getDouble("x_point");
+ Double yPoint = dataJo.getDouble("y_point");
+ Long time = dataJo.getLong("time");
+ SafetyHatData data = new SafetyHatData();
+ data.setWorkerInfoId(dev.getWorkerInfoId());
+ data.setDevSn(dev.getDevSn());
+ data.setLatitude(xPoint);
+ data.setLongitude(yPoint);
+ data.setUploadTime(new Date(time * 1000L));
+ data.setProjectSn(dev.getProjectSn());
+ data.setIsPlatformData(1);
+ data.setType(dev.getType());
+ safetyHatDataService.add(data);
+ }
+ } else {
+ log.error("定时2分钟获取安全帽数据任务失败:devSn:{}", dev.getDevSn());
+ }
+ }
+
// /**
// * 定时设置昨天的轨迹到数据库
// */