| | |
| | | |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public GpsTrackQueryResponse queryTracks(GpsTrackQueryRequest request) { |
| | | // 获取GPS配置信息 |
| | | SysGpsConfig config = gpsConfigService.selectGpsConfigByKey("gps51"); |
| | | if (config == null) { |
| | | GpsTrackQueryResponse response = new GpsTrackQueryResponse(); |
| | | response.setStatus(-1); |
| | | response.setCause("未找到GPS配置信息"); |
| | | return response; |
| | | } |
| | | |
| | | // 获取有效的token,如果无效则自动登录 |
| | | String token = getValidTokenWithAutoLogin(); |
| | | if (token == null) { |
| | | GpsTrackQueryResponse response = new GpsTrackQueryResponse(); |
| | | response.setStatus(-1); |
| | | response.setCause("获取token失败"); |
| | | return response; |
| | | } |
| | | |
| | | // 构建请求URL |
| | | String url = config.getDomain() + "/webapi?action=querytracks&token=" + token; |
| | | |
| | | // 构建请求参数 |
| | | 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())); |
| | | } |
| | | |
| | | try { |
| | | // 发送HTTP请求 |
| | | String result = HttpUtil.post(url, params); |
| | | 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) { |
| | | // 解析轨迹记录列表 |
| | | 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) { |
| | | GpsTrackQueryResponse response = new GpsTrackQueryResponse(); |
| | | response.setStatus(-1); |
| | | response.setCause("查询历史轨迹失败:" + e.getMessage()); |
| | | return response; |
| | | } |
| | | } |
| | | } |