列表查询智能安全帽-实时数据信息(查询今日会调接口查询)

This commit is contained in:
guo 2024-04-07 18:32:26 +08:00
parent b111c5e338
commit 384c080c28
4 changed files with 159 additions and 5 deletions

View File

@ -149,4 +149,11 @@ public class SafetyHatDataController {
return Result.success(safetyHatDataService.getNewestList(paramMap));
}
@ApiOperation(value = "列表查询智能安全帽-实时数据信息(查询今日会调接口查询)", notes = "列表查询智能安全帽-实时数据信息(查询今日会调接口查询)", httpMethod = "GET")
@GetMapping(value = "/newestList")
public Result<List<SafetyHatData>> newestList(@ApiIgnore @RequestParam HashMap<String, Object> paramMap) {
return Result.success(safetyHatDataService.newestList(paramMap));
}
}

View File

@ -31,4 +31,5 @@ public interface ISafetyHatDataService extends IService<SafetyHatData> {
void updateStatus(SafetyHatDev safetyHatDev);
List<SafetyHatData> newestList(HashMap<String, Object> paramMap);
}

View File

@ -1,7 +1,12 @@
package com.zhgd.xmgl.modules.safetyhat.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -9,6 +14,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zhgd.jeecg.common.execption.OpenAlertException;
import com.zhgd.jeecg.common.system.query.QueryGenerator;
import com.zhgd.xmgl.modules.project.entity.Project;
import com.zhgd.xmgl.modules.project.mapper.ProjectMapper;
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatAlarm;
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatData;
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatDev;
@ -19,7 +26,6 @@ import com.zhgd.xmgl.modules.safetyhat.mapper.SafetyHatDevMapper;
import com.zhgd.xmgl.modules.safetyhat.mapper.SafetyHatFenceMapper;
import com.zhgd.xmgl.modules.safetyhat.service.ISafetyHatAlarmService;
import com.zhgd.xmgl.modules.safetyhat.service.ISafetyHatDataService;
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
import com.zhgd.xmgl.util.PageUtil;
import com.zhgd.xmgl.util.RefUtil;
import com.zhgd.xmgl.util.RegionUtil;
@ -30,10 +36,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Objects;
import java.util.*;
/**
* @Description: 智能安全帽-实时数据
@ -55,6 +58,8 @@ public class SafetyHatDataServiceImpl extends ServiceImpl<SafetyHatDataMapper, S
private SafetyHatAlarmMapper safetyHatAlarmMapper;
@Autowired
private ISafetyHatAlarmService safetyHatAlarmService;
@Autowired
private ProjectMapper projectMapper;
@Override
public IPage<SafetyHatData> queryPageList(HashMap<String, Object> paramMap) {
@ -178,5 +183,72 @@ public class SafetyHatDataServiceImpl extends ServiceImpl<SafetyHatDataMapper, S
safetyHatDevMapper.updateById(dev);
}
@Override
public List<SafetyHatData> newestList(HashMap<String, Object> paramMap) {
String uploadTime_begin = MapUtils.getString(paramMap, "uploadTime_begin");
String uploadTime_end = MapUtils.getString(paramMap, "uploadTime_end");
String devSn = MapUtils.getString(paramMap, "devSn");
String today = DateUtil.today();
if (Objects.equals(uploadTime_begin, today) && Objects.equals(uploadTime_end, today) && StringUtils.isNotBlank(devSn)) {
SafetyHatDev dev = safetyHatDevMapper.selectOne(new LambdaQueryWrapper<SafetyHatDev>()
.eq(SafetyHatDev::getDevSn, devSn));
if (dev == null) {
log.error("devSn不存在devSn:{}", devSn);
return null;
}
Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>()
.eq(Project::getProjectSn, dev.getProjectSn()));
if (project == null) {
log.error("projectSn不存在devSn:{},projectSn:{}", devSn, project.getProjectSn());
return null;
}
//远程查询最新轨迹
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 start = DateUtil.beginOfDay(new Date()).getTime() / 1000L + "";
String end = new Date().getTime() / 1000L + "";
pJo.put("start", start);
pJo.put("end", end);
String json = pJo.toJSONString();
log.info("远程查询最新轨迹devSn{},url:{},json:{}", dev.getDevSn(), url, json);
String rs = HttpRequest.post(url)
.body(json)
.timeout(20000)//超时毫秒
.execute().body();
log.info("远程查询最新轨迹rs,devSn{},rs:{}", dev.getDevSn(), rs);
JSONObject rsJo = JSON.parseObject(rs);
if (rsJo.getBoolean("status")) {
JSONArray dataJa = rsJo.getJSONArray("data");
ArrayList<SafetyHatData> hatDataArrayList = new ArrayList<>();
if (CollUtil.isEmpty(dataJa)) {
return null;
}
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());
hatDataArrayList.add(data);
}
return CollUtil.reverse(hatDataArrayList);
} else {
log.error("远程查询最新轨迹rs失败devSn{}", dev.getDevSn());
}
return null;
} else {
QueryWrapper<SafetyHatData> queryWrapper = getQueryWrapper(paramMap);
return dealList(baseMapper.queryList(queryWrapper));
}
}
}

View File

@ -1,6 +1,7 @@
package com.zhgd.xmgl.task;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.StrUtil;
@ -22,6 +23,7 @@ import lombok.extern.slf4j.Slf4j;
import net.javacrumbs.shedlock.core.SchedulerLock;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@ -40,6 +42,7 @@ import java.util.concurrent.CompletableFuture;
@Slf4j
@RestController
@RequestMapping("xmgl/task")
@Transactional(rollbackFor = Exception.class)
public class SafetyHatTask {
@Autowired
IProjectService projectService;
@ -161,6 +164,77 @@ public class SafetyHatTask {
}
}
/**
* 定时设置昨天的轨迹到数据库
*/
@Scheduled(cron = "0 0 3 * * ?")
@SchedulerLock(name = "setYesterdayHelmetData", lockAtMostFor = 1000 * 60 * 2, lockAtLeastFor = 1000 * 10)
@RequestMapping("setYesterdayHelmetData")
public void setYesterdayHelmetData() {
log.info("定时设置昨天的轨迹到数据库任务开始");
List<Project> projectList = projectService.list(Wrappers.<Project>lambdaQuery().ne(Project::getHelmetUser, "").ne(Project::getHelmetPassword, ""));
if (CollUtil.isNotEmpty(projectList)) {
for (Project project : projectList) {
List<SafetyHatDev> devList = safetyHatDevMapper.selectList(new LambdaQueryWrapper<SafetyHatDev>()
.eq(SafetyHatDev::getProjectSn, project.getProjectSn()));
for (SafetyHatDev dev : devList) {
if (StrUtil.isBlank(dev.getExtUserId())) {
log.info("定时设置昨天的轨迹到数据库任务安全帽外部user_id没有设置,devSn:{}", dev.getDevSn());
continue;
}
DateTime yB = DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), -1));
DateTime yE = DateUtil.endOfDay(DateUtil.offsetDay(new Date(), -1));
String start = yB.getTime() / 1000L + "";
String end = yE.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());
pJo.put("start", start);
pJo.put("end", end);
String json = pJo.toJSONString();
log.info("定时设置昨天的轨迹到数据库任务开始devSn{},url:{},json:{}", dev.getDevSn(), url, json);
String rs = HttpRequest.post(url)
.body(json)
.timeout(20000)//超时毫秒
.execute().body();
log.info("定时设置昨天的轨迹到数据库任务开始rs,devSn{},rs:{}", dev.getDevSn(), rs);
JSONObject rsJo = JSON.parseObject(rs);
if (rsJo.getBoolean("status")) {
JSONArray dataJa = rsJo.getJSONArray("data");
//删除昨日的数据
safetyHatDataMapper.delete(new LambdaQueryWrapper<SafetyHatData>()
.eq(SafetyHatData::getDevSn, dev.getDevSn())
.ge(SafetyHatData::getUploadTime, yB)
.le(SafetyHatData::getUploadTime, yE)
);
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());
safetyHatDataMapper.insert(data);
}
} else {
log.error("定时设置昨天的轨迹到数据库任务失败devSn{}", dev.getDevSn());
}
}
}
}
}
/**
* 测试发生安全帽数据
*/