old mode 100644
new mode 100755
| | |
| | | package com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.response.cmd; |
| | | |
| | | import com.alibaba.fastjson2.JSONObject; |
| | | import com.genersoft.iot.vmp.conf.UserSetting; |
| | | import com.genersoft.iot.vmp.gb28181.bean.Device; |
| | | import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; |
| | |
| | | import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.IMessageHandler; |
| | | import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.response.ResponseMessageHandler; |
| | | import com.genersoft.iot.vmp.gb28181.utils.NumericUtil; |
| | | import com.genersoft.iot.vmp.gb28181.utils.SipUtils; |
| | | import com.genersoft.iot.vmp.service.IDeviceChannelService; |
| | | import com.genersoft.iot.vmp.storager.IRedisCatchStorage; |
| | | import com.genersoft.iot.vmp.storager.IVideoManagerStorage; |
| | |
| | | } |
| | | mobilePosition.setDeviceId(device.getDeviceId()); |
| | | mobilePosition.setChannelId(getText(rootElement, "DeviceID")); |
| | | mobilePosition.setTime(getText(rootElement, "Time")); |
| | | //兼容ISO 8601格式时间 |
| | | String time = getText(rootElement, "Time"); |
| | | if (ObjectUtils.isEmpty(time)){ |
| | | mobilePosition.setTime(DateUtil.getNow()); |
| | | }else { |
| | | mobilePosition.setTime(SipUtils.parseTime(time)); |
| | | } |
| | | mobilePosition.setLongitude(Double.parseDouble(getText(rootElement, "Longitude"))); |
| | | mobilePosition.setLatitude(Double.parseDouble(getText(rootElement, "Latitude"))); |
| | | if (NumericUtil.isDouble(getText(rootElement, "Speed"))) { |
| | |
| | | mobilePosition.setLongitudeGcj02(deviceChannel.getLongitudeGcj02()); |
| | | mobilePosition.setLatitudeGcj02(deviceChannel.getLatitudeGcj02()); |
| | | |
| | | if (userSetting.getSavePositionHistory()) { |
| | | storager.insertMobilePosition(mobilePosition); |
| | | } |
| | | |
| | | storager.updateChannelPosition(deviceChannel); |
| | | deviceChannelService.updateChannelGPS(device, deviceChannel, mobilePosition); |
| | | |
| | | String key = DeferredResultHolder.CALLBACK_CMD_MOBILE_POSITION + device.getDeviceId(); |
| | | RequestMessage msg = new RequestMessage(); |
| | |
| | | msg.setData(mobilePosition); |
| | | resultHolder.invokeAllResult(msg); |
| | | |
| | | // 发送redis消息。 通知位置信息的变化 |
| | | JSONObject jsonObject = new JSONObject(); |
| | | jsonObject.put("time", mobilePosition.getTime()); |
| | | jsonObject.put("serial", deviceChannel.getDeviceId()); |
| | | jsonObject.put("code", deviceChannel.getChannelId()); |
| | | jsonObject.put("longitude", mobilePosition.getLongitude()); |
| | | jsonObject.put("latitude", mobilePosition.getLatitude()); |
| | | jsonObject.put("altitude", mobilePosition.getAltitude()); |
| | | jsonObject.put("direction", mobilePosition.getDirection()); |
| | | jsonObject.put("speed", mobilePosition.getSpeed()); |
| | | redisCatchStorage.sendMobilePositionMsg(jsonObject); |
| | | //回复 200 OK |
| | | try { |
| | | responseAck(request, Response.OK); |