package com.ruoyi.system.service.impl;
|
|
import com.ruoyi.common.utils.http.HttpUtils;
|
import com.ruoyi.system.domain.*;
|
import com.ruoyi.system.service.IGpsCollectService;
|
import com.ruoyi.system.config.GpsServiceConfig;
|
import com.ruoyi.common.utils.MD5Util;
|
import org.springframework.stereotype.Service;
|
import org.springframework.web.client.RestTemplate;
|
import org.springframework.http.HttpEntity;
|
import org.springframework.http.HttpHeaders;
|
import org.springframework.http.MediaType;
|
import org.springframework.http.ResponseEntity;
|
import java.util.HashMap;
|
import java.util.Map;
|
import org.apache.commons.lang3.StringUtils;
|
import com.ruoyi.common.utils.HttpUtil;
|
import com.alibaba.fastjson.JSONObject;
|
import com.ruoyi.common.exception.ServiceException;
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONArray;
|
import com.ruoyi.system.service.IGpsConfigService;
|
import java.util.ArrayList;
|
import java.util.List;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import com.ruoyi.common.utils.DateUtils;
|
import java.util.Date;
|
import com.ruoyi.system.service.IVehicleInfoService;
|
|
/**
|
* GPS采集服务实现
|
*/
|
@Service
|
public class GpsCollectServiceImpl implements IGpsCollectService {
|
|
private final RestTemplate restTemplate;
|
private final GpsServiceConfig gpsServiceConfig;
|
@Autowired
|
private IGpsConfigService gpsConfigService;
|
|
@Autowired
|
private IVehicleInfoService vehicleInfoService;
|
|
public GpsCollectServiceImpl(GpsServiceConfig gpsServiceConfig) {
|
this.restTemplate = new RestTemplate();
|
this.gpsServiceConfig = gpsServiceConfig;
|
}
|
|
|
|
@Override
|
public GpsLoginResponse login(GpsLoginRequest request) {
|
// 构建请求URL
|
String url = request.getDomain() + "/webapi?action=login";
|
|
try {
|
// 设置请求参数
|
Map<String, String> params = new HashMap<>();
|
params.put("username", request.getUsername());
|
params.put("password", MD5Util.md5(request.getPassword()));
|
params.put("type", request.getType());
|
params.put("from", request.getFrom());
|
params.put("browser", request.getBrowser());
|
|
|
// 发送请求
|
String result = HttpUtil.post(url, params);
|
JSONObject jsonResult = JSON.parseObject(result);
|
|
// 解析响应
|
GpsLoginResponse response = new GpsLoginResponse();
|
int status = jsonResult.getInteger("status");
|
response.setStatus(status);
|
|
// 根据状态码设置响应信息
|
switch (status) {
|
case 0:
|
response.setSuccess(true);
|
response.setMessage("登录成功");
|
response.setToken(jsonResult.getString("token"));
|
break;
|
case -1:
|
response.setSuccess(false);
|
response.setMessage("登录失败");
|
break;
|
case 1:
|
response.setSuccess(false);
|
response.setMessage("密码错误");
|
break;
|
case 2:
|
response.setSuccess(false);
|
response.setMessage("禁止登录");
|
break;
|
case 3:
|
response.setSuccess(false);
|
response.setMessage("账号已禁用");
|
break;
|
case 4:
|
response.setSuccess(false);
|
response.setMessage("设备到期");
|
break;
|
case 5:
|
response.setSuccess(false);
|
response.setMessage("设备过期");
|
break;
|
case 9903:
|
response.setSuccess(false);
|
response.setMessage("Token过期");
|
break;
|
case 9906:
|
response.setSuccess(false);
|
response.setMessage("账号在其他地方登录");
|
break;
|
default:
|
response.setSuccess(false);
|
response.setMessage("未知错误");
|
break;
|
}
|
|
return response;
|
} catch (Exception e) {
|
GpsLoginResponse response = new GpsLoginResponse();
|
response.setSuccess(false);
|
response.setStatus(-1);
|
response.setMessage("登录失败:" + e.getMessage());
|
return response;
|
}
|
}
|
|
/**
|
* 获取有效的token,如果token无效则自动登录
|
*/
|
private String getValidTokenWithAutoLogin() {
|
try {
|
// 获取当前token
|
String token = gpsConfigService.getValidToken("gps51");
|
if (token == null || token.isEmpty()) {
|
System.out.println("当前token无效,尝试重新登录");
|
//读取gspconfig中的域名,用户名,密码
|
SysGpsConfig config = gpsConfigService.selectGpsConfigByKey("gps51");
|
if (config == null) {
|
System.err.println("GPS配置信息未找到,无法进行登录");
|
return null;
|
}
|
|
String username = config.getUsername();
|
String password = config.getPassword();
|
String domain = config.getDomain();
|
|
if (username == null || password == null || domain == null) {
|
System.err.println("GPS配置信息不完整,用户名、密码或域名为空");
|
return null;
|
}
|
|
// token无效,尝试登录
|
GpsLoginRequest loginRequest = new GpsLoginRequest();
|
loginRequest.setType("USER");
|
loginRequest.setFrom("WEB");
|
loginRequest.setUsername(username);
|
loginRequest.setPassword(password);
|
loginRequest.setDomain(domain);
|
|
System.out.println("开始登录GPS系统,用户名: " + username + ", 域名: " + domain);
|
GpsLoginResponse loginResponse = login(loginRequest);
|
|
if (loginResponse.isSuccess()) {
|
//将token写入gspconfig
|
token = loginResponse.getToken();
|
//getTokenExpireTime 这个是没有的 需要自己计算,当前时间+23小时
|
Date expireTime = DateUtils.addHours(new Date(), 23);
|
gpsConfigService.updateToken("gps51", token, expireTime);
|
System.out.println("GPS系统登录成功,token已更新");
|
return token;
|
} else {
|
System.err.println("GPS系统登录失败: " + loginResponse.getMessage());
|
return null;
|
}
|
} else {
|
System.out.println("使用现有有效token");
|
}
|
return token;
|
} catch (Exception e) {
|
System.err.println("获取token时发生异常: " + e.getMessage());
|
e.printStackTrace();
|
return null;
|
}
|
}
|
|
/**
|
* 校验登录来源
|
*/
|
private boolean isValidFrom(String from) {
|
if (from == null) {
|
return false;
|
}
|
return "ANDROID".equals(from) || "IPHONE".equals(from) ||
|
"WEB".equals(from) || "WEIXIN".equals(from);
|
}
|
|
/**
|
* 校验登录类型
|
*/
|
private boolean isValidType(String type) {
|
if (type == null) {
|
return false;
|
}
|
return "USER".equals(type) || "DEVICE".equals(type);
|
}
|
|
/**
|
* 更新车辆设备ID
|
* 根据设备列表中的车牌号更新或新增车辆信息
|
*/
|
private void updateVehicleDeviceIds(GpsDeviceListResponse response) {
|
if (response.getStatus() != 0 || response.getGroups() == null) {
|
return;
|
}
|
|
// 遍历所有分组和设备
|
for (GpsGroup group : response.getGroups()) {
|
for (GpsDevice device : group.getDevices()) {
|
// 检查设备名称和备注中是否包含车牌号
|
String deviceName = device.getDevicename();
|
String remark = device.getRemark();
|
String deviceId = device.getDeviceid();
|
|
if (StringUtils.isNotEmpty(deviceName) || StringUtils.isNotEmpty(remark)) {
|
// 尝试从设备名称和备注中提取车牌号
|
String plateNumber = extractPlateNumber(deviceName, remark);
|
if (StringUtils.isNotEmpty(plateNumber)) {
|
// 查询车辆信息
|
VehicleInfo vehicleInfo = vehicleInfoService.selectVehicleInfoByPlateNumber(plateNumber);
|
if (vehicleInfo != null) {
|
// 更新现有车辆的设备ID
|
vehicleInfo.setDeviceId(deviceId);
|
vehicleInfoService.updateVehicleInfo(vehicleInfo);
|
} else {
|
// 创建新的车辆信息
|
VehicleInfo newVehicle = new VehicleInfo();
|
newVehicle.setVehicleNo(plateNumber);
|
newVehicle.setDeviceId(deviceId);
|
newVehicle.setStatus("0"); // 正常状态
|
vehicleInfoService.insertVehicleInfo(newVehicle);
|
}
|
}
|
}
|
}
|
}
|
}
|
|
/**
|
* 从设备名称和备注中提取车牌号
|
*/
|
private String extractPlateNumber(String deviceName, String remark) {
|
// 这里可以根据实际情况实现车牌号提取逻辑
|
// 例如:从字符串中匹配车牌号格式
|
if (StringUtils.isNotEmpty(deviceName)) {
|
return deviceName;
|
}
|
if (StringUtils.isNotEmpty(remark)) {
|
return remark;
|
}
|
return null;
|
}
|
|
@Override
|
public GpsDeviceListResponse getDeviceList() {
|
// 获取GPS配置信息
|
SysGpsConfig config = gpsConfigService.selectGpsConfigByKey("gps51");
|
if (config == null) {
|
GpsDeviceListResponse response = new GpsDeviceListResponse();
|
response.setStatus(-1);
|
response.setCause("未找到GPS配置信息");
|
return response;
|
}
|
|
// 获取有效的token,如果无效则自动登录
|
String token = getValidTokenWithAutoLogin();
|
if (token == null) {
|
GpsDeviceListResponse response = new GpsDeviceListResponse();
|
response.setStatus(-1);
|
response.setCause("获取token失败");
|
return response;
|
}
|
|
String username = config.getUsername();
|
// 构建请求URL
|
String url = config.getDomain() + "/webapi?action=querymonitorlist&token=" + token;
|
Map<String, String> params = new HashMap<>();
|
params.put("username", username);
|
|
|
try {
|
|
// 发送HTTP请求
|
String result = HttpUtil.post(url, params);
|
JSONObject jsonResult = JSON.parseObject(result);
|
|
// 解析响应
|
GpsDeviceListResponse response = new GpsDeviceListResponse();
|
response.setStatus(jsonResult.getInteger("status"));
|
response.setCause(jsonResult.getString("cause"));
|
|
if (response.getStatus() == 0) {
|
// 解析分组列表
|
JSONArray groupsArray = jsonResult.getJSONArray("groups");
|
List<GpsGroup> groups = new ArrayList<>();
|
|
for (int i = 0; i < groupsArray.size(); i++) {
|
JSONObject groupJson = groupsArray.getJSONObject(i);
|
GpsGroup group = new GpsGroup();
|
group.setGroupid(groupJson.getInteger("groupid"));
|
group.setGroupname(groupJson.getString("groupname"));
|
group.setRemark(groupJson.getString("remark"));
|
|
// 解析设备列表
|
JSONArray devicesArray = groupJson.getJSONArray("devices");
|
List<GpsDevice> devices = new ArrayList<>();
|
|
for (int j = 0; j < devicesArray.size(); j++) {
|
JSONObject deviceJson = devicesArray.getJSONObject(j);
|
GpsDevice device = new GpsDevice();
|
device.setDeviceid(deviceJson.getString("deviceid"));
|
device.setDevicename(deviceJson.getString("devicename"));
|
device.setDevicetype(deviceJson.getInteger("devicetype"));
|
device.setSimnum(deviceJson.getString("simnum"));
|
device.setOverduetime(deviceJson.getLong("overduetime"));
|
device.setExpirenotifytime(deviceJson.getLong("expirenotifytime"));
|
device.setRemark(deviceJson.getString("remark"));
|
device.setCreater(deviceJson.getString("creater"));
|
device.setVideochannelcount(deviceJson.getInteger("videochannelcount"));
|
device.setLastactivetime(deviceJson.getLong("lastactivetime"));
|
device.setIsfree(deviceJson.getInteger("isfree"));
|
device.setAllowedit(deviceJson.getInteger("allowedit"));
|
device.setIcon(deviceJson.getInteger("icon"));
|
device.setStared(deviceJson.getInteger("stared"));
|
device.setLoginname(deviceJson.getString("loginname"));
|
|
devices.add(device);
|
}
|
|
group.setDevices(devices);
|
groups.add(group);
|
}
|
|
response.setGroups(groups);
|
|
|
}
|
|
return response;
|
} catch (Exception e) {
|
GpsDeviceListResponse response = new GpsDeviceListResponse();
|
response.setStatus(-1);
|
response.setCause("请求设备列表失败:" + e.getMessage());
|
return response;
|
}
|
}
|
|
@Override
|
public GpsLastPositionResponse getLastPosition(GpsLastPositionRequest request) {
|
// 获取GPS配置信息
|
SysGpsConfig config = gpsConfigService.selectGpsConfigByKey("gps51");
|
if (config == null) {
|
GpsLastPositionResponse response = new GpsLastPositionResponse();
|
response.setStatus(-1);
|
response.setCause("未找到GPS配置信息");
|
return response;
|
}
|
System.out.println("GPS配置信息获取成功!");
|
|
// 获取有效的token,如果无效则自动登录
|
String token = getValidTokenWithAutoLogin();
|
if (token == null) {
|
GpsLastPositionResponse response = new GpsLastPositionResponse();
|
response.setStatus(-1);
|
response.setCause("获取token失败");
|
return response;
|
}
|
|
System.out.println("token获取成功!"+token);
|
|
// 构建请求URL
|
String url = config.getDomain() + "/webapi?action=lastposition&token="+token;
|
System.out.println("请求URL:"+url);
|
|
// 构建请求参数
|
Map<String, String> params = new HashMap<>();
|
|
|
// 使用配置中的lastquerypositiontime作为查询时间
|
Long lastQueryTime = config.getLastquerypositiontime();
|
if (lastQueryTime == null) {
|
lastQueryTime = 0L; // 如果从未查询过,则从0开始
|
}
|
params.put("lastquerypositiontime", String.valueOf(lastQueryTime));
|
|
// 添加设备ID列表
|
if (request.getDeviceids() != null && !request.getDeviceids().isEmpty()) {
|
params.put("deviceids", JSON.toJSONString(request.getDeviceids()));
|
}
|
|
System.out.println("请求参数:"+params);
|
|
try {
|
|
|
// 发送HTTP请求
|
String result = HttpUtil.post(url, params);
|
JSONObject jsonResult = JSON.parseObject(result);
|
|
// 解析响应
|
GpsLastPositionResponse response = new GpsLastPositionResponse();
|
response.setStatus(jsonResult.getInteger("status"));
|
response.setCause(jsonResult.getString("cause"));
|
|
// 获取新的lastquerypositiontime
|
Long newLastQueryTime = jsonResult.getLong("lastquerypositiontime");
|
response.setLastquerypositiontime(newLastQueryTime);
|
|
// 如果请求成功,更新配置中的lastquerypositiontime
|
if (response.getStatus() == 0 && newLastQueryTime != null) {
|
config.setLastquerypositiontime(newLastQueryTime);
|
gpsConfigService.updateGpsConfig(config);
|
}
|
|
if (response.getStatus() == 0) {
|
// 解析位置记录列表
|
JSONArray recordsArray = jsonResult.getJSONArray("records");
|
List<GpsLastPosition> records = new ArrayList<>();
|
|
for (int i = 0; i < recordsArray.size(); i++) {
|
JSONObject recordJson = recordsArray.getJSONObject(i);
|
GpsLastPosition record = new GpsLastPosition();
|
record.setDeviceid(recordJson.getString("deviceid"));
|
record.setDevicetime(recordJson.getLong("devicetime"));
|
record.setArrivedtime(recordJson.getLong("arrivedtime"));
|
record.setUpdatetime(recordJson.getLong("updatetime"));
|
record.setValidpoistiontime(recordJson.getLong("validpoistiontime"));
|
record.setCallat(recordJson.getDouble("callat"));
|
record.setCallon(recordJson.getDouble("callon"));
|
record.setAltitude(recordJson.getDouble("altitude"));
|
record.setRadius(recordJson.getInteger("radius"));
|
record.setSpeed(recordJson.getDouble("speed"));
|
record.setCourse(recordJson.getInteger("course"));
|
record.setTotaldistance(recordJson.getInteger("totaldistance"));
|
record.setTotaloil(recordJson.getInteger("totaloil"));
|
record.setTotalnotrunningad(recordJson.getInteger("totalnotrunningad"));
|
record.setMasteroil(recordJson.getInteger("masteroil"));
|
record.setAuxoil(recordJson.getInteger("auxoil"));
|
record.setThirdoil(recordJson.getInteger("thirdoil"));
|
record.setFourthoil(recordJson.getInteger("fourthoil"));
|
record.setSrcad0(recordJson.getInteger("srcad0"));
|
record.setSrcad1(recordJson.getInteger("srcad1"));
|
record.setSrcad2(recordJson.getInteger("srcad2"));
|
record.setSrcad3(recordJson.getInteger("srcad3"));
|
record.setStatus(recordJson.getLong("status"));
|
record.setStrstatus(recordJson.getString("strstatus"));
|
record.setStrstatusen(recordJson.getString("strstatusen"));
|
record.setAlarm(recordJson.getLong("alarm"));
|
record.setStralarm(recordJson.getString("stralarm"));
|
record.setStralarmsen(recordJson.getString("stralarmsen"));
|
record.setVideoalarm(recordJson.getLong("videoalarm"));
|
record.setStrvideoalarm(recordJson.getString("strvideoalarm"));
|
record.setStrvideoalarmen(recordJson.getString("strvideoalarmen"));
|
record.setVideosignalloststatus(recordJson.getLong("videosignalloststatus"));
|
record.setVideosignalcoverstatus(recordJson.getLong("videosignalcoverstatus"));
|
record.setVideobehavior(recordJson.getLong("videobehavior"));
|
record.setVideofatiguedegree(recordJson.getLong("videofatiguedegree"));
|
record.setGotsrc(recordJson.getString("gotsrc"));
|
record.setRxlevel(recordJson.getInteger("rxlevel"));
|
record.setGpsvalidnum(recordJson.getInteger("gpsvalidnum"));
|
record.setExvoltage(recordJson.getDouble("exvoltage"));
|
record.setVoltagev(recordJson.getDouble("voltagev"));
|
record.setVoltagepercent(recordJson.getDouble("voltagepercent"));
|
record.setMoving(recordJson.getInteger("moving"));
|
record.setParklat(recordJson.getDouble("parklat"));
|
record.setParklon(recordJson.getDouble("parklon"));
|
record.setParktime(recordJson.getLong("parktime"));
|
record.setParkduration(recordJson.getLong("parkduration"));
|
record.setTemp1(recordJson.getInteger("temp1"));
|
record.setTemp2(recordJson.getInteger("temp2"));
|
record.setTemp3(recordJson.getInteger("temp3"));
|
record.setTemp4(recordJson.getInteger("temp4"));
|
record.setHumi1(recordJson.getInteger("humi1"));
|
record.setHumi2(recordJson.getInteger("humi2"));
|
record.setIostatus(recordJson.getInteger("iostatus"));
|
record.setCurrentoverspeedstate(recordJson.getInteger("currentoverspeedstate"));
|
record.setRotatestatus(recordJson.getShort("rotatestatus"));
|
record.setLoadstatus(recordJson.getShort("loadstatus"));
|
record.setWeight(recordJson.getLong("weight"));
|
record.setSrcweightad0(recordJson.getInteger("srcweightad0"));
|
record.setReportmode(recordJson.getShort("reportmode"));
|
|
records.add(record);
|
}
|
|
response.setRecords(records);
|
}
|
|
return response;
|
} catch (Exception e) {
|
GpsLastPositionResponse response = new GpsLastPositionResponse();
|
response.setStatus(-1);
|
response.setCause("请求设备最后位置失败:" + e.getMessage());
|
return response;
|
}
|
}
|
|
@Override
|
public String getDeviceIdByPlateNumber(String plateNumber) {
|
if (StringUtils.isEmpty(plateNumber)) {
|
return null;
|
}
|
|
try {
|
// 获取设备列表
|
GpsDeviceListResponse response = getDeviceList();
|
if (response.getStatus() != 0) {
|
return null;
|
}
|
|
// 遍历所有分组和设备
|
for (GpsGroup group : response.getGroups()) {
|
for (GpsDevice device : group.getDevices()) {
|
// 检查设备备注中是否包含车牌号
|
if (device.getDevicename() != null && device.getDevicename().contains(plateNumber)) {
|
return device.getDeviceid();
|
}
|
if(device.getRemark()!=null && device.getRemark().contains(plateNumber)){
|
return device.getDeviceid();
|
}
|
}
|
}
|
} catch (Exception e) {
|
// 记录错误日志
|
System.err.println("通过车牌号查询设备号失败:" + e.getMessage());
|
}
|
|
return null;
|
}
|
|
@Override
|
public GpsTrackQueryResponse queryTracks(GpsTrackQueryRequest request) {
|
try {
|
// 获取GPS配置信息
|
SysGpsConfig config = gpsConfigService.selectGpsConfigByKey("gps51");
|
if (config == null) {
|
System.err.println("GPS配置信息未找到,configKey: gps51");
|
GpsTrackQueryResponse response = new GpsTrackQueryResponse();
|
response.setStatus(-1);
|
response.setCause("未找到GPS配置信息");
|
return response;
|
}
|
|
System.out.println("GPS配置信息获取成功,域名: " + config.getDomain() + ", 用户名: " + config.getUsername());
|
|
// 获取有效的token,如果无效则自动登录
|
String token = getValidTokenWithAutoLogin();
|
if (token == null) {
|
System.err.println("获取token失败");
|
GpsTrackQueryResponse response = new GpsTrackQueryResponse();
|
response.setStatus(-1);
|
response.setCause("获取token失败");
|
return response;
|
}
|
|
System.out.println("Token获取成功: " + token);
|
|
// 构建请求URL
|
String url = config.getDomain() + "/webapi?action=querytracks&token=" + token;
|
System.out.println("请求URL: " + url);
|
|
// 构建请求参数
|
Map<String, String> params = new HashMap<>();
|
params.put("deviceid", request.getDeviceid());
|
params.put("begintime", request.getBegintime());
|
params.put("endtime", request.getEndtime());
|
if (request.getTimezone() != null) {
|
params.put("timezone", String.valueOf(request.getTimezone()));
|
}
|
|
System.out.println("请求参数: " + params);
|
|
// 发送HTTP请求
|
String result = HttpUtil.post(url, params);
|
System.out.println("HTTP响应结果: " + result);
|
|
if (result == null || result.trim().isEmpty()) {
|
System.err.println("HTTP请求返回空结果");
|
GpsTrackQueryResponse response = new GpsTrackQueryResponse();
|
response.setStatus(-1);
|
response.setCause("HTTP请求返回空结果");
|
return response;
|
}
|
|
JSONObject jsonResult = JSON.parseObject(result);
|
|
// 解析响应
|
GpsTrackQueryResponse response = new GpsTrackQueryResponse();
|
response.setStatus(jsonResult.getInteger("status"));
|
response.setCause(jsonResult.getString("cause"));
|
response.setDeviceid(jsonResult.getString("deviceid"));
|
|
if (response.getStatus() == 0) {
|
|
if(jsonResult.getJSONObject("result")==null)
|
{
|
System.err.println("查询轨迹失败,轨迹记录为空");
|
GpsTrackQueryResponse responseErr = new GpsTrackQueryResponse();
|
responseErr.setStatus(-1);
|
responseErr.setCause("轨迹记录为空");
|
return responseErr;
|
}
|
|
// 解析轨迹记录列表
|
JSONArray recordsArray = jsonResult.getJSONArray("records");
|
List<GpsTrackPoint> records = new ArrayList<>();
|
|
for (int i = 0; i < recordsArray.size(); i++) {
|
JSONObject recordJson = recordsArray.getJSONObject(i);
|
GpsTrackPoint record = new GpsTrackPoint();
|
record.setTrackCount(recordJson.getInteger("trackCount"));
|
record.setStarttime(recordJson.getLong("starttime"));
|
record.setEndtime(recordJson.getLong("endtime"));
|
record.setTrackid(recordJson.getInteger("trackid"));
|
record.setArrivedtime(recordJson.getLong("arrivedtime"));
|
record.setUpdatetime(recordJson.getLong("updatetime"));
|
record.setLatitude(recordJson.getDouble("callat"));
|
record.setLongitude(recordJson.getDouble("callon"));
|
record.setAltitude(recordJson.getDouble("altitude"));
|
record.setRadius(recordJson.getInteger("radius"));
|
record.setSpeed(recordJson.getDouble("speed"));
|
record.setRecorderspeed(recordJson.getDouble("recorderspeed"));
|
record.setTotaldistance(recordJson.getInteger("totaldistance"));
|
record.setCourse(recordJson.getInteger("course"));
|
record.setStatus(recordJson.getLong("status"));
|
record.setStrstatus(recordJson.getString("strstatus"));
|
record.setStrstatusen(recordJson.getString("strstatusen"));
|
record.setGotsrc(recordJson.getString("gotsrc"));
|
record.setRxlevel(recordJson.getInteger("rxlevel"));
|
record.setGpsvalidnum(recordJson.getInteger("gpsvalidnum"));
|
record.setReportmode(recordJson.getShort("reportmode"));
|
|
records.add(record);
|
}
|
|
response.setRecords(records);
|
}
|
|
return response;
|
} catch (Exception e) {
|
System.err.println("查询历史轨迹异常: " + e.getMessage());
|
e.printStackTrace();
|
GpsTrackQueryResponse response = new GpsTrackQueryResponse();
|
response.setStatus(-1);
|
response.setCause("查询历史轨迹失败:" + (e.getMessage() != null ? e.getMessage() : e.getClass().getSimpleName()));
|
return response;
|
}
|
}
|
}
|