From 3a459cfb72b908e7c0bc2ed183127b9d8b84e222 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E4=B8=80=E9=B8=A3?= Date: Thu, 31 Dec 2020 18:01:48 +0800 Subject: [PATCH] =?UTF-8?q?=E7=90=83=E6=9C=BAIO?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/CameraController.java | 18 ++++++++++ .../java/com/zhehekeji/web/entity/Camera.java | 16 +++++---- .../com/zhehekeji/web/entity/CameraIO.java | 8 +++++ .../zhehekeji/web/lib/PtzControlModule.java | 36 +++++++++++++++++++ .../web/pojo/camera/CameraIOPtz.java | 15 ++++++++ .../zhehekeji/web/service/CameraService.java | 12 +++++++ 6 files changed, 99 insertions(+), 6 deletions(-) create mode 100644 web/src/main/java/com/zhehekeji/web/pojo/camera/CameraIOPtz.java diff --git a/web/src/main/java/com/zhehekeji/web/controller/CameraController.java b/web/src/main/java/com/zhehekeji/web/controller/CameraController.java index 0314fba..27d6ac0 100644 --- a/web/src/main/java/com/zhehekeji/web/controller/CameraController.java +++ b/web/src/main/java/com/zhehekeji/web/controller/CameraController.java @@ -5,6 +5,8 @@ import com.zhehekeji.common.util.ValidatorUtil; import com.zhehekeji.core.pojo.Result; import com.zhehekeji.web.entity.Camera; import com.zhehekeji.web.entity.CameraIO; +import com.zhehekeji.web.lib.PtzControlModule; +import com.zhehekeji.web.pojo.camera.CameraIOPtz; import com.zhehekeji.web.pojo.camera.CameraSearchReq; import com.zhehekeji.web.pojo.street.StreetSearch; import com.zhehekeji.web.service.CameraService; @@ -85,4 +87,20 @@ public class CameraController { cameraService.delIO(id); return Result.success(); } + + @PostMapping("/io/ptz") + @ApiOperation(value = "球机IO配置") + public Result ptz(@RequestBody CameraIOPtz req) { + validatorUtil.validate(req); + cameraService.ptz(req.getCameraIOId(),req.getCameraId()); + return Result.success(); + } + + @PostMapping("/io/toPtz") + @ApiOperation(value = "转至球机IO配置点") + public Result toPtz(@RequestBody CameraIOPtz req) { + validatorUtil.validate(req); + PtzControlModule.toPtz(req.getCameraIOId(),req.getCameraId()); + return Result.success(); + } } diff --git a/web/src/main/java/com/zhehekeji/web/entity/Camera.java b/web/src/main/java/com/zhehekeji/web/entity/Camera.java index 4ca9ec4..bbadc4a 100644 --- a/web/src/main/java/com/zhehekeji/web/entity/Camera.java +++ b/web/src/main/java/com/zhehekeji/web/entity/Camera.java @@ -3,6 +3,7 @@ package com.zhehekeji.web.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; @@ -27,13 +28,16 @@ public class Camera { private String rtsp; - private String position; +// private String position; +// +// private String focusing; +// +// private String aperture; +// +// private BigDecimal multiple; - private String focusing; - - private String aperture; - - private BigDecimal multiple; + @ApiModelProperty(value = "预置点 增长值",hidden = true) + private Integer ptzId; private LocalDateTime updateTime; } diff --git a/web/src/main/java/com/zhehekeji/web/entity/CameraIO.java b/web/src/main/java/com/zhehekeji/web/entity/CameraIO.java index 9caf03d..b270a3d 100644 --- a/web/src/main/java/com/zhehekeji/web/entity/CameraIO.java +++ b/web/src/main/java/com/zhehekeji/web/entity/CameraIO.java @@ -20,5 +20,13 @@ public class CameraIO { private Integer ptzId; + private String position; + + private String focusing; + + private String aperture; + + private String multiple; + private LocalDateTime updateTime; } diff --git a/web/src/main/java/com/zhehekeji/web/lib/PtzControlModule.java b/web/src/main/java/com/zhehekeji/web/lib/PtzControlModule.java index 43e533f..f417595 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/PtzControlModule.java +++ b/web/src/main/java/com/zhehekeji/web/lib/PtzControlModule.java @@ -2,7 +2,9 @@ package com.zhehekeji.web.lib; import com.sun.jna.Pointer; import com.sun.jna.ptr.IntByReference; +import com.zhehekeji.core.util.Assert; import com.zhehekeji.web.lib.common.ErrorCode; +import lombok.extern.slf4j.Slf4j; import java.time.LocalDateTime; import java.util.UUID; @@ -11,6 +13,7 @@ import java.util.UUID; * 云台控制接口实现 * 主要有 :八个方向控制、变倍、变焦、光圈功能 */ +@Slf4j public class PtzControlModule { private static CallBack.Mp4ReceiveCB mp4ReceiveCB = new CallBack.Mp4ReceiveCB(); @@ -256,6 +259,39 @@ public class PtzControlModule { } } + /** + * 设置预置点 + * @param ioId 预置点ID,这里直接拿数据库自动的ID,这样不会重复 + * @param name 预置点的名称 + * @param cameraId 球机ID,来获取登录句柄 + */ + public static void ptz(Integer ioId,String name,Integer cameraId){ + int dwzCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_POINT_SET_CONTROL; + int nPressetIndex = ioId; + Boolean ok = ptzControler(dwzCommand,0,nPressetIndex,0,0,ToolKits.GetGBKStringToPointer(name),CameraConnMap.getConnId(cameraId)); + Assert.isTrue(ok,"设置失败"); + } + + public static Boolean ptzControler(int dwPTZCOmmand, int lParam1, int lParam2, int lParam3, int dwStop, Pointer pointer, NetSDKLib.LLong loginId){ + return LoginModule.netsdk.CLIENT_DHPTZControlEx2(loginId,0,dwPTZCOmmand,lParam1,lParam2,lParam3,dwStop,pointer); + } + + /** + * 转至 预置点 + * @param ioId + * @param cameraId + */ + public static void toPtz(Integer ioId,Integer cameraId){ + int dwPTZCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_POINT_MOVE_CONTROL; + + int nPresetIndex = ioId; + + Boolean ok = ptzControler(dwPTZCommand, 0, nPresetIndex, 0, 0, null,CameraConnMap.getConnId(cameraId)); + if(!ok ){ + log.error("转至预置点 失败 cameraId:{},ioId:{}",cameraId,ioId); + } + } + diff --git a/web/src/main/java/com/zhehekeji/web/pojo/camera/CameraIOPtz.java b/web/src/main/java/com/zhehekeji/web/pojo/camera/CameraIOPtz.java new file mode 100644 index 0000000..4f1a4c0 --- /dev/null +++ b/web/src/main/java/com/zhehekeji/web/pojo/camera/CameraIOPtz.java @@ -0,0 +1,15 @@ +package com.zhehekeji.web.pojo.camera; + +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +public class CameraIOPtz { + + @NotNull(message = "cameraId不能为空") + private Integer cameraId; + + @NotNull(message = "球机IO id不能为空") + private Integer cameraIOId; +} diff --git a/web/src/main/java/com/zhehekeji/web/service/CameraService.java b/web/src/main/java/com/zhehekeji/web/service/CameraService.java index 4bd3f56..c8e640c 100644 --- a/web/src/main/java/com/zhehekeji/web/service/CameraService.java +++ b/web/src/main/java/com/zhehekeji/web/service/CameraService.java @@ -4,9 +4,11 @@ import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.sun.xml.internal.ws.policy.privateutil.PolicyUtils; import com.zhehekeji.core.util.Assert; import com.zhehekeji.web.entity.Camera; import com.zhehekeji.web.entity.CameraIO; +import com.zhehekeji.web.lib.PtzControlModule; import com.zhehekeji.web.mapper.CameraIOMapper; import com.zhehekeji.web.mapper.CameraMapper; import com.zhehekeji.web.mapper.StreetMapper; @@ -60,6 +62,7 @@ public class CameraService { public void edit(Camera camera){ camera.setUpdateTime(LocalDateTime.now()); + camera.setPtzId(null); try { cameraMapper.updateById(camera); }catch (DuplicateKeyException e){ @@ -85,6 +88,7 @@ public class CameraService { public Integer addIO(CameraIO cameraIO){ cameraIO.setUpdateTime(LocalDateTime.now()); + cameraIO.setPtzId(0); ioMapper.insert(cameraIO); return cameraIO.getId(); } @@ -104,5 +108,13 @@ public class CameraService { ioMapper.deleteById(id); } + public void ptz(Integer IOId,Integer cameraId){ + CameraIO cameraIO = ioMapper.selectById(IOId); + Assert.notNull(cameraIO,"IO不存在"); + PtzControlModule.ptz(IOId,cameraIO.getName(),cameraId); + log.info("设置 预置点 球机ID:{},预置点ID:{}",cameraId, IOId); + } + + }