Merge branch 'master' into dev/abl支持
| | |
| | | /** |
| | | * 看守位控制命令 |
| | | * |
| | | * @param device 视频设备 |
| | | * @param channelId 通道id,非通道则是设备本身 |
| | | * @param enabled 看守位使能:1 = 开启,0 = 关闭 |
| | | * @param resetTime 自动归位时间间隔,开启看守位时使用,单位:秒(s) |
| | | * @param presetIndex 调用预置位编号,开启看守位时使用,取值范围0~255 |
| | | */ |
| | | void homePositionCmd(Device device, String channelId, String enabled, String resetTime, String presetIndex, SipSubscribe.Event errorEvent,SipSubscribe.Event okEvent) throws InvalidArgumentException, SipException, ParseException; |
| | | void homePositionCmd(Device device, String channelId, Boolean enabled, Integer resetTime, Integer presetIndex, SipSubscribe.Event errorEvent,SipSubscribe.Event okEvent) throws InvalidArgumentException, SipException, ParseException; |
| | | |
| | | /** |
| | | * 设备配置命令 |
| | |
| | | * @param presetIndex 调用预置位编号,开启看守位时使用,取值范围0~255
|
| | | */
|
| | | @Override
|
| | | public void homePositionCmd(Device device, String channelId, String enabled, String resetTime, String presetIndex, SipSubscribe.Event errorEvent,SipSubscribe.Event okEvent) throws InvalidArgumentException, SipException, ParseException {
|
| | | public void homePositionCmd(Device device, String channelId, Boolean enabled, Integer resetTime, Integer presetIndex, SipSubscribe.Event errorEvent,SipSubscribe.Event okEvent) throws InvalidArgumentException, SipException, ParseException {
|
| | |
|
| | | StringBuffer cmdXml = new StringBuffer(200);
|
| | | String charset = device.getCharset();
|
| | |
| | | cmdXml.append("<DeviceID>" + channelId + "</DeviceID>\r\n");
|
| | | }
|
| | | cmdXml.append("<HomePosition>\r\n");
|
| | | if (NumericUtil.isInteger(enabled) && (!enabled.equals("0"))) {
|
| | | if (enabled) {
|
| | | cmdXml.append("<Enabled>1</Enabled>\r\n");
|
| | | if (NumericUtil.isInteger(resetTime)) {
|
| | | cmdXml.append("<ResetTime>" + resetTime + "</ResetTime>\r\n");
|
| | | } else {
|
| | | cmdXml.append("<ResetTime>0</ResetTime>\r\n");
|
| | | }
|
| | | if (NumericUtil.isInteger(presetIndex)) {
|
| | | cmdXml.append("<PresetIndex>" + presetIndex + "</PresetIndex>\r\n");
|
| | | } else {
|
| | | cmdXml.append("<PresetIndex>0</PresetIndex>\r\n");
|
| | | }
|
| | | cmdXml.append("<ResetTime>" + resetTime + "</ResetTime>\r\n");
|
| | | cmdXml.append("<PresetIndex>" + presetIndex + "</PresetIndex>\r\n");
|
| | | } else {
|
| | | cmdXml.append("<Enabled>0</Enabled>\r\n");
|
| | | }
|
| | |
| | | HomePositionRequest homePosition = loadElement(rootElement, HomePositionRequest.class); |
| | | //获取整个消息主体,我们只需要修改请求头即可 |
| | | HomePositionRequest.HomePosition info = homePosition.getHomePosition(); |
| | | cmder.homePositionCmd(device, channelId, info.getEnabled(), info.getResetTime(), info.getPresetIndex(), |
| | | cmder.homePositionCmd(device, channelId, !"0".equals(info.getEnabled()), Integer.parseInt(info.getResetTime()), Integer.parseInt(info.getPresetIndex()), |
| | | errorResult -> onError(request, errorResult), |
| | | okResult -> onOk(request, okResult)); |
| | | } catch (Exception e) { |
| | |
| | | import com.genersoft.iot.vmp.gb28181.bean.Device; |
| | | import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder; |
| | | import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage; |
| | | import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander; |
| | | import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommander; |
| | | import com.genersoft.iot.vmp.storager.IVideoManagerStorage; |
| | | import com.genersoft.iot.vmp.vmanager.bean.ErrorCode; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | |
| | | private IVideoManagerStorage storager; |
| | | |
| | | @Autowired |
| | | private SIPCommander cmder; |
| | | private ISIPCommander cmder; |
| | | |
| | | @Autowired |
| | | private DeferredResultHolder resultHolder; |
| | |
| | | @Operation(summary = "看守位控制", security = @SecurityRequirement(name = JwtUtils.HEADER)) |
| | | @Parameter(name = "deviceId", description = "设备国标编号", required = true) |
| | | @Parameter(name = "channelId", description = "通道国标编号", required = true) |
| | | @Parameter(name = "enabled", description = "是否开启看守位 1:开启,0:关闭", required = true) |
| | | @Parameter(name = "enabled", description = "是否开启看守位", required = true) |
| | | @Parameter(name = "presetIndex", description = "调用预置位编号") |
| | | @Parameter(name = "resetTime", description = "自动归位时间间隔") |
| | | @GetMapping("/home_position/{deviceId}/{enabled}") |
| | | public DeferredResult<String> homePositionApi(@PathVariable String deviceId, |
| | | @PathVariable String enabled, |
| | | @RequestParam(required = false) String resetTime, |
| | | @RequestParam(required = false) String presetIndex, |
| | | String channelId) { |
| | | @Parameter(name = "resetTime", description = "自动归位时间间隔 单位:秒") |
| | | @GetMapping("/home_position") |
| | | public DeferredResult<String> homePositionApi(String deviceId, String channelId, Boolean enabled, |
| | | @RequestParam(required = false) Integer resetTime, |
| | | @RequestParam(required = false) Integer presetIndex) { |
| | | if (logger.isDebugEnabled()) { |
| | | logger.debug("报警复位API调用"); |
| | | } |
| | |
| | | @click="changeSubchannel(scope.row)">查看 |
| | | </el-button> |
| | | <el-divider v-if="scope.row.subCount > 0 || scope.row.parental === 1" direction="vertical"></el-divider> |
| | | <el-button size="medium" v-bind:disabled="device == null || device.online === 0" |
| | | icon="el-icon-video-camera" |
| | | type="text" @click="queryRecords(scope.row)">设备录像 |
| | | </el-button> |
| | | <el-button size="medium" v-bind:disabled="device == null || device.online === 0" icon="el-icon-cloudy" |
| | | type="text" @click="queryCloudRecords(scope.row)">云端录像 |
| | | </el-button> |
| | | <!-- <el-button size="medium" v-bind:disabled="device == null || device.online === 0"--> |
| | | <!-- icon="el-icon-video-camera"--> |
| | | <!-- type="text" @click="queryRecords(scope.row)">设备录像--> |
| | | <!-- </el-button>--> |
| | | <!-- <el-button size="medium" v-bind:disabled="device == null || device.online === 0" icon="el-icon-cloudy"--> |
| | | <!-- type="text" @click="queryCloudRecords(scope.row)">云端录像--> |
| | | <!-- </el-button>--> |
| | | <el-dropdown @command="(command)=>{moreClick(command, scope.row)}"> |
| | | <el-button size="medium" type="text" > |
| | | 更多功能<i class="el-icon-arrow-down el-icon--right"></i> |
| | | </el-button> |
| | | <el-dropdown-menu slot="dropdown"> |
| | | <el-dropdown-item command="records" v-bind:disabled="device == null || device.online === 0"> |
| | | 设备录像</el-dropdown-item> |
| | | <el-dropdown-item command="cloudRecords" v-bind:disabled="device == null || device.online === 0" > |
| | | 云端录像</el-dropdown-item> |
| | | </el-dropdown-menu> |
| | | </el-dropdown> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | // that.$message.error("请求超时"); |
| | | }); |
| | | }, |
| | | moreClick: function (command, itemData) { |
| | | if (command === "records") { |
| | | this.queryRecords(itemData) |
| | | }else if (command === "cloudRecords") { |
| | | this.queryCloudRecords(itemData) |
| | | } |
| | | }, |
| | | queryRecords: function (itemData) { |
| | | let deviceId = this.deviceId; |
| | | let channelId = itemData.channelId; |