列表查询智能安全帽-实时数据信息(查询今日会调接口查询)
This commit is contained in:
parent
b111c5e338
commit
384c080c28
@ -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));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -31,4 +31,5 @@ public interface ISafetyHatDataService extends IService<SafetyHatData> {
|
||||
|
||||
void updateStatus(SafetyHatDev safetyHatDev);
|
||||
|
||||
List<SafetyHatData> newestList(HashMap<String, Object> paramMap);
|
||||
}
|
||||
|
||||
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 测试发生安全帽数据
|
||||
*/
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user