Commit 2abfa301 by YANGYANG

电子围栏接口 数据接收接口封装

parent a72aaed3
package com.founder.commonutils.ZdryApiEntity;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author yangyang
* @since 2021-06-04
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="fence对象", description="fence对象")
@TableName("gk_fencetask")
public class FenceTask implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "信息主键编号自增长")
@TableId(type = IdType.AUTO)
private Integer id;
@ApiModelProperty(value = "设备Imei")
@TableField(value = "sb_imei")
private String sbImei;
@ApiModelProperty(value = "电子围栏名称")
@TableField(value = "name")
private String name;
@ApiModelProperty(value = "开始时间例早上八点:8")
@TableField(value = "time_begin")
private String timeBegin;
@ApiModelProperty(value = "结束时间例下午六点:18")
@TableField(value = "time_end")
private String timeEnd;
@ApiModelProperty(value = "A;B;C;D;A")
@TableField(value = "safe_area")
private String safeArea;
@ApiModelProperty(value = "登记时间")
@TableField(fill = FieldFill.INSERT)
private Date djsj;
@ApiModelProperty(value = "改写时间")
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date gxsj;
@ApiModelProperty(value = "信息删除判断标志")
@TableField(value = "xxsc_pdbz")
private int xxscPdbz;
}
package com.founder.commonutils.ZdryApiEntity;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author yangyang
* @since 2021-06-04
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="LocationMessage对象", description="LocationMessage对象")
@TableName("gk_LocationMessage")
public class LocationMessage implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "信息主键编号自增长")
@TableId(type = IdType.AUTO)
private Integer id;
@ApiModelProperty(value = "设备Imei")
@TableField(value = "sb_imei")
private String sbImei;
@ApiModelProperty(value = "类型 0:Gps定位; 1:基站定位(移动/联通版定位) 2:电信基站版定位")
@TableField(value = "type")
private int type;
@ApiModelProperty(value = "发生时间YYYY-MM-DD HH:mm:SS")
@TableField(value = "time_begin")
private String timeBegin;
@ApiModelProperty(value = "是否为响应")
@TableField(value = "is_reply")
private int isReply;
@ApiModelProperty(value = "是否轨迹")
@TableField(value = "is_track")
private int isTrack;
@ApiModelProperty(value = "城市")
@TableField(value = "city")
private String city;
@ApiModelProperty(value = "地址")
@TableField(value = "address")
private String address;
@ApiModelProperty(value = "经度")
@TableField(value = "x")
private String x;
@ApiModelProperty(value = "经度")
@TableField(value = "y")
private String y;
@ApiModelProperty(value = "登记时间")
@TableField(fill = FieldFill.INSERT)
private Date djsj;
@ApiModelProperty(value = "改写时间")
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date gxsj;
}
package com.founder.commonutils.ZdryApiEntity;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author yangyang
* @since 2021-06-04
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="message对象", description="message对象")
@TableName("gk_message")
public class Message implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "信息主键编号自增长")
@TableId(type = IdType.AUTO)
private Integer id;
@ApiModelProperty(value = "设备Imei")
@TableField(value = "sb_imei")
private String sbImei;
@ApiModelProperty(value = "type=1 SOS,type=2 fall,type=3 new 新成员加入 ,type=4 电子围栏触发, type=5 设备低电,type=6 环境音")
@TableField(value = "type")
private int type;
@ApiModelProperty(value = "机构ID")
@TableField(value = "communityid")
private String communityId;
@ApiModelProperty(value = "只有环境音(type=6)为必填,其他type都为非必填")
@TableField(value = "url")
private String url;
@ApiModelProperty(value = "设备名称")
@TableField(value = "name")
private String name;
@ApiModelProperty(value = "登记时间")
@TableField(fill = FieldFill.INSERT)
private Date djsj;
@ApiModelProperty(value = "改写时间")
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date gxsj;
}
......@@ -16,7 +16,7 @@ public class GlobalExceptionHandler {
@ResponseBody //为了返回数据
public MapRestResult error(Exception e) {
e.printStackTrace();
return MapRestResult.error("执行了全局异常处理..");
return MapRestResult.error("执行了全局异常处理.."+e.getMessage());
}
//特定异常
......
......@@ -44,6 +44,7 @@
from gk_users users,gk_online online
where users.sb_imei = online.sb_imei
and users.xxsc_pdbz = 0
<include refid="queryTlWhere"/>
limit #{ page },#{ limit}
</select>
......
package com.founder.zdryapi.controller;
import com.founder.commonutils.ZdryApiEntity.Device;
import com.founder.commonutils.ZdryApiEntity.OnlineAndWear;
import com.founder.commonutils.publicEntity.MapRestResult;
import com.founder.zdryapi.service.ZdryApiService;
import io.swagger.annotations.Api;
......@@ -11,7 +10,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
import java.util.List;
/**
* <p>
......@@ -71,5 +69,23 @@ public class ZdryApiController {
public MapRestResult onlineAndWeardata() {
return zdryApiService.onlineAndWeardata();
}
@ApiOperation(value = "设置电子围栏")
@PostMapping(value = "/deviceFenceTask")
public MapRestResult deviceFenceTask(@ApiParam(name = "sbImei", value = "设备IMEI", required = true)
@RequestParam(value = "sbImei") String sbImei,
@ApiParam(name = "name", value = "电子围栏名称", required = true)
@RequestParam(value = "name") String name,
@ApiParam(name = "time_begin", value = "开始时间例早上八点:08:00", required = true)
@RequestParam(value = "time_begin") String time_begin,
@ApiParam(name = "time_end", value = "结束时间例下午六点:18:00", required = true)
@RequestParam(value = "time_end") String time_end,
@ApiParam(name = "safe_area", value = "A;B;C;D;A", required = true)
@RequestParam(value = "safe_area") String safe_area
) {
return zdryApiService.deviceFenceTask(sbImei,name,time_begin,time_end,safe_area);
}
}
package com.founder.zdryapi.controller;
import cn.hutool.core.date.DateTime;
import com.founder.zdryapi.service.ZdryPushDataService;
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.stereotype.Component;
import org.springframework.web.bind.annotation.*;
/**
* <p>
* 第三方爱牵挂接口管理 前端控制器
* </p>
*
* @author yangyang
* @since 2021-05-31
*/
@Api(description = "第三方接口管理-爱牵挂数据推送接口调用")
@RestController
@RequestMapping("/aqgPushData")
@Component
public class ZdryPushDataController {
@Autowired
private ZdryPushDataService zdryPushDataService;
@ApiOperation(value = "消息通知推送接口")
@GetMapping(value = "/message")
public void message(@ApiParam(name = "type", value = "type=1 SOS,type=2 fall,type=3 new 新成员加入 ,type=4 电子围栏触发, type=5 设备低电,type=6 环境音", required = true)
@RequestParam(value = "type") Integer type,
@ApiParam(name = "deviceid", value = "设备Imei", required = true)
@RequestParam(value = "deviceid") String deviceid,
@ApiParam(name = "communityid", value = "机构ID", required = true)
@RequestParam(value = "communityid") String communityid,
@ApiParam(name = "url", value = " url")
@RequestParam(value = "url", required = false) String url,
@ApiParam(name = "name", value = "设备名称", required = true)
@RequestParam(value = "name") String name
) {
zdryPushDataService.message(type,deviceid,communityid,url,name);
}
@ApiOperation(value = "位置数据发送接口")
@PostMapping(value = "/locationMessage")
public void locationMessage(@ApiParam(name = "imei", value = "设备IMEI", required = true)
@RequestParam(value = "imei") String imei,
@ApiParam(name = "time_begin", value = "发生时间YYYY-MM-DD HH:mm:SS", required = true)
@RequestParam(value = "time_begin") String time_begin,
@ApiParam(name = "is_reply", value = "是否为响应", required = true)
@RequestParam(value = "is_reply") boolean is_reply,
@ApiParam(name = "is_track", value = "是否轨迹", required = true)
@RequestParam(value = "is_track") boolean is_track,
@ApiParam(name = "city", value = "城市", required = true)
@RequestParam(value = "city") String city,
@ApiParam(name = "address", value = "地址", required = true)
@RequestParam(value = "address") String address,
@ApiParam(name = "lon", value = "经度", required = true)
@RequestParam(value = "lon") double lon,
@ApiParam(name = "lat", value = "经度", required = true)
@RequestParam(value = "lat") double lat,
@ApiParam(name = "type", value = "类型 0:Gps定位; 1:基站定位(移动/联通版定位) 2:电信基站版定位", required = true)
@RequestParam(value = "type") int type
) {
zdryPushDataService.locationMessage(imei,time_begin,is_reply,is_track,city,address,lon,lat,type);
}
}
package com.founder.zdryapi.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.founder.commonutils.ZdryApiEntity.FenceTask;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Component;
/**
* <p>
* Mapper 接口
* </p>
*
* @author yangyang
* @since 2021-06-04
*/
@Mapper
@Component
public interface ZdryFenceTaskMapper extends BaseMapper<FenceTask> {
}
package com.founder.zdryapi.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.founder.commonutils.ZdryApiEntity.LocationMessage;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Component;
/**
* <p>
* Mapper 接口
* </p>
*
* @author yangyang
* @since 2021-06-04
*/
@Mapper
@Component
public interface ZdryLocationMessageMapper extends BaseMapper<LocationMessage> {
}
package com.founder.zdryapi.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.founder.commonutils.ZdryApiEntity.FenceTask;
import com.founder.commonutils.ZdryApiEntity.Message;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Component;
/**
* <p>
* Mapper 接口
* </p>
*
* @author yangyang
* @since 2021-06-04
*/
@Mapper
@Component
public interface ZdryMessageMapper extends BaseMapper<Message> {
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.founder.zdryapi.mapper.ZdryFenceTaskMapper">
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.founder.zdryapi.mapper.ZdryLocationMessageMapper">
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.founder.zdryapi.mapper.ZdryMessageMapper">
</mapper>
package com.founder.zdryapi.service;
import com.founder.commonutils.ZdryApiEntity.Device;
import com.founder.commonutils.ZdryApiEntity.OnlineAndWear;
import com.founder.commonutils.publicEntity.MapRestResult;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/**
* <p>
......@@ -27,4 +22,6 @@ public interface ZdryApiService {
MapRestResult locationdata(String deviceId,String time_begin);
MapRestResult onlineAndWeardata();
MapRestResult deviceFenceTask(String sbImei,String name,String time_begin, String time_end, String safe_area);
}
package com.founder.zdryapi.service;
import java.util.Date;
/**
* <p>
* 接口 服务类
* </p>
*
* @author yangyang
* @since 2021-06-04
*/
public interface ZdryPushDataService {
void message(int type,String deviceid, String communityid, String url, String name);
void locationMessage(String imei, String time_begin,boolean is_reply,boolean is_track,String city,String address,double lon,double lat,int type);
}
......@@ -5,10 +5,13 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.founder.commonutils.ZdryApiEntity.Device;
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.service.ZdryApiService;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang3.StringUtils;
......@@ -18,18 +21,20 @@ import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
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.util.stream.Collectors;
/*
*
* <p>
* 云天接口 服务实现类
* 爱牵挂接口 服务实现类
* </p>
*
* @author yangyang
......@@ -69,6 +74,9 @@ public class ZdryApiServiceImpl implements ZdryApiService {
@Autowired
private ZdryApiMapper zdryApiMapper;
@Autowired
private ZdryFenceTaskMapper zdryFenceTaskMapper;
public Device getDevice(String deviceId){
Device device = new Device();
try {
......@@ -349,6 +357,105 @@ public class ZdryApiServiceImpl implements ZdryApiService {
return MapRestResult.build(200,"批量获取设备离线在线状态数据",OnlineAndWearList.size());
}
@Override
public MapRestResult deviceFenceTask(String sbImei,String name, String time_begin, String time_end, String safe_area) {
SimpleDateFormat sf = new SimpleDateFormat("HH");
HttpHeaders headers = new HttpHeaders();
MediaType type = MediaType.parseMediaType("application/x-www-form-urlencoded");
// 设置请求的格式类型
headers.setContentType(type);
MultiValueMap<String, Object> form = new LinkedMultiValueMap<>();
form.add("name",name);
try {
form.add("time_begin",Integer.valueOf(sf.format(sf.parse(time_begin))) * 60 *60);
form.add("time_end",Integer.valueOf(sf.format(sf.parse(time_end))) * 60 *60);
} catch (ParseException e) {
e.printStackTrace();
return MapRestResult.build(ResultCode.ERROR, "时间转换异常!", e.getMessage());
}
form.add("safe_area",safe_area);
form.add("enable","1");
form.add("freq","1");// 0,触发一天;1,每日触发
HttpEntity<MultiValueMap<String, Object>> params = new HttpEntity<>(form, headers);
String resultString = restTemplate.postForEntity(zdryUrl + "/api/device/"+sbImei+"/4g/fences/1/", params, String.class).getBody();
JSONObject result = JSONObject.parseObject(resultString);
if (result.getString("success").equals("true")) {
// 先查看是否存在 不存在插入 存在更新
QueryWrapper<FenceTask> wrapper = new QueryWrapper<>();
wrapper.eq("sb_imei",sbImei);
// 查询
FenceTask fenceTask = zdryFenceTaskMapper.selectOne(wrapper);
if(null != fenceTask){
fenceTask.setName(name);
fenceTask.setTimeBegin(time_begin);
fenceTask.setTimeEnd(time_end);
fenceTask.setSafeArea(safe_area);
fenceTask.setSbImei(sbImei);
// 执行更新
zdryFenceTaskMapper.updateById(fenceTask);
}else{
FenceTask fenceTasks = new FenceTask();
fenceTasks.setName(name);
fenceTasks.setTimeBegin(time_begin);
fenceTasks.setTimeEnd(time_end);
fenceTasks.setSafeArea(safe_area);
fenceTasks.setSbImei(sbImei);
// 插入数据
int flag = zdryFenceTaskMapper.insert(fenceTasks);
if(flag > 0) {
return MapRestResult.build(ResultCode.SUCCESS, "设置电子围栏成功", "1");
}else{
return MapRestResult.build(ResultCode.ERROR, "设置电子围栏失败", "插入数据失败");
}
}
}else {
if(getToken().equals("success")) {
resultString = restTemplate.postForEntity(zdryUrl + "/api/device/" + sbImei + "/4g/fences/1/", params, String.class).getBody();
// 先查看是否存在 不存在插入 存在更新
QueryWrapper<FenceTask> wrapper = new QueryWrapper<>();
wrapper.eq("sb_imei", sbImei);
// 查询
FenceTask fenceTask = zdryFenceTaskMapper.selectOne(wrapper);
if (null != fenceTask) {
fenceTask.setName(name);
fenceTask.setTimeBegin(time_begin);
fenceTask.setTimeEnd(time_end);
fenceTask.setSafeArea(safe_area);
fenceTask.setSbImei(sbImei);
// 执行更新
zdryFenceTaskMapper.updateById(fenceTask);
} else {
FenceTask fenceTasks = new FenceTask();
fenceTasks.setName(name);
fenceTasks.setTimeBegin(time_begin);
fenceTasks.setTimeEnd(time_end);
fenceTasks.setSafeArea(safe_area);
fenceTasks.setSbImei(sbImei);
// 插入数据
int flag = zdryFenceTaskMapper.insert(fenceTasks);
if (flag > 0) {
return MapRestResult.build(ResultCode.SUCCESS, "设置电子围栏成功", "1");
} else {
return MapRestResult.build(ResultCode.ERROR, "设置电子围栏失败", "插入数据失败");
}
}
}else{
return MapRestResult.build(ResultCode.ERROR, "登录失败", "登录失败");
}
}
return MapRestResult.build(ResultCode.SUCCESS, "设置电子围栏成功", "1");
}
public String getToken() {
HttpHeaders headers = new HttpHeaders();
MediaType type = MediaType.parseMediaType("application/json");
......
package com.founder.zdryapi.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.founder.commonutils.ZdryApiEntity.LocationMessage;
import com.founder.commonutils.ZdryApiEntity.Message;
import com.founder.zdryapi.mapper.ZdryLocationMessageMapper;
import com.founder.zdryapi.mapper.ZdryMessageMapper;
import com.founder.zdryapi.service.ZdryPushDataService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
/*
*
* <p>
* 爱牵挂接口 服务实现类
* </p>
*
* @author yangyang
* @since 2021-06-04
*/
@Service
public class ZdryPushDataServiceImpl implements ZdryPushDataService {
@Autowired
private ZdryMessageMapper zdryMessageMapper;
@Autowired
private ZdryLocationMessageMapper zdryLocationMessageMapper;
@Override
public void message(int type, String deviceid, String communityid, String url, String name) {
if(type == 4){
QueryWrapper<Message> wrapper = new QueryWrapper<>();
wrapper.eq("sb_imei",deviceid);
Message message = zdryMessageMapper.selectOne(wrapper);
if(null != message){
message.setName(name);
message.setType(type);
message.setSbImei(deviceid);
message.setCommunityId(communityid);
message.setUrl(url);
zdryMessageMapper.updateById(message);
}else{
Message message1 = new Message();
message1.setName(name);
message1.setType(type);
message1.setSbImei(deviceid);
message1.setCommunityId(communityid);
message1.setUrl(url);
zdryMessageMapper.insert(message1);
}
}
}
@Override
public void locationMessage(String imei, String time_begin, boolean is_reply, boolean is_track, String city, String address, double lon, double lat, int type) {
QueryWrapper<LocationMessage> wrapper = new QueryWrapper<>();
wrapper.eq("sb_imei",imei);
// 查询
LocationMessage locationMessage = zdryLocationMessageMapper.selectOne(wrapper);
if(null != locationMessage){
locationMessage.setSbImei(imei);
locationMessage.setTimeBegin(time_begin);
locationMessage.setCity(city);
locationMessage.setAddress(address);
locationMessage.setX(String.valueOf(lon));
locationMessage.setY(String.valueOf(lat));
locationMessage.setType(type);
if(is_reply){
locationMessage.setIsReply(1);
}else{
locationMessage.setIsReply(0);
}
if(is_track){
locationMessage.setIsTrack(1);
}else{
locationMessage.setIsTrack(0);
}
// 执行更新
zdryLocationMessageMapper.updateById(locationMessage);
}else{
LocationMessage locationMessage1 = new LocationMessage();
locationMessage1.setSbImei(imei);
locationMessage1.setTimeBegin(time_begin);
locationMessage1.setCity(city);
locationMessage1.setAddress(address);
locationMessage1.setX(String.valueOf(lon));
locationMessage1.setY(String.valueOf(lat));
locationMessage1.setType(type);
if(is_reply){
locationMessage1.setIsReply(1);
}else{
locationMessage1.setIsReply(0);
}
if(is_track){
locationMessage1.setIsTrack(1);
}else {
locationMessage1.setIsTrack(0);
}
// 插入数据
zdryLocationMessageMapper.insert(locationMessage1);
}
}
}
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