添加通用通道云台控制接口

结构优化
648540858 2024-01-30 23:11:21 +08:00
parent f5a7b958b6
commit 3e1bf69181
3 changed files with 83 additions and 1 deletions

View File

@ -2,6 +2,7 @@ package com.genersoft.iot.vmp.service;
import com.genersoft.iot.vmp.common.CommonGbChannel;
import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
import com.genersoft.iot.vmp.gb28181.bean.command.PTZCommand;
import com.genersoft.iot.vmp.service.bean.*;
import com.genersoft.iot.vmp.vmanager.bean.UpdateCommonChannelToGroup;
import com.genersoft.iot.vmp.vmanager.bean.UpdateCommonChannelToRegion;
@ -72,4 +73,6 @@ public interface ICommonGbChannelService {
void removeShareChannel(ShareCommonGbChannelParam param);
PageInfo<ShareCommonChannelListResult> getShareChannelList(int platformId, int page, int count, String query, String type, Boolean online);
void ptzControl(CommonGbChannel channel, PTZCommand ptzCommand);
}

View File

@ -4,6 +4,7 @@ import com.genersoft.iot.vmp.common.BatchLimit;
import com.genersoft.iot.vmp.common.CommonGbChannel;
import com.genersoft.iot.vmp.conf.exception.ControllerException;
import com.genersoft.iot.vmp.gb28181.bean.*;
import com.genersoft.iot.vmp.gb28181.bean.command.PTZCommand;
import com.genersoft.iot.vmp.gb28181.event.subscribe.catalog.CatalogEventType;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform;
import com.genersoft.iot.vmp.gb28181.utils.SipUtils;
@ -488,4 +489,11 @@ public class CommonGbChannelServiceImpl implements ICommonGbChannelService {
List<ShareCommonChannelListResult> all = commonGbChannelMapper.getShareChannel(platformId, query, type, online);
return new PageInfo<>(all);
}
@Override
public void ptzControl(CommonGbChannel channel, PTZCommand ptzCommand) {
IResourceService resourceService = resourceServiceMap.get(channel.getType());
assert resourceService != null;
resourceService.ptzControl(channel, ptzCommand);
}
}

View File

@ -3,9 +3,12 @@ package com.genersoft.iot.vmp.vmanager.channel;
import com.genersoft.iot.vmp.common.CommonGbChannel;
import com.genersoft.iot.vmp.conf.UserSetting;
import com.genersoft.iot.vmp.conf.security.JwtUtils;
import com.genersoft.iot.vmp.gb28181.bean.command.PTZCommand;
import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder;
import com.genersoft.iot.vmp.service.ICommonGbChannelService;
import com.genersoft.iot.vmp.service.bean.*;
import com.genersoft.iot.vmp.service.bean.DeviceType;
import com.genersoft.iot.vmp.service.bean.IndustryCodeType;
import com.genersoft.iot.vmp.service.bean.NetworkIdentificationType;
import com.genersoft.iot.vmp.vmanager.bean.*;
import com.genersoft.iot.vmp.vmanager.channel.bean.ShareCommonChannelListResult;
import com.genersoft.iot.vmp.vmanager.channel.bean.ShareCommonGbChannelParam;
@ -282,4 +285,72 @@ public class CommonChannelController {
}
return commonGbChannelService.getShareChannelList(platformId, page, count, query, type, online);
}
@Operation(summary = "云台控制", security = @SecurityRequirement(name = JwtUtils.HEADER))
@Parameter(name = "channelDeviceId", description = "通用通道国标编号", required = true)
@Parameter(name = "command", description = "控制指令,允许值: left, right, up, down, upleft, upright, downleft, downright, zoomin, zoomout, stop", required = true)
@Parameter(name = "horizonSpeed", description = "水平速度", required = true)
@Parameter(name = "verticalSpeed", description = "垂直速度", required = true)
@Parameter(name = "zoomSpeed", description = "缩放速度", required = true)
@RequestMapping(value = "/ptz", method = {RequestMethod.GET, RequestMethod.POST})
public void ptz(String channelDeviceId, String command, int horizonSpeed, int verticalSpeed, int zoomSpeed){
if (logger.isDebugEnabled()) {
logger.debug("通用通道云台控制 API调用channelDeviceId{} command{} horizonSpeed{} verticalSpeed{} " +
"zoomSpeed{}", channelDeviceId, command, horizonSpeed, verticalSpeed, zoomSpeed);
}
assert !ObjectUtils.isEmpty(channelDeviceId);
CommonGbChannel channel = commonGbChannelService.getChannel(channelDeviceId);
assert channel != null;
PTZCommand ptzCommand = new PTZCommand();
ptzCommand.setzSpeed(zoomSpeed);
ptzCommand.setxSpeed(horizonSpeed);
ptzCommand.setySpeed(verticalSpeed);
switch (command){
case "left":
ptzCommand.setLeft(true);
break;
case "right":
ptzCommand.setRight(true);
break;
case "up":
ptzCommand.setUp(true);
break;
case "down":
ptzCommand.setDown(true);
break;
case "upleft":
ptzCommand.setUp(true);
ptzCommand.setLeft(true);
break;
case "upright":
ptzCommand.setUp(true);
ptzCommand.setRight(true);
break;
case "downleft":
ptzCommand.setDown(true);
ptzCommand.setLeft(true);
break;
case "downright":
ptzCommand.setDown(true);
ptzCommand.setRight(true);
break;
case "zoomin":
ptzCommand.setIn(true);
break;
case "zoomout":
ptzCommand.setOut(true);
break;
case "stop":
ptzCommand.setzSpeed(0);
ptzCommand.setxSpeed(0);
ptzCommand.setySpeed(0);
break;
default:
break;
}
commonGbChannelService.ptzControl(channel, ptzCommand);
}
}