|  |  |  | 
|---|
|  |  |  | mobilePosition.setDeviceId(device.getDeviceId()); | 
|---|
|  |  |  | mobilePosition.setChannelId(channelId); | 
|---|
|  |  |  | String time = XmlUtil.getText(rootElement, "Time"); | 
|---|
|  |  |  | mobilePosition.setTime(time); | 
|---|
|  |  |  | if (ObjectUtils.isEmpty(time)){ | 
|---|
|  |  |  | mobilePosition.setTime(DateUtil.getNow()); | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | mobilePosition.setTime(SipUtils.parseTime(time)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | mobilePosition.setLongitude(Double.parseDouble(XmlUtil.getText(rootElement, "Longitude"))); | 
|---|
|  |  |  | mobilePosition.setLatitude(Double.parseDouble(XmlUtil.getText(rootElement, "Latitude"))); | 
|---|
|  |  |  | if (NumericUtil.isDouble(XmlUtil.getText(rootElement, "Speed"))) { | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 发送redis消息。 通知位置信息的变化 | 
|---|
|  |  |  | JSONObject jsonObject = new JSONObject(); | 
|---|
|  |  |  | jsonObject.put("time", time); | 
|---|
|  |  |  | jsonObject.put("time", DateUtil.yyyy_MM_dd_HH_mm_ssToISO8601(mobilePosition.getTime())); | 
|---|
|  |  |  | jsonObject.put("serial", deviceId); | 
|---|
|  |  |  | jsonObject.put("code", channelId); | 
|---|
|  |  |  | jsonObject.put("longitude", mobilePosition.getLongitude()); | 
|---|
|  |  |  | 
|---|
|  |  |  | storager.updateChannelPosition(deviceChannel); | 
|---|
|  |  |  | // 发送redis消息。 通知位置信息的变化 | 
|---|
|  |  |  | JSONObject jsonObject = new JSONObject(); | 
|---|
|  |  |  | jsonObject.put("time", mobilePosition.getTime()); | 
|---|
|  |  |  | jsonObject.put("time", DateUtil.yyyy_MM_dd_HH_mm_ssToISO8601(mobilePosition.getTime())); | 
|---|
|  |  |  | jsonObject.put("serial", deviceChannel.getDeviceId()); | 
|---|
|  |  |  | jsonObject.put("code", deviceChannel.getChannelId()); | 
|---|
|  |  |  | jsonObject.put("longitude", mobilePosition.getLongitude()); | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 发送redis消息。 通知位置信息的变化 | 
|---|
|  |  |  | JSONObject jsonObject = new JSONObject(); | 
|---|
|  |  |  | jsonObject.put("time", mobilePosition.getTime()); | 
|---|
|  |  |  | jsonObject.put("time", DateUtil.yyyy_MM_dd_HH_mm_ssToISO8601(mobilePosition.getTime())); | 
|---|
|  |  |  | jsonObject.put("serial", deviceChannel.getDeviceId()); | 
|---|
|  |  |  | jsonObject.put("code", deviceChannel.getChannelId()); | 
|---|
|  |  |  | jsonObject.put("longitude", mobilePosition.getLongitude()); | 
|---|
|  |  |  | 
|---|
|  |  |  | import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.IMessageHandler; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.notify.NotifyMessageHandler; | 
|---|
|  |  |  | 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(sipMsgInfo.getDevice().getDeviceId()); | 
|---|
|  |  |  | mobilePosition.setChannelId(getText(rootElementAfterCharset, "DeviceID")); | 
|---|
|  |  |  | mobilePosition.setTime(getText(rootElementAfterCharset, "Time")); | 
|---|
|  |  |  | String time = getText(rootElementAfterCharset, "Time"); | 
|---|
|  |  |  | if (ObjectUtils.isEmpty(time)){ | 
|---|
|  |  |  | mobilePosition.setTime(DateUtil.getNow()); | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | mobilePosition.setTime(SipUtils.parseTime(time)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | mobilePosition.setLongitude(Double.parseDouble(getText(rootElementAfterCharset, "Longitude"))); | 
|---|
|  |  |  | mobilePosition.setLatitude(Double.parseDouble(getText(rootElementAfterCharset, "Latitude"))); | 
|---|
|  |  |  | if (NumericUtil.isDouble(getText(rootElementAfterCharset, "Speed"))) { | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 发送redis消息。 通知位置信息的变化 | 
|---|
|  |  |  | JSONObject jsonObject = new JSONObject(); | 
|---|
|  |  |  | jsonObject.put("time", mobilePosition.getTime()); | 
|---|
|  |  |  | jsonObject.put("time", DateUtil.yyyy_MM_dd_HH_mm_ssToISO8601(mobilePosition.getTime())); | 
|---|
|  |  |  | jsonObject.put("serial", deviceChannel.getDeviceId()); | 
|---|
|  |  |  | jsonObject.put("code", deviceChannel.getChannelId()); | 
|---|
|  |  |  | jsonObject.put("longitude", mobilePosition.getLongitude()); | 
|---|
|  |  |  | 
|---|
|  |  |  | 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.setChannelId(getText(rootElement, "DeviceID")); | 
|---|
|  |  |  | //兼容ISO 8601格式时间 | 
|---|
|  |  |  | String time = getText(rootElement, "Time"); | 
|---|
|  |  |  | DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); | 
|---|
|  |  |  | mobilePosition.setTime(LocalDateTime.parse(time).format(formatter)); | 
|---|
|  |  |  | 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"))) { | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 发送redis消息。 通知位置信息的变化 | 
|---|
|  |  |  | JSONObject jsonObject = new JSONObject(); | 
|---|
|  |  |  | jsonObject.put("time", mobilePosition.getTime()); | 
|---|
|  |  |  | jsonObject.put("time", DateUtil.yyyy_MM_dd_HH_mm_ssToISO8601(mobilePosition.getTime())); | 
|---|
|  |  |  | jsonObject.put("serial", deviceChannel.getDeviceId()); | 
|---|
|  |  |  | jsonObject.put("code", deviceChannel.getChannelId()); | 
|---|
|  |  |  | jsonObject.put("longitude", mobilePosition.getLongitude()); | 
|---|
|  |  |  | 
|---|
|  |  |  | import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.gb28181.bean.Gb28181Sdp; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.gb28181.bean.RemoteAddressInfo; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.utils.DateUtil; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.utils.GitUtil; | 
|---|
|  |  |  | import gov.nist.javax.sip.address.AddressImpl; | 
|---|
|  |  |  | import gov.nist.javax.sip.address.SipUri; | 
|---|
|  |  |  | import gov.nist.javax.sip.header.Subject; | 
|---|
|  |  |  | import gov.nist.javax.sip.message.SIPRequest; | 
|---|
|  |  |  | import org.apache.commons.lang3.RandomStringUtils; | 
|---|
|  |  |  | import org.slf4j.Logger; | 
|---|
|  |  |  | import org.slf4j.LoggerFactory; | 
|---|
|  |  |  | import org.springframework.util.ObjectUtils; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import javax.sdp.SdpFactory; | 
|---|
|  |  |  | 
|---|
|  |  |  | import javax.sip.header.UserAgentHeader; | 
|---|
|  |  |  | import javax.sip.message.Request; | 
|---|
|  |  |  | import java.text.ParseException; | 
|---|
|  |  |  | import java.time.LocalDateTime; | 
|---|
|  |  |  | import java.time.format.DateTimeParseException; | 
|---|
|  |  |  | import java.util.ArrayList; | 
|---|
|  |  |  | import java.util.List; | 
|---|
|  |  |  | import java.util.UUID; | 
|---|
|  |  |  | 
|---|
|  |  |  | * @createTime 2021年09月27日 15:12:00 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public class SipUtils { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private final static Logger logger = LoggerFactory.getLogger(SipUtils.class); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public static String getUserIdFromFromHeader(Request request) { | 
|---|
|  |  |  | FromHeader fromHeader = (FromHeader)request.getHeader(FromHeader.NAME); | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public static String parseTime(String timeStr) { | 
|---|
|  |  |  | if (ObjectUtils.isEmpty(timeStr)){ | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | System.out.println(timeStr); | 
|---|
|  |  |  | LocalDateTime localDateTime; | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | localDateTime = LocalDateTime.parse(timeStr); | 
|---|
|  |  |  | }catch (DateTimeParseException e) { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | localDateTime = LocalDateTime.parse(timeStr, DateUtil.formatterISO8601); | 
|---|
|  |  |  | }catch (DateTimeParseException e2) { | 
|---|
|  |  |  | logger.error("[格式化时间] 无法格式化时间: {}", timeStr); | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return localDateTime.format(DateUtil.formatterISO8601); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|