Commit eddd1a48 by YANGYANG

预警

parent 1cee6e76
......@@ -66,4 +66,8 @@ public class FenceTask implements Serializable {
@ApiModelProperty(value = "任务类型")
@TableField(value = "task_type")
private String taskType;
@ApiModelProperty(value = "预警")
@TableField(value = "warn")
private int warn;
}
......@@ -63,5 +63,7 @@ public class FenceTaskController {
long total = pageParam.getTotal();
return MapRestResult.build(ResultCode.SUCCESS,"成功获取任务列表信息",total,records);
}
}
......@@ -7,6 +7,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
......@@ -65,7 +66,12 @@ public class ZdryApiController {
}
@ApiOperation(value = "批量获取设备离线在线状态数据")
@PostMapping(value = "/onlineAndWeardata")
@GetMapping(value = "/onlineAndWeardata")
//每隔5秒执行一次:*/5 * * * * ?
//每隔5分执行一次:0 */5 * * * ?
//每个整点执行一次:0 0 0/1 * * ?
//每天凌晨2点执行一次:0 0 2 * * ?
@Scheduled(cron = "0 0 0/1 * * ?")
public MapRestResult onlineAndWeardata() {
return zdryApiService.onlineAndWeardata();
}
......@@ -87,5 +93,17 @@ public class ZdryApiController {
return zdryApiService.deviceFenceTask(sbImei,name,time_begin,time_end,safe_area);
}
@ApiOperation(value = "电子围栏预警")
@GetMapping(value = "/FenceWarning")
//每隔5秒执行一次:*/5 * * * * ?
//每隔5分执行一次:0 */5 * * * ?
//每个整点执行一次:0 0 0/1 * * ?
//每天凌晨2点执行一次:0 0 2 * * ?
@Scheduled(cron = "0 */10 * * * ?")
public MapRestResult FenceWarning()
{
return zdryApiService.FenceWarning();
}
}
......@@ -24,4 +24,6 @@ public interface ZdryApiService {
MapRestResult onlineAndWeardata();
MapRestResult deviceFenceTask(String sbImei,String name,String time_begin, String time_end, String safe_area);
public MapRestResult FenceWarning();
}
......@@ -3,15 +3,14 @@ package com.founder.zdryapi.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.founder.commonutils.ZdryApiEntity.Device;
import com.founder.commonutils.ZdryApiEntity.*;
import com.founder.commonutils.ZdryApiEntity.FenceTask;
import com.founder.commonutils.ZdryApiEntity.LocationData;
import com.founder.commonutils.ZdryApiEntity.OnlineAndWear;
import com.founder.commonutils.publicEntity.MapRestResult;
import com.founder.commonutils.publicEntity.ResultCode;
import com.founder.zdryapi.mapper.ZdryApiMapper;
import com.founder.zdryapi.mapper.ZdryFenceTaskMapper;
import com.founder.zdryapi.mapper.ZdryLocationMessageMapper;
import com.founder.zdryapi.mapper.ZdryMessageMapper;
import com.founder.zdryapi.service.ZdryApiService;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang3.StringUtils;
......@@ -27,9 +26,8 @@ import org.springframework.web.client.RestTemplate;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.time.LocalDateTime;
import java.util.*;
/*
*
......@@ -77,6 +75,12 @@ public class ZdryApiServiceImpl implements ZdryApiService {
@Autowired
private ZdryFenceTaskMapper zdryFenceTaskMapper;
@Autowired
private ZdryMessageMapper zdryMessageMapper;
@Autowired
private ZdryLocationMessageMapper zdryLocationMessageMapper;
public Device getDevice(String deviceId){
Device device = new Device();
try {
......@@ -468,6 +472,75 @@ public class ZdryApiServiceImpl implements ZdryApiService {
return MapRestResult.build(ResultCode.SUCCESS, "设置电子围栏成功", "1");
}
@Override
public MapRestResult FenceWarning() {
QueryWrapper<FenceTask> wrapperTask = new QueryWrapper<>();
wrapperTask.ge("xxsc_pdbz","0");
// 先查询出所有围栏任务中设备编号
List<FenceTask> listImei = zdryFenceTaskMapper.selectList(wrapperTask);
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
LocalDateTime now = LocalDateTime.now();
LocalDateTime thirtyLater = now.minusMinutes(30);
System.out.println("30分钟前的时间:"+thirtyLater);
// gk_message修改时间大于 当前时间减去30分钟认为出圈 围栏触发才推送数据 不触发不推送频率30分钟
List<Map<String,Object>> listResult = new ArrayList<>();
if(listImei.size()>0){
for(FenceTask data:listImei){
QueryWrapper<Message> wrapper = new QueryWrapper<>();
wrapper.ge("gxsj",thirtyLater);
wrapper.eq("sb_imei",data.getSbImei());
Message message = zdryMessageMapper.selectOne(wrapper);
if(null != message){
Map<String,Object> map = new HashMap<>();
// 查询对应任务
QueryWrapper<FenceTask> wrapper1 = new QueryWrapper<>();
wrapper1.eq("sb_imei",data.getSbImei());
FenceTask fenceTask = zdryFenceTaskMapper.selectOne(wrapper1);
map.put("任务名称",fenceTask.getName());
map.put("设备编号",data.getSbImei());
map.put("任务类型",fenceTask.getTaskType());
map.put("时间段",fenceTask.getTimeBegin()+"-"+fenceTask.getTimeEnd());
// 同时更新fencetasks 围栏任务表 warn预警 1预警 0未预警
fenceTask.setWarn(1);
zdryFenceTaskMapper.updateById(fenceTask);
// 查询最新位置
QueryWrapper<LocationMessage> wrapper2 = new QueryWrapper<>();
wrapper2.eq("sb_imei",data.getSbImei());
LocationMessage locationMessage = zdryLocationMessageMapper.selectOne(wrapper2);
map.put("最新位置",locationMessage.getAddress());
map.put("经度",locationMessage.getX());
map.put("纬度",locationMessage.getY());
map.put("开始时间",locationMessage.getTimeBegin());
listResult.add(map);
}else{
// 查询对应任务
QueryWrapper<FenceTask> wrapper1 = new QueryWrapper<>();
wrapper1.eq("sb_imei",data.getSbImei());
FenceTask fenceTask = zdryFenceTaskMapper.selectOne(wrapper1);
// 同时更新fencetasks 围栏任务表 warn预警 1预警 0未预警
fenceTask.setWarn(0);
zdryFenceTaskMapper.updateById(fenceTask);
}
}
}else{
return MapRestResult.build(201,"参数不能为空","1","1");
}
if(listResult.size()>0){
return MapRestResult.build(200,"预警",listResult,listResult.size());
}else{
return MapRestResult.build(200,"无预警","无","1");
}
}
public String getToken() {
HttpHeaders headers = new HttpHeaders();
MediaType type = MediaType.parseMediaType("application/json");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment