diff --git a/modules/common/src/main/java/com/zhehekeji/common/util/PathUtil.java b/modules/common/src/main/java/com/zhehekeji/common/util/PathUtil.java index 4b39f7e..1752070 100644 --- a/modules/common/src/main/java/com/zhehekeji/common/util/PathUtil.java +++ b/modules/common/src/main/java/com/zhehekeji/common/util/PathUtil.java @@ -7,15 +7,27 @@ import java.io.IOException; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; +import java.util.Random; import java.util.UUID; @Slf4j public class PathUtil { - public static String createFileName(String fileType) { + private static String getRandomString(int length){ + String str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; + Random random=new Random(); + StringBuffer sb=new StringBuffer(); + for(int i=0;i caches = new ArrayList(); caches.add(new ConcurrentMapCache("street")); caches.add(new ConcurrentMapCache("ptz")); + caches.add(new ConcurrentMapCache("streetByPlc")); + caches.add(new ConcurrentMapCache("getStreetCount")); simpleCacheManager.setCaches(caches); //把各个cache注册到cacheManager中,GuavaCache实现了org.springframework.cache.Cache接口 // CacheBuilder cacheBuilder = CacheBuilder.newBuilder(); diff --git a/web/src/main/java/com/zhehekeji/web/controller/CameraControlController.java b/web/src/main/java/com/zhehekeji/web/controller/CameraControlController.java index bf36a71..ea1465d 100644 --- a/web/src/main/java/com/zhehekeji/web/controller/CameraControlController.java +++ b/web/src/main/java/com/zhehekeji/web/controller/CameraControlController.java @@ -24,7 +24,10 @@ public class CameraControlController { @Resource private CameraMapper cameraMapper; - private Integer cameraType; + @Resource + private CameraControlModule cameraControlModule; + @Resource + private CameraControlLoginModule loginControlModule; @PostMapping("/{id}") @ApiOperation(value = "球机登录") @@ -37,16 +40,7 @@ public class CameraControlController { log.info("相机登录 cameraId:{}",cameraId); Camera camera = cameraMapper.selectById(cameraId); Assert.notNull(camera,"球机不存在"); - NetSDKLib.LLong lLong = null; - if(cameraType == 0){ - lLong = JoywareLoginModule.login(camera.getIp(),camera.getPort(),camera.getUser(),camera.getPassword(),cameraId); - Assert.isTrue(lLong.longValue() > 0,"登陆失败"); - }else if(cameraType == 1){ - int userId = HikLoginModule.login(camera.getIp(),camera.getPort(),camera.getUser(),camera.getPassword()); - Assert.isTrue(userId>=0,"登陆失败"); - lLong = new NetSDKLib.LLong(userId); - } - HikLoginModule.CameraConnMap.conn(cameraId,lLong); + NetSDKLib.LLong lLong = loginControlModule.login(camera.getIp(),camera.getPort(),camera.getUser(),camera.getPassword()); return lLong; } @@ -55,11 +49,7 @@ public class CameraControlController { public Result up(@PathVariable Integer id) { log.debug("球机控制向上"); checkLogin(id); - if(cameraType == 0){ - JoywarePtzControlModule.ptzControlUpStart(id,0,0,1); - }else if(cameraType == 1){ - HikPtzControlModule.ptzControlUpStart(id, 1, HCNetSDK.TILT_UP,0); - } + cameraControlModule.ptzControlUpStart(id,0,0,1); return Result.success(); } @@ -68,12 +58,7 @@ public class CameraControlController { public Result upStop(@PathVariable Integer id) { log.debug("球机控制向上 停止"); checkLogin(id); - if(cameraType == 0){ - JoywarePtzControlModule.ptzControlUpEnd(id,0); - }else if(cameraType == 1){ - HikPtzControlModule.ptzControlUpEnd(id, 1, HCNetSDK.TILT_UP, 1); - } - + cameraControlModule.ptzControlUpEnd(id,0); return Result.success(); } @@ -81,11 +66,7 @@ public class CameraControlController { @ApiOperation(value = "球机控制向下") public Result down(@PathVariable Integer id) { checkLogin(id); - if(cameraType == 0){ - JoywarePtzControlModule.ptzControlDownStart(id,0,0,1); - }else if(cameraType == 1){ - HikPtzControlModule.ptzControlDownStart(id , 1,HCNetSDK.TILT_DOWN,0); - } + cameraControlModule.ptzControlDownStart(id,0,0,1); log.debug("球机控制向下"); return Result.success(); } @@ -94,11 +75,7 @@ public class CameraControlController { @ApiOperation(value = "球机控制向下-停止") public Result downStop(@PathVariable Integer id) { checkLogin(id); - if(cameraType == 0){ - JoywarePtzControlModule.ptzControlDownEnd(id,0); - }else if(cameraType == 1){ - HikPtzControlModule.ptzControlDownEnd(id, 1, HCNetSDK.TILT_DOWN, 1); - } + cameraControlModule.ptzControlDownEnd(id,0); log.debug("球机控制向下 停止"); return Result.success(); } @@ -107,11 +84,7 @@ public class CameraControlController { @ApiOperation(value = "球机控制向左") public Result left(@PathVariable Integer id) { checkLogin(id); - if(cameraType == 0){ - JoywarePtzControlModule.ptzControlLeftStart(id,0,0,1); - }else if(cameraType == 1){ - HikPtzControlModule.ptzControlLeftStart(id, 1,HCNetSDK.PAN_LEFT,0); - } + cameraControlModule.ptzControlLeftStart(id,0,0,1); log.debug("球机控制向左"); return Result.success(); } @@ -120,11 +93,7 @@ public class CameraControlController { @ApiOperation(value = "球机控制左-停止") public Result leftStop(@PathVariable Integer id) { checkLogin(id); - if(cameraType == 0){ - JoywarePtzControlModule.ptzControlLeftEnd(id,0); - }else if(cameraType == 1){ - HikPtzControlModule.ptzControlLeftEnd(id, 1, HCNetSDK.PAN_LEFT, 1); - } + cameraControlModule.ptzControlLeftEnd(id,0); log.debug("球机控制向左 -停止"); return Result.success(); } @@ -134,12 +103,7 @@ public class CameraControlController { @ApiOperation(value = "球机控制向左上") public Result leftUp(@PathVariable Integer id) { checkLogin(id); - - if(cameraType == 0){ - JoywarePtzControlModule.ptzControlLeftUpStart(id,0,1,1); - }else if(cameraType == 1){ - HikPtzControlModule.ptzControlLeftUpStart(id, 1,HCNetSDK.UP_LEFT,0); - } + cameraControlModule.ptzControlLeftUpStart(id,0,1,1); log.debug("球机控制向上"); return Result.success(); } @@ -148,12 +112,7 @@ public class CameraControlController { @ApiOperation(value = "球机控制左上-停止") public Result leftUpStop(@PathVariable Integer id) { checkLogin(id); - - if(cameraType == 0){ - JoywarePtzControlModule.ptzControlLeftUpEnd(id,0); - }else if(cameraType == 1){ - HikPtzControlModule.ptzControlLeftUpEnd(id, 1, HCNetSDK.UP_LEFT, 1); - } + cameraControlModule.ptzControlLeftUpEnd(id,0); log.debug("球机控制向上 停止"); return Result.success(); } @@ -162,11 +121,7 @@ public class CameraControlController { @ApiOperation(value = "球机控制向左下") public Result leftDown(@PathVariable Integer id) { checkLogin(id); - if(cameraType == 0){ - JoywarePtzControlModule.ptzControlLeftDownStart(id,0,1,1); - }else if(cameraType == 1){ - HikPtzControlModule.ptzControlLeftDownStart(id, 1, HCNetSDK.DOWN_LEFT, 0); - } + cameraControlModule.ptzControlLeftDownStart(id,0,1,1); log.debug("球机控制左下"); return Result.success(); } @@ -175,11 +130,7 @@ public class CameraControlController { @ApiOperation(value = "球机控制左下-停止") public Result leftDownStop(@PathVariable Integer id) { checkLogin(id); - if(cameraType == 0){ - JoywarePtzControlModule.ptzControlLeftDownEnd(id,0); - }else if(cameraType == 1){ - HikPtzControlModule.ptzControlLeftDownEnd(id, 1, HCNetSDK.DOWN_LEFT, 1); - } + cameraControlModule.ptzControlLeftDownEnd(id,0); log.debug("球机控制左下 停止"); return Result.success(); @@ -189,12 +140,7 @@ public class CameraControlController { @ApiOperation(value = "球机控制向右") public Result right(@PathVariable Integer id) { checkLogin(id); - if(cameraType == 0){ - JoywarePtzControlModule.ptzControlRightStart(id,0,0,1); - }else if(cameraType == 1){ - HikPtzControlModule.ptzControlRightStart(id, 1,HCNetSDK.PAN_RIGHT,0); - } - + cameraControlModule.ptzControlRightStart(id,0,0,1); log.debug("球机控制右"); return Result.success(); } @@ -203,12 +149,7 @@ public class CameraControlController { @ApiOperation(value = "球机控制右-停止") public Result rightStop(@PathVariable Integer id) { checkLogin(id); - if(cameraType == 0){ - JoywarePtzControlModule.ptzControlRightEnd(id,0); - }else if(cameraType == 1){ - HikPtzControlModule.ptzControlRightEnd(id, 1, HCNetSDK.PAN_RIGHT, 1); - } - + cameraControlModule.ptzControlRightEnd(id,0); log.debug("球机控制右 停止"); return Result.success(); } @@ -218,12 +159,7 @@ public class CameraControlController { @ApiOperation(value = "球机控制向右上") public Result rightUp(@PathVariable Integer id) { checkLogin(id); - if(cameraType == 0){ - JoywarePtzControlModule.ptzControlRightUpStart(id,0,1,1); - }else if(cameraType == 1){ - HikPtzControlModule.ptzControlRightUpStart(id, 1,HCNetSDK.UP_RIGHT,0); - } - + cameraControlModule.ptzControlRightUpStart(id,0,1,1); log.debug("球机控制右上"); return Result.success(); } @@ -232,12 +168,7 @@ public class CameraControlController { @ApiOperation(value = "球机控制右上-停止") public Result rightUpStop(@PathVariable Integer id) { checkLogin(id); - if(cameraType == 0){ - JoywarePtzControlModule.ptzControlRightUpEnd(id,0); - }else if(cameraType == 1){ - HikPtzControlModule.ptzControlRightUpEnd(id, 1, HCNetSDK.UP_RIGHT, 1); - } - + cameraControlModule.ptzControlRightUpEnd(id,0); log.debug("球机控制右上 -停止"); return Result.success(); } @@ -246,11 +177,7 @@ public class CameraControlController { @ApiOperation(value = "球机控制向右下") public Result rightDown(@PathVariable Integer id) { checkLogin(id); - if(cameraType == 0){ - JoywarePtzControlModule.ptzControlRightDownStart(id,0,1,1); - }else if(cameraType == 1){ - HikPtzControlModule.ptzControlRightDownStart(id, 1,HCNetSDK.DOWN_RIGHT,0); - } + cameraControlModule.ptzControlRightDownStart(id,0,1,1); log.debug("球机控制右下"); return Result.success(); } @@ -259,12 +186,7 @@ public class CameraControlController { @ApiOperation(value = "球机控制右下-停止") public Result rightDownStop(@PathVariable Integer id) { checkLogin(id); - if(cameraType == 0){ - JoywarePtzControlModule.ptzControlRightDownEnd(id,0); - }else if(cameraType == 1){ - HikPtzControlModule.ptzControlRightDownEnd(id, 1, HCNetSDK.DOWN_RIGHT, 1); - } - + cameraControlModule.ptzControlRightDownEnd(id,0); log.debug("球机控制右下 -停止"); return Result.success(); } @@ -273,11 +195,7 @@ public class CameraControlController { @ApiOperation(value = "球机控制 变倍+") public Result ZoomAddStart(@PathVariable Integer id) { checkLogin(id); - if(cameraType == 0){ - JoywarePtzControlModule.ptzControlZoomAddStart(id,0,1); - }else if(cameraType == 1){ - HikPtzControlModule.ptzControlZoomAddStart(id, 1,HCNetSDK.ZOOM_IN, 0); - } + cameraControlModule.ptzControlZoomAddStart(id,0,1); return Result.success(); } @@ -285,12 +203,7 @@ public class CameraControlController { @ApiOperation(value = "球机控制 变倍+ 停止") public Result ZoomAddEnd(@PathVariable Integer id) { checkLogin(id); - if(cameraType == 0){ - JoywarePtzControlModule.ptzControlZoomAddEnd(id,0); - }else if(cameraType == 1){ - HikPtzControlModule.ptzControlZoomAddEnd(id, 1, HCNetSDK.ZOOM_IN, 1); - } - + cameraControlModule.ptzControlZoomAddEnd(id,0); return Result.success(); } @@ -298,11 +211,7 @@ public class CameraControlController { @ApiOperation(value = "球机控制 变倍-") public Result ZoomDecStart(@PathVariable Integer id) { checkLogin(id); - if(cameraType == 0){ - JoywarePtzControlModule.ptzControlZoomDecStart(id,0,1); - }else if(cameraType == 1){ - HikPtzControlModule.ptzControlZoomDecStart(id, 1,HCNetSDK.ZOOM_OUT, 0); - } + cameraControlModule.ptzControlZoomDecStart(id,0,1); return Result.success(); } @@ -310,12 +219,7 @@ public class CameraControlController { @ApiOperation(value = "球机控制 变倍- 停止") public Result ZoomDecEnd(@PathVariable Integer id) { checkLogin(id); - if(cameraType == 0){ - JoywarePtzControlModule.ptzControlZoomDecEnd(id,0); - }else if(cameraType == 1){ - HikPtzControlModule.ptzControlZoomDecEnd(id, 1, HCNetSDK.ZOOM_OUT, 0); - } - + cameraControlModule.ptzControlZoomDecEnd(id,0); return Result.success(); } @@ -323,12 +227,7 @@ public class CameraControlController { @ApiOperation(value = "球机控制 变焦 +") public Result FocusAddStart(@PathVariable Integer id) { checkLogin(id); - if(cameraType == 0){ - JoywarePtzControlModule.ptzControlFocusAddStart(id,0,1); - }else if(cameraType == 1){ - HikPtzControlModule.ptzControlFocusAddStart(id, 1,HCNetSDK.FOCUS_NEAR, 0); - } - + cameraControlModule.ptzControlFocusAddStart(id,0,1); return Result.success(); } @@ -336,12 +235,7 @@ public class CameraControlController { @ApiOperation(value = "球机控制 变焦+ 停止") public Result focusAddEnd(@PathVariable Integer id) { checkLogin(id); - if(cameraType == 0){ - JoywarePtzControlModule.ptzControlFocusAddEnd(id,0); - }else if(cameraType == 1){ - HikPtzControlModule.ptzControlFocusAddEnd(id, 1, HCNetSDK.FOCUS_NEAR, 1); - } - + cameraControlModule.ptzControlFocusAddEnd(id,0); return Result.success(); } @@ -349,11 +243,7 @@ public class CameraControlController { @ApiOperation(value = "球机控制 变焦 -") public Result FocusDecStart(@PathVariable Integer id) { checkLogin(id); - if(cameraType == 0){ - JoywarePtzControlModule.ptzControlFocusDecStart(id,0,1); - }else if(cameraType == 1){ - HikPtzControlModule.ptzControlFocusDecStart(id, 1,HCNetSDK.FOCUS_FAR, 0); - } + cameraControlModule.ptzControlFocusDecStart(id,0,1); return Result.success(); } @@ -361,12 +251,7 @@ public class CameraControlController { @ApiOperation(value = "球机控制 变焦- 停止") public Result focusDecEnd(@PathVariable Integer id) { checkLogin(id); - if(cameraType == 0){ - JoywarePtzControlModule.ptzControlFocusDecEnd(id,0); - }else if(cameraType == 1){ - HikPtzControlModule.ptzControlFocusDecEnd(id, 1, HCNetSDK.FOCUS_FAR, 1); - } - + cameraControlModule.ptzControlFocusDecEnd(id,0); return Result.success(); } @@ -374,11 +259,7 @@ public class CameraControlController { @ApiOperation(value = "球机控制 光圈 +") public Result irisAddStart(@PathVariable Integer id) { checkLogin(id); - if(cameraType == 0){ - JoywarePtzControlModule.ptzControlIrisAddStart(id,0,1); - }else if(cameraType == 1){ - HikPtzControlModule.ptzControlIrisAddStart(id, 1,HCNetSDK.IRIS_OPEN, 0); - } + cameraControlModule.ptzControlIrisAddStart(id,0,1); return Result.success(); } @@ -386,11 +267,7 @@ public class CameraControlController { @ApiOperation(value = "球机控制 光圈+ 停止") public Result irisAddEnd(@PathVariable Integer id) { checkLogin(id); - if(cameraType == 0){ - JoywarePtzControlModule.ptzControlIrisAddEnd(id,0); - }else if(cameraType == 1){ - HikPtzControlModule.ptzControlIrisAddEnd(id, 1, HCNetSDK.IRIS_OPEN, 1); - } + cameraControlModule.ptzControlIrisAddEnd(id,0); return Result.success(); } @@ -398,12 +275,7 @@ public class CameraControlController { @ApiOperation(value = "球机控制 光圈 -") public Result irisDecStart(@PathVariable Integer id) { checkLogin(id); - if(cameraType == 0){ - JoywarePtzControlModule.ptzControlIrisDecStart(id,0,1); - }else if(cameraType == 1){ - HikPtzControlModule.ptzControlIrisDecStart(id, 1,HCNetSDK.IRIS_CLOSE, 0); - } - + cameraControlModule.ptzControlIrisDecStart(id,0,1); return Result.success(); } @@ -411,12 +283,7 @@ public class CameraControlController { @ApiOperation(value = "球机控制 光圈- 停止") public Result irisDecEnd(@PathVariable Integer id) { checkLogin(id); - if(cameraType == 0){ - JoywarePtzControlModule.ptzControlIrisDecEnd(id,0); - }else if(cameraType == 1){ - HikPtzControlModule.ptzControlIrisDecEnd(id, 1, HCNetSDK.IRIS_CLOSE, 1); - } - + cameraControlModule.ptzControlIrisDecEnd(id,0); return Result.success(); } @@ -426,12 +293,7 @@ public class CameraControlController { checkLogin(id); String path = "D:\\work\\qqq.jpeg"; OrderInfo orderInfo = new OrderInfo(0L,"SRM123","AAA",1,1,"C5",true,1); - if(cameraType == 0){ - System.out.println(JoywarePtzControlModule.pic(id,0,path)); - }else if(cameraType == 1){ - System.out.println(HikPtzControlModule.pic(id,1,path)); - } - + cameraControlModule.pic(id,0,path); return Result.success(); } @@ -439,12 +301,12 @@ public class CameraControlController { @ApiOperation(value = "录像") public Result MP4(@PathVariable Integer id) { checkLogin(id); - HikPtzControlModule.downloadMp4(id,"D:\\work\\qqq_1.mp4", LocalDateTime.now().minusMinutes(10),LocalDateTime.now().minusMinutes(5)); + cameraControlModule.downloadMp4(id,"D:\\work\\qqq_1.mp4", LocalDateTime.now().minusMinutes(10),LocalDateTime.now().minusMinutes(5)); return Result.success(); } private void checkLogin(Integer cameraId){ - if(HikLoginModule.CameraConnMap.getConnId(cameraId) == null){ + if(CameraConnMap.getConnId(cameraId) == null){ cameraLogin(cameraId); } } 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 929a758..2a642ad 100644 --- a/web/src/main/java/com/zhehekeji/web/controller/CameraController.java +++ b/web/src/main/java/com/zhehekeji/web/controller/CameraController.java @@ -6,7 +6,7 @@ import com.zhehekeji.core.pojo.Result; import com.zhehekeji.web.entity.Camera; import com.zhehekeji.web.entity.CameraIO; import com.zhehekeji.web.entity.CameraIOConfig; -import com.zhehekeji.web.lib.JoywarePtzControlModule; +import com.zhehekeji.web.lib.CameraControlModule; import com.zhehekeji.web.pojo.camera.CameraConfigSearchReq; import com.zhehekeji.web.pojo.camera.CameraIOPtz; import com.zhehekeji.web.pojo.street.StreetSearch; @@ -109,13 +109,16 @@ public class CameraController { return Result.success(cameraService.getPtzIdByCodeAndCameraId(code,cameraId)); } + @Resource + private CameraControlModule cameraControlModule; + @PostMapping("/io/toPtz") @ApiOperation(value = "转至球机IO配置点") public Result toPtz(@RequestBody CameraIOPtz req) { //todo //validatorUtil.validate(req); Integer ptzId = cameraService.getPtzId(req.getCameraIOId()); - JoywarePtzControlModule.toPtz(ptzId,req.getCameraId()); + cameraControlModule.toPtz(ptzId,req.getCameraId()); return Result.success(); } } diff --git a/web/src/main/java/com/zhehekeji/web/controller/StockController.java b/web/src/main/java/com/zhehekeji/web/controller/StockController.java index 0648b34..3e61686 100644 --- a/web/src/main/java/com/zhehekeji/web/controller/StockController.java +++ b/web/src/main/java/com/zhehekeji/web/controller/StockController.java @@ -5,7 +5,6 @@ import com.github.pagehelper.PageInfo; import com.zhehekeji.common.util.ValidatorUtil; import com.zhehekeji.core.pojo.Result; import com.zhehekeji.web.entity.Stock; -import com.zhehekeji.web.lib.JoywarePtzControlModule; import com.zhehekeji.web.pojo.category.PageSearch; import com.zhehekeji.web.pojo.stock.CheckByMan; import com.zhehekeji.web.pojo.stock.StockCheck; @@ -111,12 +110,12 @@ public class StockController { return Result.success(stockService.checkByMan(checkByMan)); } - @ApiOperation(value = "slow") - @RequestMapping(value = "/slow", method = RequestMethod.GET) - public Result slow(Integer cameraId,Integer x) { - JoywarePtzControlModule.toPtzSlow(cameraId,x); - return Result.success(); - - } +// @ApiOperation(value = "slow") +// @RequestMapping(value = "/slow", method = RequestMethod.GET) +// public Result slow(Integer cameraId,Integer x) { +// JoywarePtzControlModule.toPtzSlow(cameraId,x); +// return Result.success(); +// +// } } diff --git a/web/src/main/java/com/zhehekeji/web/lib/CameraConnMap.java b/web/src/main/java/com/zhehekeji/web/lib/CameraConnMap.java new file mode 100644 index 0000000..ef03a71 --- /dev/null +++ b/web/src/main/java/com/zhehekeji/web/lib/CameraConnMap.java @@ -0,0 +1,49 @@ +package com.zhehekeji.web.lib; + +import com.zhehekeji.web.lib.joyware.NetSDKLib; + +import java.util.HashMap; +import java.util.Map; + +/** + * camera login handler + */ +public class CameraConnMap { + + /** + * key :cameraId + * value: loginId + */ + public static Map cameraMap = new HashMap<>(); + + /** + * key:loginId + * value: cameraId + */ + public static Map loginMap = new HashMap<>(); + + public static void conn(Integer cameraId,NetSDKLib.LLong handlerId){ + synchronized (cameraId.toString().intern()){ + cameraMap.put(cameraId,handlerId); + loginMap.put(handlerId,cameraId); + } + + } + + public static void disConn(Integer cameraId){ + synchronized (cameraId.toString().intern()){ + NetSDKLib.LLong lLong = cameraMap.get(cameraId); + cameraMap.remove(cameraId); + loginMap.remove(lLong); + } + } + + public static NetSDKLib.LLong getConnId(Integer cameraId){ + return cameraMap.get(cameraId); + } + + public static Integer getCameraIdByLoginId(NetSDKLib.LLong lLong){ + return loginMap.get(lLong); + } + +} diff --git a/web/src/main/java/com/zhehekeji/web/lib/CameraControlLoginModule.java b/web/src/main/java/com/zhehekeji/web/lib/CameraControlLoginModule.java new file mode 100644 index 0000000..49d198e --- /dev/null +++ b/web/src/main/java/com/zhehekeji/web/lib/CameraControlLoginModule.java @@ -0,0 +1,9 @@ +package com.zhehekeji.web.lib; + +import com.zhehekeji.web.lib.joyware.NetSDKLib; + +public interface CameraControlLoginModule { + + NetSDKLib.LLong login(String ip, int port, String user, String password); + +} diff --git a/web/src/main/java/com/zhehekeji/web/lib/CameraControlModule.java b/web/src/main/java/com/zhehekeji/web/lib/CameraControlModule.java new file mode 100644 index 0000000..70f8175 --- /dev/null +++ b/web/src/main/java/com/zhehekeji/web/lib/CameraControlModule.java @@ -0,0 +1,134 @@ +package com.zhehekeji.web.lib; + +import java.time.LocalDateTime; + +public interface CameraControlModule { + + /** + * 向上 + */ + boolean ptzControlUpStart(Integer cameraId, int nChannelID, int lParam1, int lParam2); + + boolean ptzControlUpEnd(Integer cameraId, int nChannelID); + + /** + * 向下 + */ + boolean ptzControlDownStart(Integer cameraId, int nChannelID, int lParam1, int lParam2); + + boolean ptzControlDownEnd(Integer cameraId, int nChannelID); + + /** + * 向左 + */ + boolean ptzControlLeftStart(Integer cameraId, int nChannelID, int lParam1, int lParam2); + + boolean ptzControlLeftEnd(Integer cameraId, int nChannelID); + + /** + * 向右 + */ + boolean ptzControlRightStart(Integer cameraId, int nChannelID, int lParam1, int lParam2); + + boolean ptzControlRightEnd(Integer cameraId, int nChannelID); + + /** + * 向左上 + */ + boolean ptzControlLeftUpStart(Integer cameraId, int nChannelID, int lParam1, int lParam2); + + boolean ptzControlLeftUpEnd(Integer cameraId, int nChannelID); + + /** + * 向右上 + */ + boolean ptzControlRightUpStart(Integer cameraId, int nChannelID, int lParam1, int lParam2); + + boolean ptzControlRightUpEnd(Integer cameraId, int nChannelID); + + /** + * 向左下 + */ + boolean ptzControlLeftDownStart(Integer cameraId, int nChannelID, int lParam1, int lParam2); + + boolean ptzControlLeftDownEnd(Integer cameraId, int nChannelID); + + /** + * 向右下 + */ + boolean ptzControlRightDownStart(Integer cameraId, int nChannelID, int lParam1, int lParam2); + + boolean ptzControlRightDownEnd(Integer cameraId, int nChannelID); + + /** + * 变倍+ + */ + boolean ptzControlZoomAddStart(Integer cameraId, int nChannelID, int lParam2); + + boolean ptzControlZoomAddEnd(Integer cameraId, int nChannelID); + + /** + * 变倍- + */ + boolean ptzControlZoomDecStart(Integer cameraId, int nChannelID, int lParam2); + + boolean ptzControlZoomDecEnd(Integer cameraId, int nChannelID); + + /** + * 变焦+ + */ + boolean ptzControlFocusAddStart(Integer cameraId, int nChannelID, int lParam2); + + boolean ptzControlFocusAddEnd(Integer cameraId, int nChannelID); + + /** + * 变焦- + */ + boolean ptzControlFocusDecStart(Integer cameraId, int nChannelID, int lParam2); + + boolean ptzControlFocusDecEnd(Integer cameraId, int nChannelID); + + /** + * 光圈+ + */ + boolean ptzControlIrisAddStart(Integer cameraId, int nChannelID, int lParam2); + + boolean ptzControlIrisAddEnd(Integer cameraId, int nChannelID); + + /** + * 光圈- + */ + boolean ptzControlIrisDecStart(Integer cameraId, int nChannelID, int lParam2); + + boolean ptzControlIrisDecEnd(Integer cameraId, int nChannelID); + + boolean pic(Integer cameraId, int channel, String realPath); + + void downloadMp4(Integer cameraId, String path, LocalDateTime start, LocalDateTime end); + + /** + * 设置预置点 + * + * @param ptzId 预置点ID + * @param name 预置点的名称 + * @param cameraId 球机ID,来获取登录句柄 + */ + void ptz(Integer ptzId, String name, Integer cameraId); + + /** + * 转至 预置点 + * + * @param ptzId + * @param cameraId + */ + void toPtz(Integer ptzId, Integer cameraId); + + /** + * 转至 预置点 + * + * @param cameraId + */ + void toPtzSlow(Integer cameraId, Integer x); + + +} diff --git a/web/src/main/java/com/zhehekeji/web/lib/HikPtzControlModule.java b/web/src/main/java/com/zhehekeji/web/lib/HikPtzControlModule.java deleted file mode 100644 index d20659d..0000000 --- a/web/src/main/java/com/zhehekeji/web/lib/HikPtzControlModule.java +++ /dev/null @@ -1,386 +0,0 @@ -package com.zhehekeji.web.lib; - -import com.sun.jna.ptr.IntByReference; -import com.zhehekeji.common.util.PathUtil; -import com.zhehekeji.core.util.Assert; -import com.zhehekeji.web.lib.hik.HCNetSDK; -import com.zhehekeji.web.lib.joyware.NET_IN_PTZ_STATUS_PROC; -import com.zhehekeji.web.lib.joyware.NetSDKLib; -import lombok.extern.slf4j.Slf4j; - -import java.time.LocalDateTime; - -/** - * 云台控制接口实现 - * 主要有 :八个方向控制、变倍、变焦、光圈功能 - */ -@Slf4j -public class HikPtzControlModule { - /** - * 向上 - */ - public static boolean ptzControlUpStart(Integer cameraId, int nChannelID, int dwPTZCommand,int dwStop) - { - int lUserId = HikLoginModule.CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModule.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, dwPTZCommand, 0); - } - - public static boolean ptzControlUpEnd(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) - { - int lUserId = HikLoginModule.CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModule.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, dwPTZCommand, 1); - } - - /** - * 向下 - */ - public static boolean ptzControlDownStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) - { - int lUserId = HikLoginModule.CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModule.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, dwPTZCommand, 0); - } - - public static boolean ptzControlDownEnd(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) - { - int lUserId = HikLoginModule.CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModule.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, dwPTZCommand, 1); - } - - /** - * 向左 - */ - public static boolean ptzControlLeftStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) - { - int lUserId = HikLoginModule.CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModule.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, dwPTZCommand, 0); - } - - public static boolean ptzControlLeftEnd(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) - { - int lUserId = HikLoginModule.CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModule.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, dwPTZCommand, 1); - } - /** - * 向右 - */ - public static boolean ptzControlRightStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) - { - int lUserId = HikLoginModule.CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModule.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, dwPTZCommand, 0); - } - - public static boolean ptzControlRightEnd(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) - { - int lUserId = HikLoginModule.CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModule.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, HCNetSDK.PAN_RIGHT, 1); - } - /** - * 向左上 - */ - public static boolean ptzControlLeftUpStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) - { - int lUserId = HikLoginModule.CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModule.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, dwPTZCommand, 0); - } - - public static boolean ptzControlLeftUpEnd(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) - { - int lUserId = HikLoginModule.CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModule.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, dwPTZCommand, 1); - } - - /** - * 向右上 - */ - public static boolean ptzControlRightUpStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) - { - int lUserId = HikLoginModule.CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModule.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, HCNetSDK.UP_RIGHT, 0); - } - - public static boolean ptzControlRightUpEnd(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) - { - int lUserId = HikLoginModule.CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModule.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, HCNetSDK.UP_RIGHT, 1); - } - /** - * 向左下 - */ - public static boolean ptzControlLeftDownStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) - { - int lUserId = HikLoginModule.CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModule.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, dwPTZCommand, 0); - } - public static boolean ptzControlLeftDownEnd(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) - { - int lUserId = HikLoginModule.CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModule.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, dwPTZCommand, 1); - } - /** - * 向右下 - */ - public static boolean ptzControlRightDownStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) - { - int lUserId = HikLoginModule.CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModule.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, dwPTZCommand, 0); - } - - public static boolean ptzControlRightDownEnd(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) - { - int lUserId = HikLoginModule.CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModule.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, dwPTZCommand, 1); - } - - /** - * 变倍+ - */ - public static boolean ptzControlZoomAddStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) - { - int lUserId = HikLoginModule.CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModule.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, dwPTZCommand, 0); - } - - public static boolean ptzControlZoomAddEnd(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) - { - int lUserId = HikLoginModule.CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModule.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, dwPTZCommand, 1); - } - - /** - * 变倍- - */ - public static boolean ptzControlZoomDecStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) - { - int lUserId = HikLoginModule.CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModule.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, dwPTZCommand, 0); - } - - public static boolean ptzControlZoomDecEnd(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) - { - int lUserId = HikLoginModule.CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModule.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, dwPTZCommand, 1); - } - /** - * 变焦+ - */ - public static boolean ptzControlFocusAddStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) - { - int lUserId = HikLoginModule.CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModule.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, dwPTZCommand, 0); - } - - public static boolean ptzControlFocusAddEnd(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) - { - int lUserId = HikLoginModule.CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModule.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, dwPTZCommand, 1); - } - /** - * 变焦- - */ - public static boolean ptzControlFocusDecStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) - { - int lUserId = HikLoginModule.CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModule.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, dwPTZCommand, 0); - } - - public static boolean ptzControlFocusDecEnd(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) - { - int lUserId = HikLoginModule.CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModule.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, dwPTZCommand, 1); - } - /** - * 光圈+ - */ - public static boolean ptzControlIrisAddStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) - { - int lUserId = HikLoginModule.CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModule.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, dwPTZCommand, 0); - } - - public static boolean ptzControlIrisAddEnd(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) - { - int lUserId = HikLoginModule.CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModule.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, dwPTZCommand, 1); - } - /** - * 光圈- - */ - public static boolean ptzControlIrisDecStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) - { - int lUserId = HikLoginModule.CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModule.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, dwPTZCommand, 0); - } - - public static boolean ptzControlIrisDecEnd(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) - { - int lUserId = HikLoginModule.CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModule.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, dwPTZCommand, 1); - } - - public static boolean pic(Integer cameraId, int nChannelID, String path) - { - PathUtil.checkDirc(path); - int lUserId = HikLoginModule.CameraConnMap.getConnId(cameraId).intValue(); - short wPicSize = 3; - short wPicQuality = 0; - HCNetSDK.NET_DVR_JPEGPARA jpegpara = new HCNetSDK.NET_DVR_JPEGPARA(wPicSize, wPicQuality); - boolean picResult = HikLoginModule.hcNetsdk.NET_DVR_CaptureJPEGPicture(lUserId, nChannelID, jpegpara, path); - if(picResult == false){ - int error = HikLoginModule.hcNetsdk.NET_DVR_GetLastError(); - log.error("pic error:{}",error); - } - - return picResult; - } - - /*public static boolean pic(Integer cameraId, int nChannelID, OrderInfo orderInfo) { - - Integer cmdSerial = OrderCmdSerial.nextSerial(); - OrderCmdSerial.put(cmdSerial, orderInfo); - IntByReference reserved = new IntByReference(0); - - HCNetSDK.NET_DVR_JPEGPARA jpegpara = new HCNetSDK.NET_DVR_JPEGPARA(); - return true; - // return LoginModule.hcNetsdk.NET_DVR_CaptureJPEGPicture(CameraConnMap.getConnId(cameraId), nChannelID, jpegpara, ); - }*/ - - public static void downloadMp4(Integer cameraId, String path, LocalDateTime start, LocalDateTime end) { - //视频结束时间加上5s - end = end.minusMinutes(1); - //start = end.minusSeconds(60); - PathUtil.checkDirc(path); - //NetSDKLib.NET_TIME startTime = new NetSDKLib.NET_TIME(); - //startTime.setTime(start.getYear(), start.getMonthValue(), start.getDayOfMonth(), start.getHour(), start.getMinute(), start.getSecond()); - //NetSDKLib.NET_TIME endTime = new NetSDKLib.NET_TIME(); - //endTime.setTime(end.getYear(), end.getMonthValue(), end.getDayOfMonth(), end.getHour(), end.getMinute(), end.getSecond()); - HCNetSDK.NET_DVR_TIME startTime = new HCNetSDK.NET_DVR_TIME(); - startTime.setTime(start.getYear(), start.getMonthValue(), start.getDayOfMonth(), start.getHour(), start.getMinute(), start.getSecond()); - HCNetSDK.NET_DVR_TIME endTime = new HCNetSDK.NET_DVR_TIME(); - endTime.setTime(end.getYear(), end.getMonthValue(), end.getDayOfMonth(), end.getHour(), end.getMinute(), end.getSecond()); - - HCNetSDK.NET_DVR_PLAYCOND struDownloadCond = new HCNetSDK.NET_DVR_PLAYCOND(); - struDownloadCond.dwChannel = 1; - struDownloadCond.struStartTime = startTime; - struDownloadCond.struStopTime = endTime; - struDownloadCond.write(); - - log.info("start download mp4 path:{},startTime:{} ,endTime:{},now:{}", path, startTime.toString(), endTime.toString(), LocalDateTime.now()); - int lUserID = HikLoginModule.CameraConnMap.getConnId(cameraId).intValue(); - int result = HikLoginModule.hcNetsdk.NET_DVR_GetFileByTime(lUserID,1,startTime,endTime,path); - //int result = HikLoginModule.hcNetsdk.NET_DVR_GetFileByTime_V40(lUserID, path.getBytes(), struDownloadCond); - if (result < 0) { - //log.error("download error :{}", ToolKits.getErrorCodePrint()); - log.error("download error:{}",HikLoginModule.hcNetsdk.NET_DVR_GetLastError()); - - } else { - Integer process = 0; - - IntByReference intByReference = new IntByReference(0); - Boolean ok = HikLoginModule.hcNetsdk.NET_DVR_PlayBackControl(result,HikLoginModule.hcNetsdk.NET_DVR_PLAYSTART,process,null); - if(!ok){ - log.error("download error:{}",HikLoginModule.hcNetsdk.NET_DVR_GetLastError()); - } - } - } - - - /** - * 设置预置点 - * - * @param ptzId 预置点ID - * @param name 预置点的名称 - * @param cameraId 球机ID,来获取登录句柄 - */ - public static void ptz(Integer ptzId, String name, Integer cameraId) - { - int dwzCommand = HCNetSDK.SET_PRESET; - Boolean ok = HikLoginModule.hcNetsdk.NET_DVR_PTZPreset_Other(HikLoginModule.CameraConnMap.getConnId(cameraId).intValue(), 1, dwzCommand, ptzId.intValue()); - Assert.isTrue(ok, "设置失败"); - } - /** - * 转至 预置点 - * - * @param ptzId - * @param cameraId - */ - public static void toPtz(Integer ptzId, Integer cameraId) - { - int dwPTZCommand = HCNetSDK.GOTO_PRESET; - Boolean ok = HikLoginModule.hcNetsdk.NET_DVR_PTZPreset_Other(HikLoginModule.CameraConnMap.getConnId(cameraId).intValue(), 1, dwPTZCommand, ptzId.intValue()); - if (!ok) { - log.error("转至预置点 失败 cameraId:{},ptzId:{}", cameraId, ptzId); - } - } - - /** - * 转至 预置点 - * - * @param cameraId - */ - public static void toPtzSlow(Integer cameraId,Integer x) { - int dwPTZCommand = NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_MOVE_ABSOLUTELY; - NetSDKLib.PTZ_CONTROL_ABSOLUTELY absolutely = new NetSDKLib.PTZ_CONTROL_ABSOLUTELY(); - - absolutely.stuPosition.nPositionX = x; - absolutely.stuPosition.nPositionY = 0; - absolutely.stuSpeed.fPositionX = 0.2f; - absolutely.stuSpeed.fPositionY = 0.2f; - absolutely.write(); - //absolutely.stuSpeed.fZoom = 0.5f; - /*Boolean ok = LoginModule.netsdk.CLIENT_DHPTZControlEx2(CameraConnMap.getConnId(cameraId), 0, dwPTZCommand, - 0, 0, 0, 0, absolutely.getPointer());*/ - Boolean ok = true; - if (!ok) { - log.error("失败 cameraId:{}", cameraId); - } - } - - /** - * 旋转360度 - * @param cameraId - */ - public static void turn360C8(Integer cameraId,Integer ptzId){ - /* Thread thread = new Thread(new Runnable() { - @Override - public void run() { - int nType = NetSDKLib.NET_DEVSTATE_PTZ_LOCATION; - NetSDKLib.NET_PTZ_LOCATION_INFO ptzLocationInfo = new NetSDKLib.NET_PTZ_LOCATION_INFO(); - IntByReference intRetLen = new IntByReference(); - - ptzLocationInfo.write(); - System.out.println("size:"+ptzLocationInfo.size()); - boolean bRet = LoginModule.netsdk.CLIENT_QueryDevState(CameraConnMap.getConnId(cameraId), nType, ptzLocationInfo.getPointer(), ptzLocationInfo.size(), intRetLen, 3000); - ptzLocationInfo.read(); - - if (bRet) { - log.debug("xParam:{}",ptzLocationInfo.nPTZPan); - int qq = (ptzLocationInfo.nPTZPan + 1799) % 3600; - log.debug("xParam turn to:{}",qq); - toPtzSlow(cameraId,qq); - try { - Thread.sleep(5000); - } catch (InterruptedException e) { - e.printStackTrace(); - } - qq = (qq + 1799) % 3600; - log.debug("xParam turn to:{}",qq); - toPtzSlow(cameraId,qq); - try { - Thread.sleep(5000); - } catch (InterruptedException e) { - e.printStackTrace(); - } - if(ptzId != null){ - log.info(" turn C8"); - toPtz(ptzId,cameraId); - } - } else { - log.error( " { error code: ( 0x80000000|" + (LoginModule.netsdk.CLIENT_GetLastError() & 0x7fffffff) +" ). 参考 LastError.java }"); - } - } - }); - thread.start();*/ - } - - -} diff --git a/web/src/main/java/com/zhehekeji/web/lib/OrderRealtime.java b/web/src/main/java/com/zhehekeji/web/lib/OrderRealtime.java index c8a2a8b..16ecf87 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/OrderRealtime.java +++ b/web/src/main/java/com/zhehekeji/web/lib/OrderRealtime.java @@ -1,7 +1,5 @@ package com.zhehekeji.web.lib; -import com.zhehekeji.web.lib.joyware.NetSDKLib; - import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -23,13 +21,6 @@ public class OrderRealtime { */ private static Map warnIdMap = new ConcurrentHashMap<>(); - /** - * 下载句柄与订单号的关联 - * key: 下载句柄 - * value: 订单号 - */ - private static Map playOrderMap = new ConcurrentHashMap<>(); - public static void startOrder(Integer streetId, String orderNum) { orderMap.put(streetId, orderNum); } diff --git a/web/src/main/java/com/zhehekeji/web/lib/hik/HikCameraControlModuleImpl.java b/web/src/main/java/com/zhehekeji/web/lib/hik/HikCameraControlModuleImpl.java new file mode 100644 index 0000000..f9c68db --- /dev/null +++ b/web/src/main/java/com/zhehekeji/web/lib/hik/HikCameraControlModuleImpl.java @@ -0,0 +1,321 @@ +package com.zhehekeji.web.lib.hik; + +import com.zhehekeji.common.util.PathUtil; +import com.zhehekeji.core.util.Assert; +import com.zhehekeji.web.lib.CameraConnMap; +import com.zhehekeji.web.lib.CameraControlModule; +import com.zhehekeji.web.lib.joyware.NetSDKLib; +import lombok.extern.slf4j.Slf4j; + +import java.time.LocalDateTime; + +/** + * 云台控制接口实现 + * 主要有 :八个方向控制、变倍、变焦、光圈功能 + */ +@Slf4j +public class HikCameraControlModuleImpl implements CameraControlModule { + + /** + * 向上 + */ + public boolean ptzControlUpStart(Integer cameraId, int nChannelID, int dwPTZCommand,int dwStop) + { + int lUserId = CameraConnMap.getConnId(cameraId).intValue(); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, HCNetSDK.TILT_UP, 0); + } + + public boolean ptzControlUpEnd(Integer cameraId, int nChannelID) + { + int lUserId = CameraConnMap.getConnId(cameraId).intValue(); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, HCNetSDK.TILT_UP, 1); + } + + /** + * 向下 + */ + public boolean ptzControlDownStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) + { + int lUserId = CameraConnMap.getConnId(cameraId).intValue(); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, HCNetSDK.TILT_DOWN, 0); + } + + public boolean ptzControlDownEnd(Integer cameraId, int nChannelID) + { + int lUserId = CameraConnMap.getConnId(cameraId).intValue(); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, HCNetSDK.TILT_DOWN, 1); + } + + /** + * 向左 + */ + public boolean ptzControlLeftStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) + { + int lUserId = CameraConnMap.getConnId(cameraId).intValue(); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, HCNetSDK.PAN_LEFT, 0); + } + + public boolean ptzControlLeftEnd(Integer cameraId, int nChannelID) + { + int lUserId = CameraConnMap.getConnId(cameraId).intValue(); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, HCNetSDK.PAN_LEFT, 1); + } + /** + * 向右 + */ + public boolean ptzControlRightStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) + { + int lUserId = CameraConnMap.getConnId(cameraId).intValue(); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, HCNetSDK.PAN_RIGHT, 0); + } + + public boolean ptzControlRightEnd(Integer cameraId, int nChannelID) + { + int lUserId = CameraConnMap.getConnId(cameraId).intValue(); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, HCNetSDK.PAN_RIGHT, 1); + } + /** + * 向左上 + */ + public boolean ptzControlLeftUpStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) + { + int lUserId = CameraConnMap.getConnId(cameraId).intValue(); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, HCNetSDK.UP_LEFT, 0); + } + + public boolean ptzControlLeftUpEnd(Integer cameraId, int nChannelID) + { + int lUserId = CameraConnMap.getConnId(cameraId).intValue(); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, HCNetSDK.UP_LEFT, 1); + } + + /** + * 向右上 + */ + public boolean ptzControlRightUpStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) + { + int lUserId = CameraConnMap.getConnId(cameraId).intValue(); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, HCNetSDK.UP_RIGHT, 0); + } + + + public boolean ptzControlRightUpEnd(Integer cameraId, int nChannelID) + { + int lUserId = CameraConnMap.getConnId(cameraId).intValue(); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, HCNetSDK.UP_RIGHT, 1); + } + /** + * 向左下 + */ + public boolean ptzControlLeftDownStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) + { + int lUserId = CameraConnMap.getConnId(cameraId).intValue(); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, HCNetSDK.DOWN_LEFT, 0); + } + public boolean ptzControlLeftDownEnd(Integer cameraId, int nChannelID) + { + int lUserId = CameraConnMap.getConnId(cameraId).intValue(); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, HCNetSDK.DOWN_LEFT, 1); + } + /** + * 向右下 + */ + public boolean ptzControlRightDownStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) + { + int lUserId = CameraConnMap.getConnId(cameraId).intValue(); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, HCNetSDK.DOWN_RIGHT, 0); + } + + public boolean ptzControlRightDownEnd(Integer cameraId, int nChannelID) + { + int lUserId = CameraConnMap.getConnId(cameraId).intValue(); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, HCNetSDK.DOWN_RIGHT, 1); + } + + /** + * 变倍+ + */ + public boolean ptzControlZoomAddStart(Integer cameraId, int nChannelID, int dwPTZCommand) + { + int lUserId = CameraConnMap.getConnId(cameraId).intValue(); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, HCNetSDK.ZOOM_IN, 0); + } + + public boolean ptzControlZoomAddEnd(Integer cameraId, int nChannelID) + { + int lUserId = CameraConnMap.getConnId(cameraId).intValue(); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, HCNetSDK.ZOOM_IN, 1); + } + + /** + * 变倍- + */ + public boolean ptzControlZoomDecStart(Integer cameraId, int nChannelID, int dwPTZCommand) + { + int lUserId = CameraConnMap.getConnId(cameraId).intValue(); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, HCNetSDK.ZOOM_OUT, 0); + } + + public boolean ptzControlZoomDecEnd(Integer cameraId, int nChannelID) + { + int lUserId = CameraConnMap.getConnId(cameraId).intValue(); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, HCNetSDK.ZOOM_OUT, 1); + } + /** + * 变焦+ + */ + public boolean ptzControlFocusAddStart(Integer cameraId, int nChannelID, int dwPTZCommand) + { + int lUserId = CameraConnMap.getConnId(cameraId).intValue(); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, HCNetSDK.FOCUS_NEAR, 0); + } + + public boolean ptzControlFocusAddEnd(Integer cameraId, int nChannelID) + { + int lUserId = CameraConnMap.getConnId(cameraId).intValue(); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, HCNetSDK.FOCUS_NEAR, 1); + } + /** + * 变焦- + */ + public boolean ptzControlFocusDecStart(Integer cameraId, int nChannelID, int dwPTZCommand) + { + int lUserId = CameraConnMap.getConnId(cameraId).intValue(); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, HCNetSDK.FOCUS_FAR, 0); + } + + public boolean ptzControlFocusDecEnd(Integer cameraId, int nChannelID) + { + int lUserId = CameraConnMap.getConnId(cameraId).intValue(); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, HCNetSDK.FOCUS_FAR, 1); + } + + /** + * 光圈+ + */ + public boolean ptzControlIrisAddStart(Integer cameraId, int nChannelID, int dwPTZCommand) + { + int lUserId = CameraConnMap.getConnId(cameraId).intValue(); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, HCNetSDK.IRIS_OPEN, 0); + } + + public boolean ptzControlIrisAddEnd(Integer cameraId, int nChannelID) + { + int lUserId = CameraConnMap.getConnId(cameraId).intValue(); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, HCNetSDK.IRIS_OPEN, 1); + } + + /** + * 光圈- + */ + public boolean ptzControlIrisDecStart(Integer cameraId, int nChannelID, int dwPTZCommand) + { + int lUserId = CameraConnMap.getConnId(cameraId).intValue(); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, HCNetSDK.IRIS_CLOSE, 0); + } + + public boolean ptzControlIrisDecEnd(Integer cameraId, int nChannelID) + { + int lUserId = CameraConnMap.getConnId(cameraId).intValue(); + Boolean ok = HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, nChannelID, HCNetSDK.IRIS_CLOSE, 1); + return ok; + } + + public boolean pic(Integer cameraId, int nChannelID, String path) + { + PathUtil.checkDirc(path); + int lUserId = CameraConnMap.getConnId(cameraId).intValue(); + short wPicSize = 3; + short wPicQuality = 0; + HCNetSDK.NET_DVR_JPEGPARA jpegpara = new HCNetSDK.NET_DVR_JPEGPARA(wPicSize, wPicQuality); + boolean picResult = HikLoginModuleImpl.hcNetsdk.NET_DVR_CaptureJPEGPicture(lUserId, nChannelID, jpegpara, path); + if (!picResult) { + log.error("pic error:{},cameraId:{}", HikLoginModuleImpl.hcNetsdk.NET_DVR_GetLastError(),cameraId); + } + + return picResult; + } + + public void downloadMp4(Integer cameraId, String path, LocalDateTime start, LocalDateTime end) { + PathUtil.checkDirc(path); + HCNetSDK.NET_DVR_TIME startTime = new HCNetSDK.NET_DVR_TIME(); + startTime.setTime(start.getYear(), start.getMonthValue(), start.getDayOfMonth(), start.getHour(), start.getMinute(), start.getSecond()); + HCNetSDK.NET_DVR_TIME endTime = new HCNetSDK.NET_DVR_TIME(); + endTime.setTime(end.getYear(), end.getMonthValue(), end.getDayOfMonth(), end.getHour(), end.getMinute(), end.getSecond()); + + HCNetSDK.NET_DVR_PLAYCOND struDownloadCond = new HCNetSDK.NET_DVR_PLAYCOND(); + struDownloadCond.dwChannel = 1; + struDownloadCond.struStartTime = startTime; + struDownloadCond.struStopTime = endTime; + struDownloadCond.write(); + + log.info("start download mp4 path:{},startTime:{} ,endTime:{},now:{}", path, startTime.toString(), endTime.toString(), LocalDateTime.now()); + int lUserID = CameraConnMap.getConnId(cameraId).intValue(); + int result = HikLoginModuleImpl.hcNetsdk.NET_DVR_GetFileByTime(lUserID,1,startTime,endTime,path); + if (result < 0) { + log.error("downloadMp4 error:{},cameraId:{}", HikLoginModuleImpl.hcNetsdk.NET_DVR_GetLastError(),cameraId); + } else { + Integer process = 0; + Boolean ok = HikLoginModuleImpl.hcNetsdk.NET_DVR_PlayBackControl(result, HikLoginModuleImpl.hcNetsdk.NET_DVR_PLAYSTART,process,null); + if(!ok){ + log.error("downloadMp4 error:{},cameraId:{}", HikLoginModuleImpl.hcNetsdk.NET_DVR_GetLastError(),cameraId); + } + } + } + + + /** + * 设置预置点 + * + * @param ptzId 预置点ID + * @param name 预置点的名称 + * @param cameraId 球机ID,来获取登录句柄 + */ + public void ptz(Integer ptzId, String name, Integer cameraId) + { + int dwzCommand = HCNetSDK.SET_PRESET; + Boolean ok = HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZPreset_Other(CameraConnMap.getConnId(cameraId).intValue(), 1, dwzCommand, ptzId.intValue()); + if(!ok){ + log.error("ptz error:{},cameraId:{}", HikLoginModuleImpl.hcNetsdk.NET_DVR_GetLastError(),cameraId); + } + Assert.isTrue(ok, "设置失败"); + } + /** + * 转至 预置点 + * + * @param ptzId + * @param cameraId + */ + public void toPtz(Integer ptzId, Integer cameraId) + { + int dwPTZCommand = HCNetSDK.GOTO_PRESET; + Boolean ok = HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZPreset_Other(CameraConnMap.getConnId(cameraId).intValue(), 1, dwPTZCommand, ptzId.intValue()); + if(!ok){ + log.error("toPtz error:{},cameraId:{}", HikLoginModuleImpl.hcNetsdk.NET_DVR_GetLastError(),cameraId); + } + + } + + /** + * 转至 预置点 + * + * @param cameraId + */ + public void toPtzSlow(Integer cameraId,Integer x) { + int dwPTZCommand = NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_MOVE_ABSOLUTELY; + NetSDKLib.PTZ_CONTROL_ABSOLUTELY absolutely = new NetSDKLib.PTZ_CONTROL_ABSOLUTELY(); + + absolutely.stuPosition.nPositionX = x; + absolutely.stuPosition.nPositionY = 0; + absolutely.stuSpeed.fPositionX = 0.2f; + absolutely.stuSpeed.fPositionY = 0.2f; + absolutely.write(); + //absolutely.stuSpeed.fZoom = 0.5f; + Boolean ok = HikLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx2(CameraConnMap.getConnId(cameraId), 0, dwPTZCommand, + 0, 0, 0, 0, absolutely.getPointer()); + if(!ok){ + log.error("toPtzSlow error:{},cameraId:{}", HikLoginModuleImpl.hcNetsdk.NET_DVR_GetLastError(),cameraId); + } + } + +} diff --git a/web/src/main/java/com/zhehekeji/web/lib/HikLoginModule.java b/web/src/main/java/com/zhehekeji/web/lib/hik/HikLoginModuleImpl.java similarity index 90% rename from web/src/main/java/com/zhehekeji/web/lib/HikLoginModule.java rename to web/src/main/java/com/zhehekeji/web/lib/hik/HikLoginModuleImpl.java index 69a235e..b2cca98 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/HikLoginModule.java +++ b/web/src/main/java/com/zhehekeji/web/lib/hik/HikLoginModuleImpl.java @@ -1,6 +1,7 @@ -package com.zhehekeji.web.lib; +package com.zhehekeji.web.lib.hik; -import com.zhehekeji.web.lib.hik.HCNetSDK; +import com.zhehekeji.web.lib.CameraControlLoginModule; +import com.zhehekeji.web.lib.OrderInfo; import com.zhehekeji.web.lib.joyware.NetSDKLib; import lombok.Data; @@ -11,7 +12,7 @@ import java.util.Map; * 海康 登陆接口实现 * 主要有 :初始化、登陆、登出功能 */ -public class HikLoginModule { +public class HikLoginModuleImpl implements CameraControlLoginModule { public static NetSDKLib netsdk = NetSDKLib.NETSDK_INSTANCE; @@ -30,7 +31,7 @@ public class HikLoginModule { * 初始化 * \endif */ - public static boolean init() { + public boolean init() { //public static boolean init(NetSDKLib.fDisConnect disConnect, NetSDKLib.fHaveReConnect haveReConnect) { bInit = hcNetsdk.NET_DVR_Init(); @@ -66,7 +67,7 @@ public class HikLoginModule { * 登录设备 * \endif */ - public static int login(String m_strIp, int m_nPort, String m_strUser, String m_strPassword) { + public NetSDKLib.LLong login(String m_strIp, int m_nPort, String m_strUser, String m_strPassword) { init(); HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();//设备登录信息 HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();//设备信息 @@ -85,7 +86,8 @@ public class HikLoginModule { m_strLoginInfo.bUseAsynLogin = false; //是否异步登录:0- 否,1- 是 m_strLoginInfo.write(); int m_lUserID = hcNetsdk.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo); - return m_lUserID; + System.out.println(hcNetsdk.NET_DVR_GetLastError()); + return new NetSDKLib.LLong(m_lUserID); } /** diff --git a/web/src/main/java/com/zhehekeji/web/lib/joyware/CallBack.java b/web/src/main/java/com/zhehekeji/web/lib/joyware/CallBack.java index c278f82..0892b23 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/joyware/CallBack.java +++ b/web/src/main/java/com/zhehekeji/web/lib/joyware/CallBack.java @@ -1,9 +1,7 @@ package com.zhehekeji.web.lib.joyware; import com.sun.jna.Pointer; -import com.zhehekeji.web.lib.HikLoginModule; -import com.zhehekeji.web.lib.JoywareLoginModule; -import com.zhehekeji.web.lib.OrderRealtime; +import com.zhehekeji.web.lib.CameraConnMap; import lombok.extern.slf4j.Slf4j; @Slf4j @@ -16,7 +14,7 @@ public class CallBack { @Override public void invoke(NetSDKLib.LLong lLoginID, String pchDVRIP, int nDVRPort, Pointer dwUser) { - Integer cameraId = HikLoginModule.CameraConnMap.getCameraIdByLoginId(lLoginID); + Integer cameraId = CameraConnMap.getCameraIdByLoginId(lLoginID); log.error("球机:{}掉线",cameraId); //CameraConnMap.disConn(cameraId); } @@ -30,7 +28,7 @@ public class CallBack { // @Override // public void invoke(NetSDKLib.LLong lPlayHandle, int dwTotalSize, int dwDownLoadSize, int index, NetSDKLib.NET_RECORDFILE_INFO.ByValue recordfileinfo, Pointer dwUser) { // if(dwDownLoadSize == -1) { -// JoywareLoginModule.netsdk.CLIENT_StopDownload(lPlayHandle); +// JoywareLoginModuleImpl.netsdk.CLIENT_StopDownload(lPlayHandle); // } // } // } diff --git a/web/src/main/java/com/zhehekeji/web/lib/CaptureCmdSerial.java b/web/src/main/java/com/zhehekeji/web/lib/joyware/CaptureCmdSerial.java similarity index 91% rename from web/src/main/java/com/zhehekeji/web/lib/CaptureCmdSerial.java rename to web/src/main/java/com/zhehekeji/web/lib/joyware/CaptureCmdSerial.java index 7a6c0a6..60e479a 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/CaptureCmdSerial.java +++ b/web/src/main/java/com/zhehekeji/web/lib/joyware/CaptureCmdSerial.java @@ -1,4 +1,4 @@ -package com.zhehekeji.web.lib; +package com.zhehekeji.web.lib.joyware; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicInteger; @@ -33,7 +33,7 @@ public class CaptureCmdSerial { * @param serialId * @return */ - public static String getOrderInfo(Integer serialId) { + public static String getPath(Integer serialId) { String path = captureMap.get(serialId); captureMap.remove(serialId); return path; diff --git a/web/src/main/java/com/zhehekeji/web/lib/joyware/CaptureReceiveCB.java b/web/src/main/java/com/zhehekeji/web/lib/joyware/CaptureReceiveCB.java index 4fcb414..2e0853a 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/joyware/CaptureReceiveCB.java +++ b/web/src/main/java/com/zhehekeji/web/lib/joyware/CaptureReceiveCB.java @@ -1,15 +1,10 @@ package com.zhehekeji.web.lib.joyware; import com.sun.jna.Pointer; -import com.zhehekeji.web.config.ConfigProperties; -import com.zhehekeji.web.mapper.OrderMapper; -import com.zhehekeji.web.mapper.StockMapper; -import com.zhehekeji.web.service.PlcService; +import com.zhehekeji.common.util.PathUtil; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Component; -import javax.annotation.Resource; +import java.io.*; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; @@ -19,26 +14,61 @@ import java.util.concurrent.TimeUnit; * @Author wangyiming1031@aliyun.com * @Date 2020/12/14 16:11 **/ -@Component @Slf4j public class CaptureReceiveCB implements NetSDKLib.fSnapRev { - @Resource - private ConfigProperties configProperties; - - private static String fileType = "jpg"; - - /** - * 执行线程池 - */ private static ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 3, 200, - TimeUnit.MINUTES, new ArrayBlockingQueue<>(10000000)); + TimeUnit.MINUTES, new ArrayBlockingQueue<>(1000)); + @Override public void invoke(NetSDKLib.LLong lLoginID, Pointer pBuf, int RevLen, int EncodeType, int CmdSerial, Pointer dwUser) { - CaptureRunnable captureRunnable = new CaptureRunnable(CmdSerial, fileType, RevLen, configProperties.getSavePath().getMediaPath(), pBuf); + String path = CaptureCmdSerial.getPath(CmdSerial); + CaptureRunnable captureRunnable = new CaptureRunnable(pBuf,RevLen,path); threadPoolExecutor.execute(captureRunnable); } + class CaptureRunnable implements Runnable { + + private Pointer pBuf; + private int revLen; + private String path; + + public CaptureRunnable(Pointer pBuf, int revLen, String path){ + this.pBuf = pBuf; + this.revLen = revLen; + this.path = path; + } + + @Override + public void run() { + savePic(pBuf,revLen,path); + } + } + + private void savePic(Pointer pBuf, int RevLen, String path) { + System.out.println("download pic:"+path); + File file = PathUtil.getFile(path); + RandomAccessFile randomAccessFile = null; + try { + randomAccessFile = new RandomAccessFile(file, "rw"); + randomAccessFile.write(pBuf.getByteArray(0, RevLen)); + randomAccessFile.close(); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + if (randomAccessFile != null) { + try { + randomAccessFile.close(); + } catch (IOException ex) { + ex.printStackTrace(); + } + } + + } + + } + } diff --git a/web/src/main/java/com/zhehekeji/web/lib/joyware/CaptureRunnable.java b/web/src/main/java/com/zhehekeji/web/lib/joyware/CaptureRunnable.java deleted file mode 100644 index bf590b4..0000000 --- a/web/src/main/java/com/zhehekeji/web/lib/joyware/CaptureRunnable.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.zhehekeji.web.lib.joyware; - -import com.sun.jna.Pointer; -import com.zhehekeji.common.util.PathUtil; -import com.zhehekeji.web.lib.CaptureCmdSerial; -import com.zhehekeji.web.lib.OrderInfo; -import com.zhehekeji.web.service.PlcService; -import lombok.extern.slf4j.Slf4j; - -import javax.imageio.ImageIO; -import java.awt.image.BufferedImage; -import java.io.ByteArrayInputStream; -import java.io.File; -import java.io.IOException; - -@Slf4j -public class CaptureRunnable implements Runnable { - - private int CmdSerial; - - private String fileType; - - private Integer RevLen; - - private String mediaPath; - - private Pointer pBuf; - - public CaptureRunnable(int cmdSerial, String fileType, Integer revLen, String mediaPath, - Pointer pBuf) { - this.CmdSerial = cmdSerial; - this.fileType = fileType; - this.RevLen = revLen; - this.mediaPath = mediaPath; - this.pBuf = pBuf; - } - - @Override - public void run() { - String path = CaptureCmdSerial.getOrderInfo(CmdSerial); - if (path != null) { - String picPath = savePic(pBuf, RevLen, mediaPath + path); - if (picPath == null) { - return; - } - return; - } - } - - private String savePic(Pointer pBuf, int RevLen, String path) { - BufferedImage bufferedImage = null; - if (pBuf != null && RevLen > 0) { - byte[] buf = pBuf.getByteArray(0, RevLen); - ByteArrayInputStream byteArrInput = new ByteArrayInputStream(buf); - try { - bufferedImage = ImageIO.read(byteArrInput); - if (bufferedImage == null) { - return null; - } - File file = PathUtil.getFile(path); - ImageIO.write(bufferedImage, fileType, file); - return path; - } catch (IOException e) { - e.printStackTrace(); - } finally { - if (bufferedImage != null) { - bufferedImage.flush(); - } - } - } - return null; - } -} diff --git a/web/src/main/java/com/zhehekeji/web/lib/JoywarePtzControlModule.java b/web/src/main/java/com/zhehekeji/web/lib/joyware/JoywareCameraControlModuleImpl.java similarity index 51% rename from web/src/main/java/com/zhehekeji/web/lib/JoywarePtzControlModule.java rename to web/src/main/java/com/zhehekeji/web/lib/joyware/JoywareCameraControlModuleImpl.java index 47b4177..c303c8c 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/JoywarePtzControlModule.java +++ b/web/src/main/java/com/zhehekeji/web/lib/joyware/JoywareCameraControlModuleImpl.java @@ -1,11 +1,10 @@ -package com.zhehekeji.web.lib; +package com.zhehekeji.web.lib.joyware; import com.sun.jna.ptr.IntByReference; import com.zhehekeji.common.util.PathUtil; import com.zhehekeji.core.util.Assert; -import com.zhehekeji.web.lib.joyware.CallBack; -import com.zhehekeji.web.lib.joyware.NetSDKLib; -import com.zhehekeji.web.lib.joyware.ToolKits; +import com.zhehekeji.web.lib.CameraConnMap; +import com.zhehekeji.web.lib.CameraControlModule; import lombok.extern.slf4j.Slf4j; import java.time.LocalDateTime; @@ -15,23 +14,20 @@ import java.time.LocalDateTime; * 主要有 :八个方向控制、变倍、变焦、光圈功能 */ @Slf4j -public class JoywarePtzControlModule { - - - //private static CallBack.Mp4ReceiveCB mp4ReceiveCB = new CallBack.Mp4ReceiveCB(); +public class JoywareCameraControlModuleImpl implements CameraControlModule { /** * 向上 */ - public static boolean ptzControlUpStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) { - return JoywareLoginModule.netsdk.CLIENT_DHPTZControlEx(HikLoginModule.CameraConnMap.getConnId(cameraId), nChannelID, + public boolean ptzControlUpStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) { + return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_UP_CONTROL, lParam1, lParam2, 0, 0); } - public static boolean ptzControlUpEnd(Integer cameraId, int nChannelID) { - return JoywareLoginModule.netsdk.CLIENT_DHPTZControlEx(HikLoginModule.CameraConnMap.getConnId(cameraId), nChannelID, + public boolean ptzControlUpEnd(Integer cameraId, int nChannelID) { + return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_UP_CONTROL, 0, 0, 0, 1); } @@ -39,14 +35,14 @@ public class JoywarePtzControlModule { /** * 向下 */ - public static boolean ptzControlDownStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) { - return JoywareLoginModule.netsdk.CLIENT_DHPTZControlEx(HikLoginModule.CameraConnMap.getConnId(cameraId), nChannelID, + public boolean ptzControlDownStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) { + return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_DOWN_CONTROL, lParam1, lParam2, 0, 0); } - public static boolean ptzControlDownEnd(Integer cameraId, int nChannelID) { - return JoywareLoginModule.netsdk.CLIENT_DHPTZControlEx(HikLoginModule.CameraConnMap.getConnId(cameraId), nChannelID, + public boolean ptzControlDownEnd(Integer cameraId, int nChannelID) { + return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_DOWN_CONTROL, 0, 0, 0, 1); } @@ -54,14 +50,14 @@ public class JoywarePtzControlModule { /** * 向左 */ - public static boolean ptzControlLeftStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) { - return JoywareLoginModule.netsdk.CLIENT_DHPTZControlEx(HikLoginModule.CameraConnMap.getConnId(cameraId), nChannelID, + public boolean ptzControlLeftStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) { + return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_LEFT_CONTROL, lParam1, lParam2, 0, 0); } - public static boolean ptzControlLeftEnd(Integer cameraId, int nChannelID) { - return JoywareLoginModule.netsdk.CLIENT_DHPTZControlEx(HikLoginModule.CameraConnMap.getConnId(cameraId), nChannelID, + public boolean ptzControlLeftEnd(Integer cameraId, int nChannelID) { + return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_LEFT_CONTROL, 0, 0, 0, 1); } @@ -69,14 +65,14 @@ public class JoywarePtzControlModule { /** * 向右 */ - public static boolean ptzControlRightStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) { - return JoywareLoginModule.netsdk.CLIENT_DHPTZControlEx(HikLoginModule.CameraConnMap.getConnId(cameraId), nChannelID, + public boolean ptzControlRightStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) { + return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_RIGHT_CONTROL, lParam1, lParam2, 0, 0); } - public static boolean ptzControlRightEnd(Integer cameraId, int nChannelID) { - return JoywareLoginModule.netsdk.CLIENT_DHPTZControlEx(HikLoginModule.CameraConnMap.getConnId(cameraId), nChannelID, + public boolean ptzControlRightEnd(Integer cameraId, int nChannelID) { + return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_RIGHT_CONTROL, 0, 0, 0, 1); } @@ -84,14 +80,14 @@ public class JoywarePtzControlModule { /** * 向左上 */ - public static boolean ptzControlLeftUpStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) { - return JoywareLoginModule.netsdk.CLIENT_DHPTZControlEx(HikLoginModule.CameraConnMap.getConnId(cameraId), nChannelID, + public boolean ptzControlLeftUpStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) { + return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID, NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_LEFTTOP, lParam1, lParam2, 0, 0); } - public static boolean ptzControlLeftUpEnd(Integer cameraId, int nChannelID) { - return JoywareLoginModule.netsdk.CLIENT_DHPTZControlEx(HikLoginModule.CameraConnMap.getConnId(cameraId), nChannelID, + public boolean ptzControlLeftUpEnd(Integer cameraId, int nChannelID) { + return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID, NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_LEFTTOP, 0, 0, 0, 1); } @@ -99,14 +95,14 @@ public class JoywarePtzControlModule { /** * 向右上 */ - public static boolean ptzControlRightUpStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) { - return JoywareLoginModule.netsdk.CLIENT_DHPTZControlEx(HikLoginModule.CameraConnMap.getConnId(cameraId), nChannelID, + public boolean ptzControlRightUpStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) { + return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID, NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_RIGHTTOP, lParam1, lParam2, 0, 0); } - public static boolean ptzControlRightUpEnd(Integer cameraId, int nChannelID) { - return JoywareLoginModule.netsdk.CLIENT_DHPTZControlEx(HikLoginModule.CameraConnMap.getConnId(cameraId), nChannelID, + public boolean ptzControlRightUpEnd(Integer cameraId, int nChannelID) { + return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID, NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_RIGHTTOP, 0, 0, 0, 1); } @@ -114,14 +110,14 @@ public class JoywarePtzControlModule { /** * 向左下 */ - public static boolean ptzControlLeftDownStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) { - return JoywareLoginModule.netsdk.CLIENT_DHPTZControlEx(HikLoginModule.CameraConnMap.getConnId(cameraId), nChannelID, + public boolean ptzControlLeftDownStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) { + return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID, NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_LEFTDOWN, lParam1, lParam2, 0, 0); } - public static boolean ptzControlLeftDownEnd(Integer cameraId, int nChannelID) { - return JoywareLoginModule.netsdk.CLIENT_DHPTZControlEx(HikLoginModule.CameraConnMap.getConnId(cameraId), nChannelID, + public boolean ptzControlLeftDownEnd(Integer cameraId, int nChannelID) { + return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID, NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_LEFTDOWN, 0, 0, 0, 1); } @@ -129,14 +125,14 @@ public class JoywarePtzControlModule { /** * 向右下 */ - public static boolean ptzControlRightDownStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) { - return JoywareLoginModule.netsdk.CLIENT_DHPTZControlEx(HikLoginModule.CameraConnMap.getConnId(cameraId), nChannelID, + public boolean ptzControlRightDownStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) { + return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID, NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_RIGHTDOWN, lParam1, lParam2, 0, 0); } - public static boolean ptzControlRightDownEnd(Integer cameraId, int nChannelID) { - return JoywareLoginModule.netsdk.CLIENT_DHPTZControlEx(HikLoginModule.CameraConnMap.getConnId(cameraId), nChannelID, + public boolean ptzControlRightDownEnd(Integer cameraId, int nChannelID) { + return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID, NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_RIGHTDOWN, 0, 0, 0, 1); } @@ -144,14 +140,14 @@ public class JoywarePtzControlModule { /** * 变倍+ */ - public static boolean ptzControlZoomAddStart(Integer cameraId, int nChannelID, int lParam2) { - return JoywareLoginModule.netsdk.CLIENT_DHPTZControlEx(HikLoginModule.CameraConnMap.getConnId(cameraId), nChannelID, + public boolean ptzControlZoomAddStart(Integer cameraId, int nChannelID, int lParam2) { + return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_ZOOM_ADD_CONTROL, 0, lParam2, 0, 0); } - public static boolean ptzControlZoomAddEnd(Integer cameraId, int nChannelID) { - return JoywareLoginModule.netsdk.CLIENT_DHPTZControlEx(HikLoginModule.CameraConnMap.getConnId(cameraId), nChannelID, + public boolean ptzControlZoomAddEnd(Integer cameraId, int nChannelID) { + return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_ZOOM_ADD_CONTROL, 0, 0, 0, 1); } @@ -159,14 +155,14 @@ public class JoywarePtzControlModule { /** * 变倍- */ - public static boolean ptzControlZoomDecStart(Integer cameraId, int nChannelID, int lParam2) { - return JoywareLoginModule.netsdk.CLIENT_DHPTZControlEx(HikLoginModule.CameraConnMap.getConnId(cameraId), nChannelID, + public boolean ptzControlZoomDecStart(Integer cameraId, int nChannelID, int lParam2) { + return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_ZOOM_DEC_CONTROL, 0, lParam2, 0, 0); } - public static boolean ptzControlZoomDecEnd(Integer cameraId, int nChannelID) { - return JoywareLoginModule.netsdk.CLIENT_DHPTZControlEx(HikLoginModule.CameraConnMap.getConnId(cameraId), nChannelID, + public boolean ptzControlZoomDecEnd(Integer cameraId, int nChannelID) { + return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_ZOOM_DEC_CONTROL, 0, 0, 0, 1); } @@ -174,14 +170,14 @@ public class JoywarePtzControlModule { /** * 变焦+ */ - public static boolean ptzControlFocusAddStart(Integer cameraId, int nChannelID, int lParam2) { - return JoywareLoginModule.netsdk.CLIENT_DHPTZControlEx(HikLoginModule.CameraConnMap.getConnId(cameraId), nChannelID, + public boolean ptzControlFocusAddStart(Integer cameraId, int nChannelID, int lParam2) { + return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_FOCUS_ADD_CONTROL, 0, lParam2, 0, 0); } - public static boolean ptzControlFocusAddEnd(Integer cameraId, int nChannelID) { - return JoywareLoginModule.netsdk.CLIENT_DHPTZControlEx(HikLoginModule.CameraConnMap.getConnId(cameraId), nChannelID, + public boolean ptzControlFocusAddEnd(Integer cameraId, int nChannelID) { + return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_FOCUS_ADD_CONTROL, 0, 0, 0, 1); } @@ -189,14 +185,14 @@ public class JoywarePtzControlModule { /** * 变焦- */ - public static boolean ptzControlFocusDecStart(Integer cameraId, int nChannelID, int lParam2) { - return JoywareLoginModule.netsdk.CLIENT_DHPTZControlEx(HikLoginModule.CameraConnMap.getConnId(cameraId), nChannelID, + public boolean ptzControlFocusDecStart(Integer cameraId, int nChannelID, int lParam2) { + return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_FOCUS_DEC_CONTROL, 0, lParam2, 0, 0); } - public static boolean ptzControlFocusDecEnd(Integer cameraId, int nChannelID) { - return JoywareLoginModule.netsdk.CLIENT_DHPTZControlEx(HikLoginModule.CameraConnMap.getConnId(cameraId), nChannelID, + public boolean ptzControlFocusDecEnd(Integer cameraId, int nChannelID) { + return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_FOCUS_DEC_CONTROL, 0, 0, 0, 1); } @@ -204,14 +200,14 @@ public class JoywarePtzControlModule { /** * 光圈+ */ - public static boolean ptzControlIrisAddStart(Integer cameraId, int nChannelID, int lParam2) { - return JoywareLoginModule.netsdk.CLIENT_DHPTZControlEx(HikLoginModule.CameraConnMap.getConnId(cameraId), nChannelID, + public boolean ptzControlIrisAddStart(Integer cameraId, int nChannelID, int lParam2) { + return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_APERTURE_ADD_CONTROL, 0, lParam2, 0, 0); } - public static boolean ptzControlIrisAddEnd(Integer cameraId, int nChannelID) { - return JoywareLoginModule.netsdk.CLIENT_DHPTZControlEx(HikLoginModule.CameraConnMap.getConnId(cameraId), nChannelID, + public boolean ptzControlIrisAddEnd(Integer cameraId, int nChannelID) { + return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_APERTURE_ADD_CONTROL, 0, 0, 0, 1); } @@ -219,19 +215,19 @@ public class JoywarePtzControlModule { /** * 光圈- */ - public static boolean ptzControlIrisDecStart(Integer cameraId, int nChannelID, int lParam2) { - return JoywareLoginModule.netsdk.CLIENT_DHPTZControlEx(HikLoginModule.CameraConnMap.getConnId(cameraId), nChannelID, + public boolean ptzControlIrisDecStart(Integer cameraId, int nChannelID, int lParam2) { + return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_APERTURE_DEC_CONTROL, 0, lParam2, 0, 0); } - public static boolean ptzControlIrisDecEnd(Integer cameraId, int nChannelID) { - return JoywareLoginModule.netsdk.CLIENT_DHPTZControlEx(HikLoginModule.CameraConnMap.getConnId(cameraId), nChannelID, + public boolean ptzControlIrisDecEnd(Integer cameraId, int nChannelID) { + return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_APERTURE_DEC_CONTROL, 0, 0, 0, 1); } - public static boolean pic(Integer cameraId,Integer channel, String realPath) { + public boolean pic(Integer cameraId,int channel, String realPath) { NetSDKLib.SNAP_PARAMS stuSnapParams = new NetSDKLib.SNAP_PARAMS(); stuSnapParams.Channel = 0; // channel stuSnapParams.mode = 0; // capture picture mode @@ -239,11 +235,14 @@ public class JoywarePtzControlModule { stuSnapParams.InterSnap = 0; // timer capture picture time interval stuSnapParams.CmdSerial = CaptureCmdSerial.put(realPath); IntByReference reserved = new IntByReference(0); - return JoywareLoginModule.netsdk.CLIENT_SnapPictureEx(HikLoginModule.CameraConnMap.getConnId(cameraId), stuSnapParams, reserved); - + Boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_SnapPictureEx(CameraConnMap.getConnId(cameraId), stuSnapParams, reserved); + if (!ok) { + log.error("pic error :{},cameraId:{}", ToolKits.getErrorCodePrint(),cameraId); + } + return ok; } - public static void downloadMp4(Integer cameraId, String path, LocalDateTime start, LocalDateTime end) { + public void downloadMp4(Integer cameraId, String path, LocalDateTime start, LocalDateTime end) { //视频结束时间加上5s end = end.plusSeconds(5); PathUtil.checkDirc(path); @@ -258,14 +257,13 @@ public class JoywarePtzControlModule { download_by_data_type.szSavedFileName = path; download_by_data_type.emDataType = 3; download_by_data_type.emRecordType = 0; - //download_by_data_type.cbDownLoadPos = mp4ReceiveCB; download_by_data_type.write(); NetSDKLib.NET_OUT_DOWNLOAD_BY_DATA_TYPE net_out_download_by_data_type = new NetSDKLib.NET_OUT_DOWNLOAD_BY_DATA_TYPE(); net_out_download_by_data_type.write(); log.info("start download mp4 path:{},startTime:{} ,endTime:{},now:{}", path, startTime.toString(), endTime.toString(), LocalDateTime.now()); - NetSDKLib.LLong l = JoywareLoginModule.netsdk.CLIENT_DownloadByDataType(HikLoginModule.CameraConnMap.getConnId(cameraId), download_by_data_type.getPointer(), net_out_download_by_data_type.getPointer(), 8000); + NetSDKLib.LLong l = JoywareLoginModuleImpl.netsdk.CLIENT_DownloadByDataType(CameraConnMap.getConnId(cameraId), download_by_data_type.getPointer(), net_out_download_by_data_type.getPointer(), 8000); if (l.longValue() == 0) { - log.error("download error :{}", ToolKits.getErrorCodePrint()); + log.error("download mp4 error :{},cameraId:{}", ToolKits.getErrorCodePrint(),cameraId); } } @@ -276,9 +274,12 @@ public class JoywarePtzControlModule { * @param name 预置点的名称 * @param cameraId 球机ID,来获取登录句柄 */ - public static void ptz(Integer ptzId, String name, Integer cameraId) { + public void ptz(Integer ptzId, String name, Integer cameraId) { int dwzCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_POINT_SET_CONTROL; - Boolean ok = JoywareLoginModule.netsdk.CLIENT_DHPTZControlEx2(HikLoginModule.CameraConnMap.getConnId(cameraId), 0, dwzCommand, 0, ptzId, 0, 0, ToolKits.GetGBKStringToPointer(name)); + Boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx2(CameraConnMap.getConnId(cameraId), 0, dwzCommand, 0, ptzId, 0, 0, ToolKits.GetGBKStringToPointer(name)); + if (!ok) { + log.error("ptz error :{},cameraId:{}", ToolKits.getErrorCodePrint(),cameraId); + } Assert.isTrue(ok, "设置失败"); } @@ -288,11 +289,11 @@ public class JoywarePtzControlModule { * @param ptzId * @param cameraId */ - public static void toPtz(Integer ptzId, Integer cameraId) { + public void toPtz(Integer ptzId, Integer cameraId) { int dwPTZCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_POINT_MOVE_CONTROL; - Boolean ok = JoywareLoginModule.netsdk.CLIENT_DHPTZControlEx2(HikLoginModule.CameraConnMap.getConnId(cameraId), 0, dwPTZCommand, 0, ptzId, 0, 0, null); + Boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx2(CameraConnMap.getConnId(cameraId), 0, dwPTZCommand, 0, ptzId, 0, 0, null); if (!ok) { - log.error("转至预置点 失败 cameraId:{},ptzId:{},error:{}", cameraId, ptzId,ToolKits.getErrorCodePrint()); + log.error("toPtz error, cameraId:{},ptzId:{},errorCode:{}", cameraId, ptzId,ToolKits.getErrorCodePrint()); } } @@ -301,7 +302,7 @@ public class JoywarePtzControlModule { * * @param cameraId */ - public static void toPtzSlow(Integer cameraId,Integer x) { + public void toPtzSlow(Integer cameraId,Integer x) { int dwPTZCommand = NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_MOVE_ABSOLUTELY; NetSDKLib.PTZ_CONTROL_ABSOLUTELY absolutely = new NetSDKLib.PTZ_CONTROL_ABSOLUTELY(); @@ -311,7 +312,7 @@ public class JoywarePtzControlModule { absolutely.stuSpeed.fPositionY = 0.2f; absolutely.write(); //absolutely.stuSpeed.fZoom = 0.5f; - Boolean ok = JoywareLoginModule.netsdk.CLIENT_DHPTZControlEx2(HikLoginModule.CameraConnMap.getConnId(cameraId), 0, dwPTZCommand, + Boolean ok = JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx2(CameraConnMap.getConnId(cameraId), 0, dwPTZCommand, 0, 0, 0, 0, absolutely.getPointer()); if (!ok) { @@ -323,7 +324,7 @@ public class JoywarePtzControlModule { * 旋转360度 * @param cameraId */ - public static void turn360C8(Integer cameraId,Integer ptzId){ + public void turn360C8(Integer cameraId,Integer ptzId){ Thread thread = new Thread(new Runnable() { @Override public void run() { @@ -333,7 +334,7 @@ public class JoywarePtzControlModule { ptzLocationInfo.write(); System.out.println("size:"+ptzLocationInfo.size()); - boolean bRet = JoywareLoginModule.netsdk.CLIENT_QueryDevState(HikLoginModule.CameraConnMap.getConnId(cameraId), nType, ptzLocationInfo.getPointer(), ptzLocationInfo.size(), intRetLen, 3000); + boolean bRet = JoywareLoginModuleImpl.netsdk.CLIENT_QueryDevState(CameraConnMap.getConnId(cameraId), nType, ptzLocationInfo.getPointer(), ptzLocationInfo.size(), intRetLen, 3000); ptzLocationInfo.read(); if (bRet) { diff --git a/web/src/main/java/com/zhehekeji/web/lib/JoywareLoginModule.java b/web/src/main/java/com/zhehekeji/web/lib/joyware/JoywareLoginModuleImpl.java similarity index 66% rename from web/src/main/java/com/zhehekeji/web/lib/JoywareLoginModule.java rename to web/src/main/java/com/zhehekeji/web/lib/joyware/JoywareLoginModuleImpl.java index d5e49d7..b498051 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/JoywareLoginModule.java +++ b/web/src/main/java/com/zhehekeji/web/lib/joyware/JoywareLoginModuleImpl.java @@ -1,7 +1,6 @@ -package com.zhehekeji.web.lib; +package com.zhehekeji.web.lib.joyware; -import com.zhehekeji.common.util.SpringContextUtil; -import com.zhehekeji.web.lib.joyware.*; +import com.zhehekeji.web.lib.CameraControlLoginModule; import com.zhehekeji.web.lib.joyware.NetSDKLib.LLong; import com.zhehekeji.web.lib.joyware.NetSDKLib.NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY; import com.zhehekeji.web.lib.joyware.NetSDKLib.NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY; @@ -10,7 +9,7 @@ import com.zhehekeji.web.lib.joyware.NetSDKLib.NET_OUT_LOGIN_WITH_HIGHLEVEL_SECU * 登陆接口实现 * 主要有 :初始化、登陆、登出功能 */ -public class JoywareLoginModule { +public class JoywareLoginModuleImpl implements CameraControlLoginModule { public static NetSDKLib netsdk = NetSDKLib.NETSDK_INSTANCE; public static NetSDKLib configsdk = NetSDKLib.CONFIG_INSTANCE; @@ -22,12 +21,11 @@ public class JoywareLoginModule { private static CallBack.HaveReConnect haveReConnect = new CallBack.HaveReConnect(); - // 登陆句柄 - public static LLong m_hLoginHandle = new LLong(0); - private static boolean bInit = false; private static boolean bLogopen = false; + private static CaptureReceiveCB captureReceiveCB = new CaptureReceiveCB(); + /** * \if ENGLISH_LANG * Init @@ -35,7 +33,7 @@ public class JoywareLoginModule { * 初始化 * \endif */ - public static boolean init(NetSDKLib.fDisConnect disConnect, NetSDKLib.fHaveReConnect haveReConnect) { + public boolean init(NetSDKLib.fDisConnect disConnect, NetSDKLib.fHaveReConnect haveReConnect) { bInit = netsdk.CLIENT_Init(disConnect, null); if(!bInit) { System.out.println("Initialize SDK failed"); @@ -57,9 +55,8 @@ public class JoywareLoginModule { netParam.nConnectTime = 10000; // 登录时尝试建立链接的超时时间 netParam.nGetConnInfoTime = 3000; // 设置子连接的超时时间 netsdk.CLIENT_SetNetworkParam(netParam); - CaptureReceiveCB captureReceiveCB = SpringContextUtil.getBean(CaptureReceiveCB.class); - netsdk.CLIENT_SetSnapRevCallBack(captureReceiveCB, null); - + //todo + netsdk.CLIENT_SetSnapRevCallBack(captureReceiveCB,null); return true; } @@ -87,7 +84,7 @@ public class JoywareLoginModule { * 登录设备 * \endif */ - public static LLong login(String m_strIp, int m_nPort, String m_strUser, String m_strPassword,Integer id) { + public LLong login(String m_strIp, int m_nPort, String m_strUser, String m_strPassword) { //IntByReference nError = new IntByReference(0); //入参 init(disConnectCallBack,haveReConnect); @@ -101,48 +98,10 @@ public class JoywareLoginModule { pstOutParam.stuDeviceInfo=m_stDeviceInfo; //m_hLoginHandle = netsdk.CLIENT_LoginEx2(m_strIp, m_nPort, m_strUser, m_strPassword, 0, null, m_stDeviceInfo, nError); LLong m_hLoginHandle=netsdk.CLIENT_LoginWithHighLevelSecurity(pstInParam, pstOutParam); - attachPTZStatusProc(); + //attachPTZStatusProc(); return m_hLoginHandle; } - /** - * 订阅云台元数据接口 - */ - public static void attachPTZStatusProc() { - NET_IN_PTZ_STATUS_PROC pIn = new NET_IN_PTZ_STATUS_PROC(); - pIn.nChannel = 0; - pIn.cbPTZStatusProc = CallBack.CBPTZStatusProcCallBack.getInstance(); - pIn.write(); - NET_OUT_PTZ_STATUS_PROC pOut = new NET_OUT_PTZ_STATUS_PROC(); - pOut.write(); - LLong AttachHandle = netsdk.CLIENT_AttachPTZStatusProc(m_hLoginHandle, pIn.getPointer(), pOut.getPointer(),0); - if(AttachHandle.longValue() == 0) { - System.out.printf("attachPTZStatusProc fail, ErrCode=\n"); - }else { - System.out.println("attachPTZStatusProc success"); - } - } - - /** - * \if ENGLISH_LANG - * Logout Device - * \else - * 登出设备 - * \endif - */ - public static boolean logout() { - if(m_hLoginHandle.longValue() == 0) { - return false; - } - - boolean bRet = netsdk.CLIENT_Logout(m_hLoginHandle); - if(bRet) { - m_hLoginHandle.setValue(0); - } - - return bRet; - } - } diff --git a/web/src/main/java/com/zhehekeji/web/lib/joyware/NET_IN_PTZ_STATUS_PROC.java b/web/src/main/java/com/zhehekeji/web/lib/joyware/NET_IN_PTZ_STATUS_PROC.java index 0a38f62..783f5f6 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/joyware/NET_IN_PTZ_STATUS_PROC.java +++ b/web/src/main/java/com/zhehekeji/web/lib/joyware/NET_IN_PTZ_STATUS_PROC.java @@ -1,10 +1,5 @@ package com.zhehekeji.web.lib.joyware; -import com.sun.jna.Pointer; -import com.zhehekeji.web.lib.HikLoginModule; -import com.zhehekeji.web.lib.OrderRealtime; -import lombok.extern.slf4j.Slf4j; - /** * @author 251823 * @description 订阅云台元数据接口输入参数 diff --git a/web/src/main/java/com/zhehekeji/web/lib/joyware/StopDownLoadThread.java b/web/src/main/java/com/zhehekeji/web/lib/joyware/StopDownLoadThread.java index b6ce306..e190508 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/joyware/StopDownLoadThread.java +++ b/web/src/main/java/com/zhehekeji/web/lib/joyware/StopDownLoadThread.java @@ -1,6 +1,5 @@ package com.zhehekeji.web.lib.joyware; -import com.zhehekeji.web.lib.JoywareLoginModule; import lombok.extern.slf4j.Slf4j; @Slf4j @@ -15,6 +14,6 @@ public class StopDownLoadThread extends Thread { @Override public void run() { log.info("stop download:{}",lPlayHandle.longValue()); - JoywareLoginModule.netsdk.CLIENT_StopDownload(lPlayHandle); + JoywareLoginModuleImpl.netsdk.CLIENT_StopDownload(lPlayHandle); } } diff --git a/web/src/main/java/com/zhehekeji/web/lib/joyware/ToolKits.java b/web/src/main/java/com/zhehekeji/web/lib/joyware/ToolKits.java index 006f507..7a9339b 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/joyware/ToolKits.java +++ b/web/src/main/java/com/zhehekeji/web/lib/joyware/ToolKits.java @@ -1,7 +1,5 @@ package com.zhehekeji.web.lib.joyware; -import com.zhehekeji.web.lib.JoywareLoginModule; -import com.zhehekeji.web.lib.joyware.common.ErrorCode; import com.zhehekeji.web.lib.joyware.NetSDKLib.LLong; import com.sun.jna.Memory; import com.sun.jna.Pointer; @@ -9,10 +7,7 @@ import com.sun.jna.Structure; import com.sun.jna.ptr.IntByReference; import javax.swing.*; -import javax.swing.filechooser.FileFilter; import java.awt.event.ActionEvent; -import java.awt.event.KeyEvent; -import java.awt.event.KeyListener; import java.io.*; import java.text.SimpleDateFormat; @@ -36,34 +31,6 @@ public class ToolKits { pJavaStu.read(); } - public static void GetPointerDataToStructArr(Pointer pNativeData, Structure[]pJavaStuArr) { - long offset = 0; - for (int i=0; i 0) { - byte[] buffer = new byte[length]; - pointer.read(0, buffer, 0, length); - try { - str = new String(buffer, "GBK").trim(); - } catch (UnsupportedEncodingException e) { - return str; - } - } - return str; - } // 获取当前时间 public static String getDate() { @@ -166,30 +104,6 @@ public class ToolKits { return date; } - - // 限制JTextField 长度,以及内容 - public static void limitTextFieldLength(final JTextField jTextField, final int size) { - jTextField.addKeyListener(new KeyListener() { - - @Override - public void keyTyped(KeyEvent e) { - String number = "0123456789" + (char)8; - if(number.indexOf(e.getKeyChar()) < 0 || jTextField.getText().trim().length() >= size) { - e.consume(); - return; - } - } - - @Override - public void keyReleased(KeyEvent e) { - } - - @Override - public void keyPressed(KeyEvent e) { - } - }); - } - // 获取当前窗口 public static JFrame getFrame(ActionEvent e) { JButton btn = (JButton)e.getSource(); @@ -223,172 +137,14 @@ public class ToolKits { return osName; } - /** - * 读取图片大小 - * @param filePath 图片路径 - * @return - */ - public static long GetFileSize(String filePath) { - File f = new File(filePath); - if (f.exists() && f.isFile()) { - return f.length(); - } - else - { - return 0; - } - } - - /** - * 读取图片数据 - * @param file 图片路径 - * @param memory 图片数据缓存 - * @return - * @throws IOException - */ - public static boolean ReadAllFileToMemory(String file, Memory memory) throws IOException { - if (memory != Memory.NULL) - { - long fileLen = GetFileSize(file); - if (fileLen <= 0) - { - return false; - } - FileInputStream in =null; - try { - File infile = new File(file); - if (infile.canRead()) - { - in = new FileInputStream(infile); - int buffLen = 1024; - byte[] buffer = new byte[buffLen]; - long currFileLen = 0; - int readLen = 0; - while (currFileLen < fileLen) - { - readLen = in.read(buffer); - memory.write(currFileLen, buffer, 0, readLen); - currFileLen += readLen; - } - return true; - } - else - { - System.err.println("Failed to open file %s for read!!!\n"); - return false; - } - }catch (Exception e) - { - System.err.println("Failed to open file %s for read!!!\n"); - e.printStackTrace(); - }finally{ - if(in!=null){ - in.close(); - } - } - } - - return false; - } - static class JPGFilter extends FileFilter { - public boolean accept(File f) { - if(f.getName().toLowerCase().endsWith(".JPG") - || f.getName().toLowerCase().endsWith(".jpg") - || f.isDirectory()) { - return true; - } - return false; - } - - @Override - public String getDescription() { - return "*.jpg; *.JPG"; - } - } - - - - /** - * 读取图片 - * @return 图片缓存 - * @throws IOException - */ - public static Memory readPictureFile(String picPath) throws IOException { - int nPicBufLen = 0; - Memory memory = null; - - /* - * 读取本地图片大小 - */ - nPicBufLen = (int)ToolKits.GetFileSize(picPath); - - // 读取文件大小失败 - if (nPicBufLen <= 0) { - System.err.println("读取图片大小失败,请重新选择!"); - return null; - } - - /* - * 读取图片缓存 - */ - memory = new Memory(nPicBufLen); // 申请缓存 - memory.clear(); - - if (!ToolKits.ReadAllFileToMemory(picPath, memory)) { - System.err.println("读取图片数据,请重新选择!"); - return null; - } - - return memory; - } - - /** - * 登录设备设备错误状态, 用于界面显示 - */ - public static String getErrorCodeShow() { - return ErrorCode.getErrorCode(JoywareLoginModule.netsdk.CLIENT_GetLastError()); - } /** * 获取接口错误码和错误信息,用于打印 * @return */ public static String getErrorCodePrint() { - return "\n{error code: (0x80000000|" + (JoywareLoginModule.netsdk.CLIENT_GetLastError() & 0x7fffffff) +").参考 NetSDKLib.java }" - + " - {error info:" + ErrorCode.getErrorCode(JoywareLoginModule.netsdk.CLIENT_GetLastError()) + "}\n"; - } - - /** - * 获取单个配置 - * @param hLoginHandle 登陆句柄 - * @param nChn 通道号,-1 表示全通道 - * @param strCmd 配置名称 - * @param cmdObject 配置对应的结构体对象 - * @return 成功返回 true - */ - public static boolean GetDevConfig(LLong hLoginHandle, int nChn, String strCmd, Structure cmdObject) { - boolean result = false; - IntByReference error = new IntByReference(0); - int nBufferLen = 2*1024*1024; - byte[] strBuffer = new byte[nBufferLen]; - - if(netsdkapi.CLIENT_GetNewDevConfig( hLoginHandle, strCmd , nChn, strBuffer, nBufferLen,error,3000)) { - cmdObject.write(); - if (configapi.CLIENT_ParseData(strCmd, strBuffer, cmdObject.getPointer(), - cmdObject.size(), null)) { - cmdObject.read(); - result = true; - } else { - System.err.println("Parse " + strCmd + " Config Failed!" + ToolKits.getErrorCodePrint()); - result = false; - } - } else { - System.err.printf("Get %s Config Failed!Last Error = %s\n" , strCmd , getErrorCodePrint()); - result = false; - } - - return result; + return "\n{error code: (0x80000000|" + (JoywareLoginModuleImpl.netsdk.CLIENT_GetLastError() & 0x7fffffff) +").参考 ErrorCode.java"; } /** @@ -439,30 +195,4 @@ public class ToolKits { } return pointer; } - - /** - * 字符串拷贝,用于先获取,再设置(src → dst) - * @param src - * @param dst - */ - public static void StringToByteArray(String src, byte[] dst) { - for(int i = 0; i < dst.length; i++) { - dst[i] = 0; - } - - System.arraycopy(src.getBytes(), 0, dst, 0, src.getBytes().length); - } - - /** - * 数组拷贝, 用于先获取,再设置(src → dst) - * @param - * @param dst - */ - public static void ByteArrayToByteArray(byte[] src, byte[] dst) { - for(int i = 0; i < dst.length; i++) { - dst[i] = 0; - } - - System.arraycopy(src, 0, dst, 0, src.length); - } } diff --git a/web/src/main/java/com/zhehekeji/web/lib/joyware/common/SavePath.java b/web/src/main/java/com/zhehekeji/web/lib/joyware/common/SavePath.java deleted file mode 100644 index 12f5bb6..0000000 --- a/web/src/main/java/com/zhehekeji/web/lib/joyware/common/SavePath.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.zhehekeji.web.lib.joyware.common; - -import com.zhehekeji.web.lib.joyware.ToolKits; - -import java.io.File; - -public class SavePath { - private SavePath() {} - - private static class SavePathHolder { - private static SavePath instance = new SavePath(); - } - - public static SavePath getSavePath() { - return SavePathHolder.instance; - } - - String s_captureSavePath = "./Capture/" + ToolKits.getDay() + "/"; // 抓拍图片保存路径 - String s_imageSavePath = "./Image/" + ToolKits.getDay() + "/"; // 图片保存路径 - String s_recordFileSavePath = "./RecordFile/" + ToolKits.getDay() + "/"; // 录像保存路径 - - /* - * 设置抓图保存路径 - */ - public String getSaveCapturePath() { - File path1 = new File("./Capture/"); - if (!path1.exists()) { - path1.mkdir(); - } - - File path2 = new File(s_captureSavePath); - if (!path2.exists()) { - path2.mkdir(); - } - - String strFileName = path2.getAbsolutePath() + "/" + ToolKits.getDate() + ".jpg"; - - return strFileName; - } - - /* - * 设置智能交通图片保存路径 - */ - public String getSaveTrafficImagePath() { - File path1 = new File("./Image/"); - if (!path1.exists()) { - path1.mkdir(); - } - - File path = new File(s_imageSavePath); - if (!path.exists()) { - path.mkdir(); - } - - return s_imageSavePath; - } - - - /* - * 设置录像保存路径 - */ - public String getSaveRecordFilePath() { - File path1 = new File("./RecordFile/"); - if (!path1.exists()) { - path1.mkdir(); - } - - File path2 = new File(s_recordFileSavePath); - if (!path2.exists()) { - path2.mkdir(); - } - String SavedFileName = s_recordFileSavePath + ToolKits.getDate() + ".dav"; // 默认保存路径 - return SavedFileName; - } - -} 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 5cb42c6..7701cfd 100644 --- a/web/src/main/java/com/zhehekeji/web/service/CameraService.java +++ b/web/src/main/java/com/zhehekeji/web/service/CameraService.java @@ -8,8 +8,7 @@ import com.zhehekeji.web.config.ConfigProperties; import com.zhehekeji.web.entity.Camera; import com.zhehekeji.web.entity.CameraIO; import com.zhehekeji.web.entity.CameraIOConfig; -import com.zhehekeji.web.lib.HikPtzControlModule; -import com.zhehekeji.web.lib.JoywarePtzControlModule; +import com.zhehekeji.web.lib.CameraControlModule; import com.zhehekeji.web.mapper.CameraIOConfigMapper; import com.zhehekeji.web.mapper.CameraIOMapper; import com.zhehekeji.web.mapper.CameraMapper; @@ -18,9 +17,7 @@ import com.zhehekeji.web.pojo.camera.CameraConfigSearchReq; import com.zhehekeji.web.pojo.camera.IOImport; import com.zhehekeji.web.pojo.street.StreetSearch; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Value; import org.springframework.cache.annotation.CacheEvict; -import org.springframework.cache.annotation.CachePut; import org.springframework.cache.annotation.Cacheable; import org.springframework.dao.DuplicateKeyException; import org.springframework.stereotype.Service; @@ -47,6 +44,12 @@ public class CameraService { @Resource private ConfigProperties configProperties; + private CameraControlModule cameraControlModule; + + public void setCameraControlModule(CameraControlModule cameraControlModule){ + this.cameraControlModule = cameraControlModule; + } + public Integer add(Camera camera) { camera.setUser(configProperties.getCameraConfig().getCameraUser()); camera.setPassword(configProperties.getCameraConfig().getCameraPassword()); @@ -186,11 +189,7 @@ public class CameraService { conver(cameraIO,type); ioMapper.updateById(cameraIO); } - if(configProperties.getCameraConfig().getCameraType() == ConfigProperties.HIK_CAMERA){ - HikPtzControlModule.ptz(ptzId,cameraIO.getName(),cameraId); - }else if(configProperties.getCameraConfig().getCameraType() == ConfigProperties.JOYWARE_CAMERA){ - JoywarePtzControlModule.ptz(ptzId, cameraIO.getName(), cameraId); - } + cameraControlModule.ptz(ptzId,cameraIO.getName(),cameraId); log.info("设置 预置点 球机ID:{},预置点ID:{}", cameraId, ptzId); return cameraIO.getId(); } diff --git a/web/src/main/java/com/zhehekeji/web/service/CategoryService.java b/web/src/main/java/com/zhehekeji/web/service/CategoryService.java index 6c13cd4..4c3b61b 100644 --- a/web/src/main/java/com/zhehekeji/web/service/CategoryService.java +++ b/web/src/main/java/com/zhehekeji/web/service/CategoryService.java @@ -113,7 +113,7 @@ public class CategoryService { } XSSFCell cell1 = row.getCell(1); if(cell1 != null){ - String name = cell.getStringCellValue(); + String name = cell1.getStringCellValue(); category.setName(name); } Category old = categoryMapper.getByCode(category.getCode()); diff --git a/web/src/main/java/com/zhehekeji/web/service/InitService.java b/web/src/main/java/com/zhehekeji/web/service/InitService.java index 3e8eee2..fbe98b5 100644 --- a/web/src/main/java/com/zhehekeji/web/service/InitService.java +++ b/web/src/main/java/com/zhehekeji/web/service/InitService.java @@ -4,6 +4,10 @@ import com.zhehekeji.web.config.ConfigProperties; import com.zhehekeji.web.entity.Camera; import com.zhehekeji.web.entity.Street; import com.zhehekeji.web.lib.*; +import com.zhehekeji.web.lib.hik.HikCameraControlModuleImpl; +import com.zhehekeji.web.lib.hik.HikLoginModuleImpl; +import com.zhehekeji.web.lib.joyware.JoywareCameraControlModuleImpl; +import com.zhehekeji.web.lib.joyware.JoywareLoginModuleImpl; import com.zhehekeji.web.lib.joyware.NetSDKLib; import com.zhehekeji.web.mapper.CameraMapper; import com.zhehekeji.web.mapper.StreetMapper; @@ -12,6 +16,7 @@ import com.zhehekeji.web.service.robotic.NettyClient; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; +import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; import javax.annotation.Resource; @@ -36,11 +41,36 @@ public class InitService implements ApplicationRunner { @Resource private KsecNettyClient ksecNettyClient; - public static Integer cameraNum; - @Resource private ConfigProperties configProperties; + @Resource + private PlcService plcService; + @Resource + private CameraService cameraService; + + @Bean + public CameraControlLoginModule cameraControlLoginModule(){ + if(configProperties.getCameraConfig().getCameraType() == ConfigProperties.JOYWARE_CAMERA){ + return new JoywareLoginModuleImpl(); + }else { + return new HikLoginModuleImpl(); + } + } + + @Bean + public CameraControlModule cameraControlModule(ConfigProperties configProperties){ + CameraControlModule cameraControlModule = null; + if(configProperties.getCameraConfig().getCameraType() == ConfigProperties.JOYWARE_CAMERA){ + cameraControlModule = new JoywareCameraControlModuleImpl(); + }else { + cameraControlModule = new HikCameraControlModuleImpl(); + } + plcService.setCameraControlModule(cameraControlModule); + cameraService.setCameraControlModule(cameraControlModule); + return cameraControlModule; + } + @Override public void run(ApplicationArguments args) throws Exception { //球机登录 @@ -53,17 +83,12 @@ public class InitService implements ApplicationRunner { List streets = streetMapper.selectByMap(new HashMap<>(0)); streets.forEach(street -> { - //随便找一个巷道,只要配置了一个球机,就是单个球机的项目 - if((street.getCamera1Id() != null && street.getCamera2Id() == null)||(street.getCamera2Id() != null && street.getCamera1Id() == null)){ - cameraNum = 1; - } StreetConn.init(street.getId(),street.getPlcId()); try { nettyClient.createClient(street); }catch (Exception e){ log.error("streetId:{}:初始plc连接失败,url:{},port:{}",street.getId(),street.getPlcIp(),street.getPlcPort()); } - }); }else if(configProperties.getServerMode() == 1){ log.info("KESC JSON MODE"); @@ -97,24 +122,9 @@ public class InitService implements ApplicationRunner { @Override public void run() { cameras.forEach(camera -> { - if(cameraType == 0){ - NetSDKLib.LLong lLong = JoywareLoginModule.login(camera.getIp(),camera.getPort(),camera.getUser(),camera.getPassword(),camera.getId()); - if(lLong.longValue() <= 0){ - log.error("初始相机 登录失败:cameraId{}",camera.getId()); - }else { - HikLoginModule.CameraConnMap.conn(camera.getId(),lLong); - log.info("初始相机登录成功 cameraId:{},loginId:{}",camera.getId(),lLong.longValue()); - } - }else if(cameraType == 1){ - int userId = HikLoginModule.login(camera.getIp(),camera.getPort(),camera.getUser(),camera.getPassword()); - if(userId < 0){ - log.error("初始相机 登录失败:cameraId{}",camera.getId()); - }else { - NetSDKLib.LLong lLong = new NetSDKLib.LLong(userId); - HikLoginModule.CameraConnMap.conn(camera.getId(),lLong); - log.info("初始相机登录成功 cameraId:{},loginId:{}",camera.getId(),lLong.longValue()); - } - } + NetSDKLib.LLong lLong = cameraControlLoginModule().login(camera.getIp(),camera.getPort(),camera.getUser(),camera.getPassword()); + System.out.println(lLong.longValue()); + CameraConnMap.conn(camera.getId(),lLong); }); } } diff --git a/web/src/main/java/com/zhehekeji/web/service/OrderService.java b/web/src/main/java/com/zhehekeji/web/service/OrderService.java index bb8f07f..130fdf5 100644 --- a/web/src/main/java/com/zhehekeji/web/service/OrderService.java +++ b/web/src/main/java/com/zhehekeji/web/service/OrderService.java @@ -2,24 +2,20 @@ package com.zhehekeji.web.service; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; -import com.zhehekeji.common.util.PathUtil; import com.zhehekeji.web.config.ConfigProperties; import com.zhehekeji.web.entity.Order; import com.zhehekeji.web.entity.Street; -import com.zhehekeji.web.lib.JoywarePtzControlModule; import com.zhehekeji.web.mapper.OrderMapper; import com.zhehekeji.web.mapper.StreetMapper; import com.zhehekeji.web.pojo.OrderSaveReq; import com.zhehekeji.web.pojo.OrderSearch; import com.zhehekeji.web.pojo.OrderVO; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.time.Duration; -import java.time.LocalDateTime; import java.util.HashMap; import java.util.List; import java.util.Map; diff --git a/web/src/main/java/com/zhehekeji/web/service/PlcCmdInfo.java b/web/src/main/java/com/zhehekeji/web/service/PlcCmdInfo.java index 3ca5f2d..76a183f 100644 --- a/web/src/main/java/com/zhehekeji/web/service/PlcCmdInfo.java +++ b/web/src/main/java/com/zhehekeji/web/service/PlcCmdInfo.java @@ -69,6 +69,16 @@ public class PlcCmdInfo { this.column2 = column2; this.row2 = row2; this.plcId = plcId; - this.orderNum = plcId+"_"+taskId; + this.orderNum = plcId + "_" + taskId; + } + + public String getLeftRightStr(int times) { + if (times <= 2) { + return leftRight1 == 1 ? "L" : "R"; + } else if(times <= 4) { + return leftRight2 == 1 ? "L" : "R"; + }else { + return ""; + } } } diff --git a/web/src/main/java/com/zhehekeji/web/service/PlcService.java b/web/src/main/java/com/zhehekeji/web/service/PlcService.java index ed4709d..b231af5 100644 --- a/web/src/main/java/com/zhehekeji/web/service/PlcService.java +++ b/web/src/main/java/com/zhehekeji/web/service/PlcService.java @@ -10,6 +10,7 @@ import com.zhehekeji.web.pojo.OrderVO; import com.zhehekeji.web.pojo.stock.StockStatus; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; +import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; @@ -51,15 +52,21 @@ public class PlcService { @Resource private CameraService cameraService; + private CameraControlModule cameraControlModule; + + public void setCameraControlModule(CameraControlModule cameraControlModule){ + this.cameraControlModule = cameraControlModule; + } + /** * 原点位 */ private static String originalPoint = "C6"; public Integer plcStatus() { - List streets = streetMapper.selectByMap(new HashMap<>(0)); + Integer count = streetMapper.selectCount(new QueryWrapper<>()); List connIds = StreetConn.connList(); - return (streets.size() - connIds.size()); + return (count - connIds.size()); } /** @@ -109,13 +116,17 @@ public class PlcService { Order update = new Order(); update.setId(order.getId()); update.setEndTime(endTime); + update.setInOut2(plcCmdInfo.getInOut2()); + update.setLeftRight2(plcCmdInfo.getLeftRight2()); + update.setColumn2(plcCmdInfo.getColumn2()); + update.setRow2(plcCmdInfo.getRow2()); if (street.getCamera1Id() != null) { String path = cameraVideo(street.getCamera1Id(),order.getStartTime(),endTime); - order.setVideoPath1(path); + update.setVideoPath1(path); } if (street.getCamera2Id() != null) { String path = cameraVideo(street.getCamera2Id(),order.getStartTime(),endTime); - order.setVideoPath2(path); + update.setVideoPath2(path); } orderMapper.updateById(update); @@ -137,13 +148,9 @@ public class PlcService { public String cameraVideo(Integer cameraId, LocalDateTime startTime, LocalDateTime endTime) { - String path = PathUtil.createFileName("mp4"); + String path = PathUtil.createFileName("mp4",cameraId); String realPath = configProperties.getSavePath().getMp4Path() + path; - if (configProperties.getCameraConfig().getCameraType() == ConfigProperties.HIK_CAMERA) { - HikPtzControlModule.downloadMp4(cameraId, realPath, startTime, endTime); - } else if (configProperties.getCameraConfig().getCameraType() == ConfigProperties.JOYWARE_CAMERA) { - JoywarePtzControlModule.downloadMp4(cameraId, realPath, startTime, endTime); - } + cameraControlModule.downloadMp4(cameraId,realPath,startTime,endTime); return path; } @@ -210,7 +217,7 @@ public class PlcService { */ public Boolean doNeedCaptureByCode(String code) { String picCmd = code.substring(0, 2); - if (picCmd.equals("C2") || picCmd.equals("C4")) { + if (picCmd.equals("C2") || picCmd.equals("C4") || picCmd.equals("C1") || picCmd.equals("C3")) { return true; } return false; @@ -222,13 +229,9 @@ public class PlcService { * @Return pic address */ public String cameraCapture(Integer cameraId) { - String path = PathUtil.createFileName("jpg"); + String path = PathUtil.createFileName("jpg",cameraId); String realPath = configProperties.getSavePath().getMediaPath() + path; - if (configProperties.getCameraConfig().getCameraType() == ConfigProperties.JOYWARE_CAMERA) { - JoywarePtzControlModule.pic(cameraId, 0, realPath); - } else if (configProperties.getCameraConfig().getCameraType() == ConfigProperties.HIK_CAMERA) { - HikPtzControlModule.pic(cameraId, 0, realPath); - } + cameraControlModule.pic(cameraId,0,realPath); return path; } @@ -242,11 +245,7 @@ public class PlcService { Integer ptzId = cameraService.getPtzIdByCodeAndCameraId(code, cameraId); if (ptzId != null && ptzId >= 0) { log.info("gyrate camera by code, code:{},cameraId:{},ptId:{}", code, cameraId, ptzId); - if (configProperties.getCameraConfig().getCameraType() == ConfigProperties.HIK_CAMERA) { - HikPtzControlModule.toPtz(ptzId, cameraId); - } else if (configProperties.getCameraConfig().getCameraType() == ConfigProperties.JOYWARE_CAMERA) { - JoywarePtzControlModule.toPtz(ptzId, cameraId); - } + cameraControlModule.toPtz(ptzId,cameraId); } else { log.error("ptz not found ,code:{},cameraId:{}", code, cameraId); } @@ -345,30 +344,27 @@ public class PlcService { synchronized (orderInfo.getOrderNum().intern()) { Order order = orderMapper.getOneByOrderNum(orderInfo.getOrderNum()); if (order != null) { - //update picPath in stock - Stock stock = stockMapper.getByShelveIdAndRowColumn(orderInfo.getShelveId(), orderInfo.getRow(), orderInfo.getColumn()); - if (stock == null) { - stock = new Stock(); - stock.setShelveId(orderInfo.getShelveId()); - stock.setColumn(orderInfo.getColumn()); - stock.setRow(orderInfo.getRow()); - stock.setStatus(0); - //if the stock is null,take over path only - stock.setOveroperationPic(path); - stock.setOrderNum(order.getOrderNum()); - stockMapper.insert(stock); - } else { - if (orderInfo.getIsPre()) { - stock.setPreoperationPic(path); + //update picPath in stock if code is C2/C4 + if(orderInfo.getCode().startsWith("C2") || orderInfo.getCode().startsWith("C4")){ + Stock stock = stockMapper.getByShelveIdAndRowColumn(orderInfo.getShelveId(), orderInfo.getRow(), orderInfo.getColumn()); + if (stock == null) { + stock = new Stock(); + stock.setShelveId(orderInfo.getShelveId()); + stock.setColumn(orderInfo.getColumn()); + stock.setRow(orderInfo.getRow()); + stock.setStatus(0); + //if the stock is null,take over path only + stock.setOveroperationPic(path); + stock.setOrderNum(order.getOrderNum()); + stockMapper.insert(stock); } else { + //take the previous picture path the lasted over picture path + //take the lasted picture path the new one + stock.setPreoperationPic(stock.getPreoperationPic()); stock.setOveroperationPic(path); + stock.setOrderNum(order.getOrderNum()); + stockMapper.updateById(stock); } - //take the previous picture path the lasted over picture path - //take the lasted picture path the new one - stock.setPreoperationPic(stock.getPreoperationPic()); - stock.setOveroperationPic(path); - stock.setOrderNum(order.getOrderNum()); - stockMapper.updateById(stock); } String pics = order.getPicPaths(); if (StringUtils.isEmpty(pics)) { @@ -389,35 +385,35 @@ public class PlcService { } - /** - * 执行动作 旋转360,然后执行C8动作 - * - * @param plcId - * @Param ptzId 旋转360之后,再转到这个预置点 - */ - public void turn360AndC8(String plcId) { - Street street = streetMapper.getStreetByPlcId(plcId); - if (street == null) { - return; - } - - if (street.getCamera1Id() != null) { - List ioConfigs = ioMapper.selectList(new QueryWrapper().eq("code", "C8").eq("camera_id", street.getCamera1Id())); - Integer ptzId = null; - if (ioConfigs.size() > 0) { - ptzId = ioConfigs.get(0).getPtzId(); - } - JoywarePtzControlModule.turn360C8(street.getCamera1Id(), ptzId); - } - if (street.getCamera2Id() != null) { - List ioConfigs = ioMapper.selectList(new QueryWrapper().eq("code", "C8").eq("camera_id", street.getCamera2Id())); - Integer ptzId = null; - if (ioConfigs.size() > 0) { - ptzId = ioConfigs.get(0).getPtzId(); - } - JoywarePtzControlModule.turn360C8(street.getCamera2Id(), ptzId); - } - } +// /** +// * 执行动作 旋转360,然后执行C8动作 +// * +// * @param plcId +// * @Param ptzId 旋转360之后,再转到这个预置点 +// */ +// public void turn360AndC8(String plcId) { +// Street street = streetMapper.getStreetByPlcId(plcId); +// if (street == null) { +// return; +// } +// +// if (street.getCamera1Id() != null) { +// List ioConfigs = ioMapper.selectList(new QueryWrapper().eq("code", "C8").eq("camera_id", street.getCamera1Id())); +// Integer ptzId = null; +// if (ioConfigs.size() > 0) { +// ptzId = ioConfigs.get(0).getPtzId(); +// } +// JoywarePtzControlModule.turn360C8(street.getCamera1Id(), ptzId); +// } +// if (street.getCamera2Id() != null) { +// List ioConfigs = ioMapper.selectList(new QueryWrapper().eq("code", "C8").eq("camera_id", street.getCamera2Id())); +// Integer ptzId = null; +// if (ioConfigs.size() > 0) { +// ptzId = ioConfigs.get(0).getPtzId(); +// } +// JoywarePtzControlModule.turn360C8(street.getCamera2Id(), ptzId); +// } +// } /** * 从货架 行列找到 前后前后两个照片 diff --git a/web/src/main/java/com/zhehekeji/web/service/StreetService.java b/web/src/main/java/com/zhehekeji/web/service/StreetService.java index e329e25..c06679a 100644 --- a/web/src/main/java/com/zhehekeji/web/service/StreetService.java +++ b/web/src/main/java/com/zhehekeji/web/service/StreetService.java @@ -76,7 +76,11 @@ public class StreetService { return street; } - @CacheEvict(value = "street",key = "#id") + + @Caching(evict = { + @CacheEvict(value = "street",key = "#id"), + @CacheEvict(value = "getStreetCount") + }) public void del(Integer id) { Street street = streetMapper.selectById(id); if(street != null){ diff --git a/web/src/main/java/com/zhehekeji/web/service/ksec/KsecDecoder.java b/web/src/main/java/com/zhehekeji/web/service/ksec/KsecDecoder.java index c9dceaf..5f9d063 100644 --- a/web/src/main/java/com/zhehekeji/web/service/ksec/KsecDecoder.java +++ b/web/src/main/java/com/zhehekeji/web/service/ksec/KsecDecoder.java @@ -64,6 +64,7 @@ public class KsecDecoder extends DelimiterBasedFrameDecoder { if (code.equals("C1") || code.equals("C2") || code.equals("C3") || code.equals("C4")) { //执行动作,需要保存执行到第几步了 Integer times = GoodsActionTimes.put(plcCmdInfo.getOrderNum()); + code = code + "-" + plcCmdInfo.getLeftRightStr(times); //执行动作 plcService.action(plcCmdInfo, times, code); }else {