|
|
@@ -5,9 +5,11 @@ import java.text.ParseException;
|
|
|
import java.util.*;
|
|
|
|
|
|
import javax.sip.*;
|
|
|
+import javax.sip.address.Address;
|
|
|
import javax.sip.address.SipURI;
|
|
|
|
|
|
import javax.sip.header.FromHeader;
|
|
|
+import javax.sip.header.Header;
|
|
|
import javax.sip.header.HeaderAddress;
|
|
|
import javax.sip.header.ToHeader;
|
|
|
import javax.sip.message.Request;
|
|
|
@@ -34,6 +36,7 @@ import com.genersoft.iot.vmp.service.IDeviceAlarmService;
|
|
|
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
|
|
|
import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
|
|
|
import com.genersoft.iot.vmp.utils.GpsUtil;
|
|
|
+import com.genersoft.iot.vmp.utils.SipUtils;
|
|
|
import com.genersoft.iot.vmp.utils.SpringBeanFactory;
|
|
|
import com.genersoft.iot.vmp.utils.redis.RedisUtil;
|
|
|
import com.genersoft.iot.vmp.vmanager.gb28181.platform.bean.ChannelReduce;
|
|
|
@@ -166,18 +169,21 @@ public class MessageRequestProcessor extends SIPRequestAbstractProcessor {
|
|
|
*/
|
|
|
private void processMessageMobilePosition(RequestEvent evt) {
|
|
|
try {
|
|
|
- Element rootElement = getRootElement(evt);
|
|
|
+ String deviceId = SipUtils.getUserIdFromFromHeader(evt.getRequest());
|
|
|
+ Device device = storager.queryVideoDevice(deviceId);
|
|
|
+ if (device == null) {
|
|
|
+ logger.warn("处理MobilePosition移动位置消息时未找到设备信息");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ Element rootElement = getRootElement(evt, device.getCharset());
|
|
|
+
|
|
|
MobilePosition mobilePosition = new MobilePosition();
|
|
|
Element deviceIdElement = rootElement.element("DeviceID");
|
|
|
- String deviceId = deviceIdElement.getTextTrim().toString();
|
|
|
- Device device = storager.queryVideoDevice(deviceId);
|
|
|
- if (device != null) {
|
|
|
- rootElement = getRootElement(evt, device.getCharset());
|
|
|
- if (!StringUtils.isEmpty(device.getName())) {
|
|
|
- mobilePosition.setDeviceName(device.getName());
|
|
|
- }
|
|
|
+ if (!StringUtils.isEmpty(device.getName())) {
|
|
|
+ mobilePosition.setDeviceName(device.getName());
|
|
|
}
|
|
|
- mobilePosition.setDeviceId(XmlUtil.getText(rootElement, "DeviceID"));
|
|
|
+ mobilePosition.setDeviceId(deviceId);
|
|
|
+ mobilePosition.setChannelId(XmlUtil.getText(rootElement, "DeviceID"));
|
|
|
mobilePosition.setTime(XmlUtil.getText(rootElement, "Time"));
|
|
|
mobilePosition.setLongitude(Double.parseDouble(XmlUtil.getText(rootElement, "Longitude")));
|
|
|
mobilePosition.setLatitude(Double.parseDouble(XmlUtil.getText(rootElement, "Latitude")));
|
|
|
@@ -691,16 +697,18 @@ public class MessageRequestProcessor extends SIPRequestAbstractProcessor {
|
|
|
*/
|
|
|
private void processMessageAlarm(RequestEvent evt) {
|
|
|
try {
|
|
|
- Element rootElement = getRootElement(evt);
|
|
|
- Element deviceIdElement = rootElement.element("DeviceID");
|
|
|
- String deviceId = deviceIdElement.getText().toString();
|
|
|
- // 回复200 OK
|
|
|
- responseAck(evt);
|
|
|
-
|
|
|
+ String deviceId = SipUtils.getUserIdFromFromHeader(evt.getRequest());
|
|
|
Device device = storager.queryVideoDevice(deviceId);
|
|
|
if (device == null) {
|
|
|
+ logger.warn("处理alarm设备报警信息未找到设备信息");
|
|
|
return;
|
|
|
}
|
|
|
+ Element rootElement = getRootElement(evt, device.getCharset());
|
|
|
+ Element deviceIdElement = rootElement.element("DeviceID");
|
|
|
+ String channelId = deviceIdElement.getText().toString();
|
|
|
+ // 回复200 OK
|
|
|
+ responseAck(evt);
|
|
|
+
|
|
|
if (device.getCharset() != null) {
|
|
|
rootElement = getRootElement(evt, device.getCharset());
|
|
|
}
|
|
|
@@ -708,6 +716,7 @@ public class MessageRequestProcessor extends SIPRequestAbstractProcessor {
|
|
|
if (rootElement.getName().equals("Notify")) { // 处理报警通知
|
|
|
DeviceAlarm deviceAlarm = new DeviceAlarm();
|
|
|
deviceAlarm.setDeviceId(deviceId);
|
|
|
+ deviceAlarm.setChannelId(channelId);
|
|
|
deviceAlarm.setAlarmPriority(XmlUtil.getText(rootElement, "AlarmPriority"));
|
|
|
deviceAlarm.setAlarmMethod(XmlUtil.getText(rootElement, "AlarmMethod"));
|
|
|
deviceAlarm.setAlarmTime(XmlUtil.getText(rootElement, "AlarmTime"));
|
|
|
@@ -792,7 +801,9 @@ public class MessageRequestProcessor extends SIPRequestAbstractProcessor {
|
|
|
Response response = getMessageFactory().createResponse(Response.NOT_FOUND, evt.getRequest());
|
|
|
ServerTransaction serverTransaction = getServerTransaction(evt);
|
|
|
serverTransaction.sendResponse(response);
|
|
|
- if (serverTransaction.getDialog() != null) serverTransaction.getDialog().delete();
|
|
|
+ if (serverTransaction.getDialog() != null) {
|
|
|
+ serverTransaction.getDialog().delete();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// if (device != null && device.getOnline() == 1) {
|
|
|
@@ -1006,7 +1017,9 @@ public class MessageRequestProcessor extends SIPRequestAbstractProcessor {
|
|
|
Response response = getMessageFactory().createResponse(Response.OK, evt.getRequest());
|
|
|
ServerTransaction serverTransaction = getServerTransaction(evt);
|
|
|
serverTransaction.sendResponse(response);
|
|
|
- if (serverTransaction.getDialog() != null) serverTransaction.getDialog().delete();
|
|
|
+ if (serverTransaction.getDialog() != null) {
|
|
|
+ serverTransaction.getDialog().delete();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/***
|
|
|
@@ -1020,7 +1033,9 @@ public class MessageRequestProcessor extends SIPRequestAbstractProcessor {
|
|
|
Response response = getMessageFactory().createResponse(Response.NOT_FOUND, evt.getRequest());
|
|
|
ServerTransaction serverTransaction = getServerTransaction(evt);
|
|
|
serverTransaction.sendResponse(response);
|
|
|
- if (serverTransaction.getDialog() != null) serverTransaction.getDialog().delete();
|
|
|
+ if (serverTransaction.getDialog() != null) {
|
|
|
+ serverTransaction.getDialog().delete();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
private Element getRootElement(RequestEvent evt) throws DocumentException {
|
|
|
@@ -1029,7 +1044,9 @@ public class MessageRequestProcessor extends SIPRequestAbstractProcessor {
|
|
|
}
|
|
|
|
|
|
private Element getRootElement(RequestEvent evt, String charset) throws DocumentException {
|
|
|
- if (charset == null) charset = "gb2312";
|
|
|
+ if (charset == null) {
|
|
|
+ charset = "gb2312";
|
|
|
+ }
|
|
|
Request request = evt.getRequest();
|
|
|
SAXReader reader = new SAXReader();
|
|
|
reader.setEncoding(charset);
|