BUG修复
This commit is contained in:
parent
b95256f82c
commit
1598527dd6
@ -15,7 +15,7 @@
|
||||
select count(*) count,
|
||||
IFNULL(sum(online),0) onlineCount
|
||||
from safety_hat_dev
|
||||
where 1 = 1
|
||||
where type = 1
|
||||
<if test="devSn != null and devSn != ''">
|
||||
and dev_sn = #{devSn}
|
||||
</if>
|
||||
|
||||
@ -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<SafetyHatData>()
|
||||
.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<SafetyHatData>()
|
||||
.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());
|
||||
}
|
||||
}
|
||||
|
||||
// /**
|
||||
// * 定时设置昨天的轨迹到数据库
|
||||
// */
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user