Merge branch 'master' into dev/数据库统合

# Conflicts:
#	src/main/java/com/genersoft/iot/vmp/gb28181/dao/DeviceMapper.java
#	src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/GbChannelPlayServiceImpl.java
#	src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/PlatformChannelServiceImpl.java
This commit is contained in:
648540858
2024-12-27 10:57:42 +08:00
47 changed files with 473 additions and 392 deletions

View File

@@ -199,7 +199,7 @@ public class ByeRequestProcessor extends SIPRequestProcessorParent implements In
platformService.stopBroadcast(platform, channel, ssrcTransaction.getStream(), false,
mediaServerService.getOne(mediaServerId));
DeviceChannel deviceChannel = deviceChannelService.getOneForSourceById(channel.getGbId());
Device device = deviceService.getDevice(channel.getGbDeviceDbId());
Device device = deviceService.getDevice(channel.getDataDeviceId());
playService.stopAudioBroadcast(device, deviceChannel);
}

View File

@@ -115,7 +115,7 @@ public class NotifyRequestForCatalogProcessor extends SIPRequestProcessorParent
log.info("[解析CatalogChannelEvent]成功:但是解析通道信息失败, 原文如下: \n{}", new String(evt.getRequest().getRawContent()));
continue;
}
catalogChannelEvent.getChannel().setDeviceDbId(device.getId());
catalogChannelEvent.getChannel().setDataDeviceId(device.getId());
} catch (InvocationTargetException | NoSuchMethodException | InstantiationException |
IllegalAccessException e) {
log.error("[解析CatalogChannelEvent]失败,", e);

View File

@@ -1,5 +1,6 @@
package com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.info;
import com.genersoft.iot.vmp.common.enums.ChannelDataType;
import com.genersoft.iot.vmp.gb28181.bean.*;
import com.genersoft.iot.vmp.gb28181.event.SipSubscribe;
import com.genersoft.iot.vmp.gb28181.service.*;
@@ -101,7 +102,7 @@ public class InfoRequestProcessor extends SIPRequestProcessorParent implements I
return;
}
// 判断通道类型
if (channel.getGbDeviceDbId() == null) {
if (channel.getDataType() != ChannelDataType.GB28181.value) {
// 非国标通道不支持录像回放控制
log.warn("[INFO 消息] 非国标通道不支持录像回放控制: 通道ID {}", sendRtpInfo.getChannelId());
responseAck(request, Response.FORBIDDEN, "");
@@ -109,7 +110,7 @@ public class InfoRequestProcessor extends SIPRequestProcessorParent implements I
}
// 根据通道ID获取所属设备
Device device = deviceService.getDevice(channel.getGbDeviceDbId());
Device device = deviceService.getDevice(channel.getDataDeviceId());
if (device == null) {
// 不存在则回复404
log.warn("[INFO 消息] 通道所属设备不存在, 通道ID {}", sendRtpInfo.getChannelId());

View File

@@ -1,5 +1,6 @@
package com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.control.cmd;
import com.genersoft.iot.vmp.common.enums.ChannelDataType;
import com.genersoft.iot.vmp.common.enums.DeviceControlType;
import com.genersoft.iot.vmp.gb28181.bean.*;
import com.genersoft.iot.vmp.gb28181.event.SipSubscribe;
@@ -134,7 +135,7 @@ public class DeviceControlQueryMessageHandler extends SIPRequestProcessorParent
* 处理云台指令
*/
private void handlePtzCmd(CommonGBChannel channel, Element rootElement, SIPRequest request, DeviceControlType type) {
if (channel.getGbDeviceDbId() == 0) {
if (channel.getDataType() != ChannelDataType.GB28181.value) {
// 只支持国标的云台控制
log.warn("[INFO 消息] 只支持国标的云台控制, 通道ID {}", channel.getGbId());
try {
@@ -145,7 +146,7 @@ public class DeviceControlQueryMessageHandler extends SIPRequestProcessorParent
return;
}
// 根据通道ID获取所属设备
Device device = deviceService.getDevice(channel.getGbDeviceDbId());
Device device = deviceService.getDevice(channel.getDataDeviceId());
if (device == null) {
// 不存在则回复404
log.warn("[INFO 消息] 通道所属设备不存在, 通道ID {}", channel.getGbId());
@@ -184,7 +185,7 @@ public class DeviceControlQueryMessageHandler extends SIPRequestProcessorParent
* 处理强制关键帧
*/
private void handleIFameCmd(CommonGBChannel channel, SIPRequest request) {
if (channel.getGbDeviceDbId() == 0) {
if (channel.getDataType() != ChannelDataType.GB28181.value) {
// 只支持国标的云台控制
log.warn("[INFO 消息] 只支持国标的处理强制关键帧, 通道ID {}", channel.getGbId());
try {
@@ -195,7 +196,7 @@ public class DeviceControlQueryMessageHandler extends SIPRequestProcessorParent
return;
}
// 根据通道ID获取所属设备
Device device = deviceService.getDevice(channel.getGbDeviceDbId());
Device device = deviceService.getDevice(channel.getDataDeviceId());
if (device == null) {
// 不存在则回复404
log.warn("[INFO 消息] 通道所属设备不存在, 通道ID {}", channel.getGbId());
@@ -232,7 +233,7 @@ public class DeviceControlQueryMessageHandler extends SIPRequestProcessorParent
* 处理重启命令
*/
private void handleTeleBootCmd(CommonGBChannel channel, SIPRequest request) {
if (channel.getGbDeviceDbId() == 0) {
if (channel.getDataType() != ChannelDataType.GB28181.value) {
// 只支持国标的云台控制
log.warn("[INFO 消息] 只支持国标的重启命令, 通道ID {}", channel.getGbId());
try {
@@ -243,7 +244,7 @@ public class DeviceControlQueryMessageHandler extends SIPRequestProcessorParent
return;
}
// 根据通道ID获取所属设备
Device device = deviceService.getDevice(channel.getGbDeviceDbId());
Device device = deviceService.getDevice(channel.getDataDeviceId());
if (device == null) {
// 不存在则回复404
log.warn("[INFO 消息] 通道所属设备不存在, 通道ID {}", channel.getGbId());
@@ -267,7 +268,7 @@ public class DeviceControlQueryMessageHandler extends SIPRequestProcessorParent
* 处理拉框控制
*/
private void handleDragZoom(CommonGBChannel channel, Element rootElement, SIPRequest request, DeviceControlType type) {
if (channel.getGbDeviceDbId() == 0) {
if (channel.getDataType() != ChannelDataType.GB28181.value) {
// 只支持国标的云台控制
log.warn("[INFO 消息] 只支持国标的拉框控制, 通道ID {}", channel.getGbId());
try {
@@ -278,7 +279,7 @@ public class DeviceControlQueryMessageHandler extends SIPRequestProcessorParent
return;
}
// 根据通道ID获取所属设备
Device device = deviceService.getDevice(channel.getGbDeviceDbId());
Device device = deviceService.getDevice(channel.getDataDeviceId());
if (device == null) {
// 不存在则回复404
log.warn("[INFO 消息] 通道所属设备不存在, 通道ID {}", channel.getGbId());
@@ -330,7 +331,7 @@ public class DeviceControlQueryMessageHandler extends SIPRequestProcessorParent
* 处理看守位命令
*/
private void handleHomePositionCmd(CommonGBChannel channel, Element rootElement, SIPRequest request, DeviceControlType type) {
if (channel.getGbDeviceDbId() == 0) {
if (channel.getDataType() != ChannelDataType.GB28181.value) {
// 只支持国标的云台控制
log.warn("[INFO 消息] 只支持国标的看守位命令, 通道ID {}", channel.getGbId());
try {
@@ -341,7 +342,7 @@ public class DeviceControlQueryMessageHandler extends SIPRequestProcessorParent
return;
}
// 根据通道ID获取所属设备
Device device = deviceService.getDevice(channel.getGbDeviceDbId());
Device device = deviceService.getDevice(channel.getDataDeviceId());
if (device == null) {
// 不存在则回复404
log.warn("[INFO 消息] 通道所属设备不存在, 通道ID {}", channel.getGbId());
@@ -382,7 +383,7 @@ public class DeviceControlQueryMessageHandler extends SIPRequestProcessorParent
* 处理告警消息
*/
private void handleAlarmCmd(CommonGBChannel channel, Element rootElement, SIPRequest request) {
if (channel.getGbDeviceDbId() == 0) {
if (channel.getDataType() != ChannelDataType.GB28181.value) {
// 只支持国标的云台控制
log.warn("[INFO 消息] 只支持国标的告警消息, 通道ID {}", channel.getGbId());
try {
@@ -393,7 +394,7 @@ public class DeviceControlQueryMessageHandler extends SIPRequestProcessorParent
return;
}
// 根据通道ID获取所属设备
Device device = deviceService.getDevice(channel.getGbDeviceDbId());
Device device = deviceService.getDevice(channel.getDataDeviceId());
if (device == null) {
// 不存在则回复404
log.warn("[INFO 消息] 通道所属设备不存在, 通道ID {}", channel.getGbId());
@@ -428,7 +429,7 @@ public class DeviceControlQueryMessageHandler extends SIPRequestProcessorParent
* 处理录像控制
*/
private void handleRecordCmd(CommonGBChannel channel, Element rootElement, SIPRequest request, DeviceControlType type) {
if (channel.getGbDeviceDbId() == 0) {
if (channel.getDataType() != ChannelDataType.GB28181.value) {
// 只支持国标的云台控制
log.warn("[INFO 消息] 只支持国标的息录像控制, 通道ID {}", channel.getGbId());
try {
@@ -439,7 +440,7 @@ public class DeviceControlQueryMessageHandler extends SIPRequestProcessorParent
return;
}
// 根据通道ID获取所属设备
Device device = deviceService.getDevice(channel.getGbDeviceDbId());
Device device = deviceService.getDevice(channel.getDataDeviceId());
if (device == null) {
// 不存在则回复404
log.warn("[INFO 消息] 通道所属设备不存在, 通道ID {}", channel.getGbId());
@@ -480,7 +481,7 @@ public class DeviceControlQueryMessageHandler extends SIPRequestProcessorParent
* 处理报警布防/撤防命令
*/
private void handleGuardCmd(CommonGBChannel channel, Element rootElement, SIPRequest request, DeviceControlType type) {
if (channel.getGbDeviceDbId() == 0) {
if (channel.getDataType() != ChannelDataType.GB28181.value) {
// 只支持国标的云台控制
log.warn("[INFO 消息] 只支持国标的报警布防/撤防命令, 通道ID {}", channel.getGbId());
try {
@@ -491,7 +492,7 @@ public class DeviceControlQueryMessageHandler extends SIPRequestProcessorParent
return;
}
// 根据通道ID获取所属设备
Device device = deviceService.getDevice(channel.getGbDeviceDbId());
Device device = deviceService.getDevice(channel.getDataDeviceId());
if (device == null) {
// 不存在则回复404
log.warn("[INFO 消息] 通道所属设备不存在, 通道ID {}", channel.getGbId());

View File

@@ -1,5 +1,6 @@
package com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.notify.cmd;
import com.genersoft.iot.vmp.common.enums.ChannelDataType;
import com.genersoft.iot.vmp.conf.exception.ControllerException;
import com.genersoft.iot.vmp.gb28181.bean.*;
import com.genersoft.iot.vmp.gb28181.service.*;
@@ -106,8 +107,18 @@ public class BroadcastNotifyMessageHandler extends SIPRequestProcessorParent imp
responseAck(request, Response.NOT_FOUND, "TargetID not found");
return;
}
if (channel.getDataType() != ChannelDataType.GB28181.value) {
// 只支持国标的语音喊话
log.warn("[INFO 消息] 只支持国标的语音喊话命令, 通道ID {}", channel.getGbId());
try {
responseAck(request, Response.FORBIDDEN, "");
} catch (SipException | InvalidArgumentException | ParseException e) {
log.error("[命令发送失败] 错误信息: {}", e.getMessage());
}
return;
}
// 向下级发送语音的喊话请求
Device device = deviceService.getDevice(channel.getGbDeviceDbId());
Device device = deviceService.getDevice(channel.getDataDeviceId());
if (device == null) {
responseAck(request, Response.NOT_FOUND, "device not found");
return;

View File

@@ -1,5 +1,6 @@
package com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.query.cmd;
import com.genersoft.iot.vmp.common.enums.ChannelDataType;
import com.genersoft.iot.vmp.gb28181.bean.CommonGBChannel;
import com.genersoft.iot.vmp.gb28181.bean.Device;
import com.genersoft.iot.vmp.gb28181.bean.Platform;
@@ -93,7 +94,7 @@ public class DeviceInfoQueryMessageHandler extends SIPRequestProcessorParent imp
return;
}
// 判断通道类型
if (channel.getGbDeviceDbId() == null) {
if (channel.getDataType() != ChannelDataType.GB28181.value) {
// 非国标通道不支持录像回放控制
log.warn("[DeviceInfo] 非国标通道不支持录像回放控制: 通道ID {}", channel.getGbId());
try {
@@ -106,10 +107,10 @@ public class DeviceInfoQueryMessageHandler extends SIPRequestProcessorParent imp
}
// 根据通道ID获取所属设备
Device device = deviceService.getDevice(channel.getGbDeviceDbId());
Device device = deviceService.getDevice(channel.getDataDeviceId());
if (device == null) {
// 不存在则回复404
log.warn("[DeviceInfo] 通道所属设备不存在, 通道ID {}", channel.getGbDeviceDbId());
log.warn("[DeviceInfo] 通道所属设备不存在, 通道ID {}", channel.getDataDeviceId());
try {
responseAck(request, Response.NOT_FOUND, "device not found ");

View File

@@ -1,5 +1,6 @@
package com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.query.cmd;
import com.genersoft.iot.vmp.common.enums.ChannelDataType;
import com.genersoft.iot.vmp.gb28181.bean.CommonGBChannel;
import com.genersoft.iot.vmp.gb28181.bean.Device;
import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
@@ -104,8 +105,8 @@ public class RecordInfoQueryMessageHandler extends SIPRequestProcessorParent imp
}
return;
}
if (channel.getGbId() == 0 ) {
log.info("[平台查询录像记录] 支持查询推流和拉流代理的录像数据 {}/{}", platform.getName(), channelId );
if (channel.getDataType() != ChannelDataType.GB28181.value) {
log.info("[平台查询录像记录] 支持查询国标28181的录像数据 {}/{}", platform.getName(), channelId );
try {
responseAck(request, Response.NOT_IMPLEMENTED); // 回复未实现
} catch (SipException | InvalidArgumentException | ParseException e) {
@@ -113,7 +114,7 @@ public class RecordInfoQueryMessageHandler extends SIPRequestProcessorParent imp
}
return;
}
Device device = deviceService.getDevice(channel.getGbDeviceDbId());
Device device = deviceService.getDevice(channel.getDataDeviceId());
if (device == null) {
log.warn("[平台查询录像记录] 未找到通道对应的设备 {}/{}", platform.getName(), channelId );
try {

View File

@@ -139,7 +139,7 @@ public class CatalogResponseMessageHandler extends SIPRequestProcessorParent imp
log.info("[收到目录订阅]:但是解析失败 {}", new String(evt.getRequest().getRawContent()));
continue;
}
channel.setDeviceDbId(take.getDevice().getId());
channel.setDataDeviceId(take.getDevice().getId());
if (channel.getParentId() != null && channel.getParentId().equals(sipConfig.getId())) {
channel.setParentId(null);
}