From 3b81cc67f8f57e89f30a446bf2a0bb61397a7afe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?LAPTOP-S9HJSOEB=5C=E6=98=8A=E5=A4=A9?= Date: Thu, 7 Aug 2025 16:56:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/CameraControlController.java | 3 +- .../web/controller/TestController.java | 4 +- .../java/com/zhehekeji/web/entity/Camera.java | 3 + .../com/zhehekeji/web/lib/CameraConnMap.java | 17 +- .../web/lib/CameraControlModule.java | 2 + .../lib/hik/HikCameraControlModuleImpl.java | 199 +++++++++++++++--- .../web/lib/hik/HikLoginModuleImpl.java | 2 +- .../JoywareCameraControlModuleImpl.java | 6 + .../com/zhehekeji/web/pojo/OrderSearch.java | 2 + .../zhehekeji/web/service/CameraService.java | 31 ++- .../web/service/CheckLogService.java | 4 +- .../com/zhehekeji/web/service/CronTab.java | 14 ++ .../zhehekeji/web/service/InitService.java | 3 +- web/src/main/resources/mapper/OrderMapper.xml | 5 +- 14 files changed, 244 insertions(+), 51 deletions(-) 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 1c2b270..be27588 100644 --- a/web/src/main/java/com/zhehekeji/web/controller/CameraControlController.java +++ b/web/src/main/java/com/zhehekeji/web/controller/CameraControlController.java @@ -6,7 +6,6 @@ import com.zhehekeji.core.util.Assert; import com.zhehekeji.web.config.ConfigProperties; import com.zhehekeji.web.entity.Camera; import com.zhehekeji.web.lib.*; -import com.zhehekeji.web.lib.hik.HCNetSDK; import com.zhehekeji.web.lib.joyware.NetSDKLib; import com.zhehekeji.web.mapper.CameraMapper; import com.zhehekeji.web.service.CameraService; @@ -323,7 +322,7 @@ public class CameraControlController { @ApiOperation(value = "录像") public Result MP4(@PathVariable Integer id) { checkLogin(id); - LocalDateTime localDateTime = LocalDateTime.of(2022,7,21,8,20); + LocalDateTime localDateTime = LocalDateTime.now().plusMinutes(3); cameraControlModule.downloadMp4(id,"E:\\work\\"+localDateTime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))+".mp4", localDateTime,localDateTime.plusMinutes(3)); return Result.success(); } diff --git a/web/src/main/java/com/zhehekeji/web/controller/TestController.java b/web/src/main/java/com/zhehekeji/web/controller/TestController.java index ba46e1e..5189acf 100644 --- a/web/src/main/java/com/zhehekeji/web/controller/TestController.java +++ b/web/src/main/java/com/zhehekeji/web/controller/TestController.java @@ -62,7 +62,7 @@ public class TestController { RFIDService rfidService; @ApiOperation("rfid") @GetMapping("/rfid") - public Result> rfid(@PathVariable String streetId){ + public Result> rfid(@RequestParam String streetId){ Street street = streetService.getStreetByPlcId(streetId); RFIDSocket rfidSocket = new RFIDSocket(street.getPlcIp(), 4001); @@ -79,7 +79,7 @@ public class TestController { @ApiOperation("rfidNew") @GetMapping("/rfidNew") - public Result> rfidNew(@PathVariable String streetId) { + public Result> rfidNew(@RequestParam String streetId) { Street street = streetService.getStreetByPlcId(streetId); if (street != null) { //rfid不分左右,rfid使用同一ip和端口,依靠传递字符调整方向 diff --git a/web/src/main/java/com/zhehekeji/web/entity/Camera.java b/web/src/main/java/com/zhehekeji/web/entity/Camera.java index e599dfc..518e99b 100644 --- a/web/src/main/java/com/zhehekeji/web/entity/Camera.java +++ b/web/src/main/java/com/zhehekeji/web/entity/Camera.java @@ -36,6 +36,9 @@ public class Camera { private Integer rtcServerPort; + private Integer channel; + private String recorderIp; + @ApiModelProperty(value = "预置点 增长值",hidden = true) private Integer ptzId; diff --git a/web/src/main/java/com/zhehekeji/web/lib/CameraConnMap.java b/web/src/main/java/com/zhehekeji/web/lib/CameraConnMap.java index ef03a71..ea04721 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/CameraConnMap.java +++ b/web/src/main/java/com/zhehekeji/web/lib/CameraConnMap.java @@ -4,6 +4,7 @@ import com.zhehekeji.web.lib.joyware.NetSDKLib; import java.util.HashMap; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; /** * camera login handler @@ -14,20 +15,32 @@ public class CameraConnMap { * key :cameraId * value: loginId */ - public static Map cameraMap = new HashMap<>(); + public static Map cameraMap = new ConcurrentHashMap<>(); /** * key:loginId * value: cameraId */ - public static Map loginMap = new HashMap<>(); + public static Map loginMap = new ConcurrentHashMap<>(); + /** + * key:loginId + * value: cameraId + */ + public static Map recorderMap = new ConcurrentHashMap<>(); + public static Map channelMap = new ConcurrentHashMap<>(); public static void conn(Integer cameraId,NetSDKLib.LLong handlerId){ synchronized (cameraId.toString().intern()){ cameraMap.put(cameraId,handlerId); loginMap.put(handlerId,cameraId); } + } + public static void setRecorderMap(String ip,NetSDKLib.LLong handlerId){ + synchronized (ip.intern()){ + recorderMap.put(ip,handlerId); + } + } public static void disConn(Integer cameraId){ diff --git a/web/src/main/java/com/zhehekeji/web/lib/CameraControlModule.java b/web/src/main/java/com/zhehekeji/web/lib/CameraControlModule.java index 7c124a3..3ce9312 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/CameraControlModule.java +++ b/web/src/main/java/com/zhehekeji/web/lib/CameraControlModule.java @@ -117,6 +117,8 @@ public interface CameraControlModule { */ void ptz(Integer ptzId, String name, Integer cameraId); + boolean setCameraTime(Integer cameraId, LocalDateTime dateTime); + boolean setCameraTime(Integer cameraId); /** * 转至 预置点 * 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 index 68cafc2..e00bb2f 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/hik/HikCameraControlModuleImpl.java +++ b/web/src/main/java/com/zhehekeji/web/lib/hik/HikCameraControlModuleImpl.java @@ -20,6 +20,8 @@ import java.util.ArrayList; import java.util.List; import java.util.Timer; +import static com.zhehekeji.web.lib.hik.HCNetSDK.NET_DVR_SET_TIMECFG; + /** * 云台控制接口实现 * 主要有 :八个方向控制、变倍、变焦、光圈功能 @@ -39,14 +41,16 @@ public class HikCameraControlModuleImpl implements CameraControlModule { */ public boolean ptzControlUpStart(Integer cameraId, int nChannelID, int dwPTZCommand,int dwStop) { + Integer channelId = CameraConnMap.channelMap.get(cameraId); int lUserId = CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.TILT_UP, 0); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, channelId, HCNetSDK.TILT_UP, 0); } public boolean ptzControlUpEnd(Integer cameraId, int nChannelID) { + Integer channelId = CameraConnMap.channelMap.get(cameraId); int lUserId = CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.TILT_UP, 1); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, channelId, HCNetSDK.TILT_UP, 1); } /** @@ -54,14 +58,16 @@ public class HikCameraControlModuleImpl implements CameraControlModule { */ public boolean ptzControlDownStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) { + Integer channelId = CameraConnMap.channelMap.get(cameraId); int lUserId = CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.TILT_DOWN, 0); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, channelId, HCNetSDK.TILT_DOWN, 0); } public boolean ptzControlDownEnd(Integer cameraId, int nChannelID) { + Integer channelId = CameraConnMap.channelMap.get(cameraId); int lUserId = CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.TILT_DOWN, 1); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, channelId, HCNetSDK.TILT_DOWN, 1); } /** @@ -69,42 +75,48 @@ public class HikCameraControlModuleImpl implements CameraControlModule { */ public boolean ptzControlLeftStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) { + Integer channelId = CameraConnMap.channelMap.get(cameraId); int lUserId = CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.PAN_LEFT, 0); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, channelId, HCNetSDK.PAN_LEFT, 0); } public boolean ptzControlLeftEnd(Integer cameraId, int nChannelID) { + Integer channelId = CameraConnMap.channelMap.get(cameraId); int lUserId = CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.PAN_LEFT, 1); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, channelId, HCNetSDK.PAN_LEFT, 1); } /** * 向右 */ public boolean ptzControlRightStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) { + Integer channelId = CameraConnMap.channelMap.get(cameraId); int lUserId = CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.PAN_RIGHT, 0); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, channelId, HCNetSDK.PAN_RIGHT, 0); } public boolean ptzControlRightEnd(Integer cameraId, int nChannelID) { + Integer channelId = CameraConnMap.channelMap.get(cameraId); int lUserId = CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.PAN_RIGHT, 1); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, channelId, HCNetSDK.PAN_RIGHT, 1); } /** * 向左上 */ public boolean ptzControlLeftUpStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) { + Integer channelId = CameraConnMap.channelMap.get(cameraId); int lUserId = CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.UP_LEFT, 0); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, channelId, HCNetSDK.UP_LEFT, 0); } public boolean ptzControlLeftUpEnd(Integer cameraId, int nChannelID) { + Integer channelId = CameraConnMap.channelMap.get(cameraId); int lUserId = CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.UP_LEFT, 1); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, channelId, HCNetSDK.UP_LEFT, 1); } /** @@ -112,23 +124,26 @@ public class HikCameraControlModuleImpl implements CameraControlModule { */ public boolean ptzControlRightUpStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) { + Integer channelId = CameraConnMap.channelMap.get(cameraId); int lUserId = CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.UP_RIGHT, 0); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, channelId, HCNetSDK.UP_RIGHT, 0); } public boolean ptzControlRightUpEnd(Integer cameraId, int nChannelID) { + Integer channelId = CameraConnMap.channelMap.get(cameraId); int lUserId = CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.UP_RIGHT, 1); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, channelId, HCNetSDK.UP_RIGHT, 1); } /** * 向左下 */ public boolean ptzControlLeftDownStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) { + Integer channelId = CameraConnMap.channelMap.get(cameraId); int lUserId = CameraConnMap.getConnId(cameraId).intValue(); - Boolean ok = HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.DOWN_LEFT, 0); + Boolean ok = HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, channelId, HCNetSDK.DOWN_LEFT, 0); if(!ok){ log.error("error:{},cameraId:{}", HikLoginModuleImpl.hcNetsdk.NET_DVR_GetLastError(),cameraId); } @@ -136,22 +151,25 @@ public class HikCameraControlModuleImpl implements CameraControlModule { } public boolean ptzControlLeftDownEnd(Integer cameraId, int nChannelID) { + Integer channelId = CameraConnMap.channelMap.get(cameraId); int lUserId = CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.DOWN_LEFT, 1); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, channelId, HCNetSDK.DOWN_LEFT, 1); } /** * 向右下 */ public boolean ptzControlRightDownStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) { + Integer channelId = CameraConnMap.channelMap.get(cameraId); int lUserId = CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.DOWN_RIGHT, 0); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, channelId, HCNetSDK.DOWN_RIGHT, 0); } public boolean ptzControlRightDownEnd(Integer cameraId, int nChannelID) { + Integer channelId = CameraConnMap.channelMap.get(cameraId); int lUserId = CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.DOWN_RIGHT, 1); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, channelId, HCNetSDK.DOWN_RIGHT, 1); } /** @@ -159,14 +177,16 @@ public class HikCameraControlModuleImpl implements CameraControlModule { */ public boolean ptzControlZoomAddStart(Integer cameraId, int nChannelID, int dwPTZCommand) { + Integer channelId = CameraConnMap.channelMap.get(cameraId); int lUserId = CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.ZOOM_IN, 0); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, channelId, HCNetSDK.ZOOM_IN, 0); } public boolean ptzControlZoomAddEnd(Integer cameraId, int nChannelID) { + Integer channelId = CameraConnMap.channelMap.get(cameraId); int lUserId = CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.ZOOM_IN, 1); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, channelId, HCNetSDK.ZOOM_IN, 1); } /** @@ -174,42 +194,48 @@ public class HikCameraControlModuleImpl implements CameraControlModule { */ public boolean ptzControlZoomDecStart(Integer cameraId, int nChannelID, int dwPTZCommand) { + Integer channelId = CameraConnMap.channelMap.get(cameraId); int lUserId = CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.ZOOM_OUT, 0); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, channelId, HCNetSDK.ZOOM_OUT, 0); } public boolean ptzControlZoomDecEnd(Integer cameraId, int nChannelID) { + Integer channelId = CameraConnMap.channelMap.get(cameraId); int lUserId = CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.ZOOM_OUT, 1); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, channelId, HCNetSDK.ZOOM_OUT, 1); } /** * 变焦+ */ public boolean ptzControlFocusAddStart(Integer cameraId, int nChannelID, int dwPTZCommand) { + Integer channelId = CameraConnMap.channelMap.get(cameraId); int lUserId = CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.FOCUS_NEAR, 0); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, channelId, HCNetSDK.FOCUS_NEAR, 0); } public boolean ptzControlFocusAddEnd(Integer cameraId, int nChannelID) { + Integer channelId = CameraConnMap.channelMap.get(cameraId); int lUserId = CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.FOCUS_NEAR, 1); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, channelId, HCNetSDK.FOCUS_NEAR, 1); } /** * 变焦- */ public boolean ptzControlFocusDecStart(Integer cameraId, int nChannelID, int dwPTZCommand) { + Integer channelId = CameraConnMap.channelMap.get(cameraId); int lUserId = CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.FOCUS_FAR, 0); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, channelId, HCNetSDK.FOCUS_FAR, 0); } public boolean ptzControlFocusDecEnd(Integer cameraId, int nChannelID) { + Integer channelId = CameraConnMap.channelMap.get(cameraId); int lUserId = CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.FOCUS_FAR, 1); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, channelId, HCNetSDK.FOCUS_FAR, 1); } /** @@ -217,14 +243,16 @@ public class HikCameraControlModuleImpl implements CameraControlModule { */ public boolean ptzControlIrisAddStart(Integer cameraId, int nChannelID, int dwPTZCommand) { + Integer channelId = CameraConnMap.channelMap.get(cameraId); int lUserId = CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.IRIS_OPEN, 0); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, channelId, HCNetSDK.IRIS_OPEN, 0); } public boolean ptzControlIrisAddEnd(Integer cameraId, int nChannelID) { + Integer channelId = CameraConnMap.channelMap.get(cameraId); int lUserId = CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.IRIS_OPEN, 1); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, channelId, HCNetSDK.IRIS_OPEN, 1); } /** @@ -232,25 +260,28 @@ public class HikCameraControlModuleImpl implements CameraControlModule { */ public boolean ptzControlIrisDecStart(Integer cameraId, int nChannelID, int dwPTZCommand) { + Integer channelId = CameraConnMap.channelMap.get(cameraId); int lUserId = CameraConnMap.getConnId(cameraId).intValue(); - return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.IRIS_CLOSE, 0); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, channelId, HCNetSDK.IRIS_CLOSE, 0); } public boolean ptzControlIrisDecEnd(Integer cameraId, int nChannelID) { + Integer channelId = CameraConnMap.channelMap.get(cameraId); int lUserId = CameraConnMap.getConnId(cameraId).intValue(); - Boolean ok = HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.IRIS_CLOSE, 1); + Boolean ok = HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, channelId, HCNetSDK.IRIS_CLOSE, 1); return ok; } public boolean pic(Integer cameraId, int nChannelID, String path) { PathUtil.checkDirc(path); + Integer channelId = CameraConnMap.channelMap.get(cameraId); 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, 1, jpegpara, path); + boolean picResult = HikLoginModuleImpl.hcNetsdk.NET_DVR_CaptureJPEGPicture(lUserId, channelId, jpegpara, path); if (!picResult) { log.error("pic error:{},cameraId:{}", HikLoginModuleImpl.hcNetsdk.NET_DVR_GetLastError(),cameraId); } @@ -262,8 +293,6 @@ public class HikCameraControlModuleImpl implements CameraControlModule { ConfigProperties configProperties = SpringContextUtil.getBean(ConfigProperties.class); start = start.minusNanos(1000000000 * configProperties.getKsec().getDownloadStartMp4()); end = end.plusNanos(1000000000 * configProperties.getKsec().getDownloadEndMp4()); - /* start = start.minusMinutes(1); - end = end.minusMinutes(1);*/ 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()); @@ -271,9 +300,10 @@ public class HikCameraControlModuleImpl implements CameraControlModule { endTime.setTime(end.getYear(), end.getMonthValue(), end.getDayOfMonth(), end.getHour(), end.getMinute(), end.getSecond()); log.info("start download mp4 path:{} ,cameraId:{},start_time:{},end_time:{}",path,cameraId,startTime.toStringTime(),endTime.toStringTime()); - int lUserID = CameraConnMap.getConnId(cameraId).intValue(); + Integer channelId = CameraConnMap.channelMap.get(cameraId); + int lUserId = CameraConnMap.getConnId(cameraId).intValue(); - int result = HikLoginModuleImpl.hcNetsdk.NET_DVR_GetFileByTime(lUserID, 1, startTime, endTime, path); + int result = HikLoginModuleImpl.hcNetsdk.NET_DVR_GetFileByTime(lUserId, channelId, startTime, endTime, path); if (result == -1) { log.error("downloadMp4 error code:{},cameraId:{},path:{}", HikLoginModuleImpl.hcNetsdk.NET_DVR_GetLastError(),cameraId,path); } else { @@ -369,8 +399,105 @@ public class HikCameraControlModuleImpl implements CameraControlModule { } + // ... existing code ... + public boolean setCameraTime(Integer cameraId) { + int lUserId = CameraConnMap.getConnId(cameraId).intValue(); + HCNetSDK.NET_DVR_TIME time = new HCNetSDK.NET_DVR_TIME(); + LocalDateTime localDateTime = LocalDateTime.now(); + time.setTime(localDateTime.getYear(),localDateTime.getMonthValue(),localDateTime.getDayOfMonth(),localDateTime.getHour(),localDateTime.getMinute(),localDateTime.getSecond()); + time.write(); + log.info("set camera time:{}",localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + boolean result = HikLoginModuleImpl.hcNetsdk.NET_DVR_SetDVRConfig(lUserId, NET_DVR_SET_TIMECFG, 0,time.getPointer(), time.size()); + log.info("set camera time result:{}",result); + if (!result) { + log.error("set camera time error:{}",HikLoginModuleImpl.hcNetsdk.NET_DVR_GetLastError()); + } + return result; + } + + /** + * 设置设备时间 + * @param cameraId 摄像头ID + * @param dateTime 要设置的时间 + * @return 是否设置成功 + */ + public boolean setCameraTime(Integer cameraId, LocalDateTime dateTime) { + int lUserId = CameraConnMap.getConnId(cameraId).intValue(); + if (lUserId < 0) { + log.error("Invalid user ID for camera: {}", cameraId); + return false; + } + + HCNetSDK.NET_DVR_TIME time = new HCNetSDK.NET_DVR_TIME(); + time.setTime( + dateTime.getYear(), + dateTime.getMonthValue(), + dateTime.getDayOfMonth(), + dateTime.getHour(), + dateTime.getMinute(), + dateTime.getSecond() + ); + time.write(); + + boolean result = HikLoginModuleImpl.hcNetsdk.NET_DVR_SetDVRConfig( + lUserId, + NET_DVR_SET_TIMECFG, + 0, + time.getPointer(), + time.size() + ); + + if (!result) { + int errorCode = HikLoginModuleImpl.hcNetsdk.NET_DVR_GetLastError(); + log.error("Failed to set camera time, cameraId: {}, errorCode: {}", cameraId, errorCode); + } else { + log.info("Successfully set camera time for cameraId: {}", cameraId); + } + + return result; + } + /** + * 获取设备时间 + * @param cameraId 摄像头ID + * @return 设备当前时间 + */ + public LocalDateTime getCameraTime(Integer cameraId) { + int lUserId = CameraConnMap.getConnId(cameraId).intValue(); + if (lUserId < 0) { + log.error("Invalid user ID for camera: {}", cameraId); + return null; + } + HCNetSDK.NET_DVR_TIME time = new HCNetSDK.NET_DVR_TIME(); + IntByReference pReturnLength = new IntByReference(0); + + boolean result = HikLoginModuleImpl.hcNetsdk.NET_DVR_GetDVRConfig( + lUserId, + HCNetSDK.NET_DVR_GET_TIMECFG, + 0, + time.getPointer(), + time.size(), + pReturnLength + ); + + if (!result) { + int errorCode = HikLoginModuleImpl.hcNetsdk.NET_DVR_GetLastError(); + log.error("Failed to get camera time, cameraId: {}, errorCode: {}", cameraId, errorCode); + return null; + } + + time.read(); + return LocalDateTime.of( + time.dwYear, + time.dwMonth, + time.dwDay, + time.dwHour, + time.dwMinute, + time.dwSecond + ); + } +// ... existing code ... @@ -384,8 +511,9 @@ public class HikCameraControlModuleImpl implements CameraControlModule { */ public void ptz(Integer ptzId, String name, Integer cameraId) { + Integer channelId = CameraConnMap.channelMap.get(cameraId); int dwzCommand = HCNetSDK.SET_PRESET; - Boolean ok = HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZPreset_Other(CameraConnMap.getConnId(cameraId).intValue(), 1, dwzCommand, ptzId.intValue()); + Boolean ok = HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZPreset_Other(CameraConnMap.getConnId(cameraId).intValue(), channelId, dwzCommand, ptzId.intValue()); if(!ok){ log.error("ptz error:{},cameraId:{}", HikLoginModuleImpl.hcNetsdk.NET_DVR_GetLastError(),cameraId); } @@ -401,8 +529,9 @@ public class HikCameraControlModuleImpl implements CameraControlModule { { try{ + Integer channelId = CameraConnMap.channelMap.get(cameraId); int dwPTZCommand = HCNetSDK.GOTO_PRESET; - Boolean ok = HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZPreset_Other(CameraConnMap.getConnId(cameraId).intValue(), 1, dwPTZCommand, ptzId); + Boolean ok = HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZPreset_Other(CameraConnMap.getConnId(cameraId).intValue(), channelId, dwPTZCommand, ptzId); if(!ok){ log.error("toPtz error:{},cameraId:{}", HikLoginModuleImpl.hcNetsdk.NET_DVR_GetLastError(),cameraId); } diff --git a/web/src/main/java/com/zhehekeji/web/lib/hik/HikLoginModuleImpl.java b/web/src/main/java/com/zhehekeji/web/lib/hik/HikLoginModuleImpl.java index 37f09a0..1c4cad8 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/hik/HikLoginModuleImpl.java +++ b/web/src/main/java/com/zhehekeji/web/lib/hik/HikLoginModuleImpl.java @@ -84,7 +84,7 @@ public class HikLoginModuleImpl implements CameraControlLoginModule { m_strLoginInfo.wPort = (short) m_nPort; - m_strLoginInfo.bUseAsynLogin = true; //是否异步登录:0- 否,1- 是 + m_strLoginInfo.bUseAsynLogin = false; //是否异步登录:0- 否,1- 是 m_strLoginInfo.write(); HCNetSDK.NET_DVR_DEVICEINFO_V30 m_strDeviceInfo30 = new HCNetSDK.NET_DVR_DEVICEINFO_V30();//设备信息 diff --git a/web/src/main/java/com/zhehekeji/web/lib/joyware/JoywareCameraControlModuleImpl.java b/web/src/main/java/com/zhehekeji/web/lib/joyware/JoywareCameraControlModuleImpl.java index 76c36c9..bac1bc9 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/joyware/JoywareCameraControlModuleImpl.java +++ b/web/src/main/java/com/zhehekeji/web/lib/joyware/JoywareCameraControlModuleImpl.java @@ -330,6 +330,12 @@ public class JoywareCameraControlModuleImpl implements CameraControlModule { } } + public boolean setCameraTime(Integer cameraId, LocalDateTime dateTime){ + return true; + } + public boolean setCameraTime(Integer cameraId){ + return true; + } /** * 转至 预置点 * diff --git a/web/src/main/java/com/zhehekeji/web/pojo/OrderSearch.java b/web/src/main/java/com/zhehekeji/web/pojo/OrderSearch.java index c70d7e3..0428142 100644 --- a/web/src/main/java/com/zhehekeji/web/pojo/OrderSearch.java +++ b/web/src/main/java/com/zhehekeji/web/pojo/OrderSearch.java @@ -12,6 +12,8 @@ public class OrderSearch { @NotEmpty(message = "订单号不能为空") private String orderNum; + private String streetId; + @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") private LocalDateTime startTimestamp; 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 2407454..14db782 100644 --- a/web/src/main/java/com/zhehekeji/web/service/CameraService.java +++ b/web/src/main/java/com/zhehekeji/web/service/CameraService.java @@ -320,6 +320,9 @@ public class CameraService { cameraIO.setAperture("OK"); } } + public void setCameraTime(Camera camera){ + cameraControlModule.setCameraTime(camera.getId()); + } public void cameraConnectStatus(Integer cameraId){ Boolean ok = cameraControlModule.connectStatus(cameraId); @@ -331,10 +334,30 @@ public class CameraService { } public void cameraLogin(Camera camera){ - NetSDKLib.LLong lLong = cameraControlLoginModule.login(camera.getIp(),camera.getPort(),camera.getUser(),camera.getPassword()); - if(lLong != null){ - log.info("camera login success,cameraId:{},ip:{}",camera.getId(),camera.getIp()); - CameraConnMap.conn(camera.getId(),lLong); + CameraConnMap.channelMap.put(camera.getId(),camera.getChannel()); + if (camera.getRecorderIp()!= null && camera.getRecorderIp().length() > 0){ + + if (CameraConnMap.recorderMap.get(camera.getRecorderIp()) != null){ + + log.info("camera login success,cameraId:{},ip:{}",camera.getId(),camera.getRecorderIp()); + CameraConnMap.conn(camera.getId(),CameraConnMap.recorderMap.get(camera.getRecorderIp())); + }else { + NetSDKLib.LLong lLong = cameraControlLoginModule.login(camera.getRecorderIp(),camera.getPort(),camera.getUser(),camera.getPassword()); + if(lLong != null){ + CameraConnMap.setRecorderMap(camera.getRecorderIp(),lLong); + CameraConnMap.conn(camera.getId(),lLong); + setCameraTime(camera); + } + } + }else { + + NetSDKLib.LLong lLong = cameraControlLoginModule.login(camera.getIp(),camera.getPort(),camera.getUser(),camera.getPassword()); + if(lLong != null){ + log.info("camera login success,cameraId:{},ip:{}",camera.getId(),camera.getIp()); + CameraConnMap.conn(camera.getId(),lLong); + + setCameraTime(camera); + } } } diff --git a/web/src/main/java/com/zhehekeji/web/service/CheckLogService.java b/web/src/main/java/com/zhehekeji/web/service/CheckLogService.java index 7f92e40..9416de2 100644 --- a/web/src/main/java/com/zhehekeji/web/service/CheckLogService.java +++ b/web/src/main/java/com/zhehekeji/web/service/CheckLogService.java @@ -36,7 +36,7 @@ public class CheckLogService { if(search.getLeftRight() != null &&( search.getLeftRight() != 0 && search.getLeftRight() != -1)){ wrapper.eq("`direction`",search.getLeftRight()); } - if(search.getSide() != null &&( search.getSide() != 0 && search.getSide() != -1)){ + if(search.getSide() != null &&( search.getSide() != 0 && search.getSide() != -1)){ wrapper.eq("`side`",search.getSide()); } if(search.getRow() != null &&( search.getRow() != 0 && search.getRow() != -1)){ @@ -45,7 +45,7 @@ public class CheckLogService { if(search.getColumn() != null &&( search.getColumn() != 0 && search.getColumn() != -1)){ wrapper.eq("`column`",search.getColumn()); } - if(ToolUtil.isNotEmpty(search.getStreetId() )){ + if(ToolUtil.isNotEmpty(search.getStreetId() ) && search.getStreetId() != 0){ wrapper.eq("`street_id`",search.getStreetId()); } wrapper.orderByDesc("create_time"); diff --git a/web/src/main/java/com/zhehekeji/web/service/CronTab.java b/web/src/main/java/com/zhehekeji/web/service/CronTab.java index 9097ba3..b310b67 100644 --- a/web/src/main/java/com/zhehekeji/web/service/CronTab.java +++ b/web/src/main/java/com/zhehekeji/web/service/CronTab.java @@ -2,6 +2,7 @@ package com.zhehekeji.web.service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.zhehekeji.web.config.ConfigProperties; +import com.zhehekeji.web.entity.Camera; import com.zhehekeji.web.entity.LightSource; import com.zhehekeji.web.mapper.LightSourceMapper; import com.zhehekeji.web.service.damLightSource.JYDAMEquip; @@ -68,6 +69,19 @@ public class CronTab { checkFileTime(dir2,configProperties.getDeleteFileDays()); } + @Scheduled(cron = "0 0 0 * * ?") + //@Scheduled(cron = "0 0/1 * * * *") + public void cameraTime() { + List cameraList = cameraService.allCameras(); + cameraList.forEach(camera -> { + cameraService.setCameraTime(camera); + }); + + } + + @Resource + CameraService cameraService; + public static void putTime(Integer streetId){ lightTimeMap.put(streetId,System.currentTimeMillis()); } 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 1c54bae..1887f32 100644 --- a/web/src/main/java/com/zhehekeji/web/service/InitService.java +++ b/web/src/main/java/com/zhehekeji/web/service/InitService.java @@ -81,8 +81,7 @@ public class InitService implements ApplicationRunner { //球机登录 List cameras = cameraMapper.selectByMap(new HashMap<>(0)); cameras.forEach(camera -> { - LoginThread loginThread = new LoginThread(camera); - loginThread.start(); + cameraService.cameraLogin(camera); }); //plc连接 if(configProperties.getServerMode() == 0){ diff --git a/web/src/main/resources/mapper/OrderMapper.xml b/web/src/main/resources/mapper/OrderMapper.xml index bd556c7..e6f0b41 100644 --- a/web/src/main/resources/mapper/OrderMapper.xml +++ b/web/src/main/resources/mapper/OrderMapper.xml @@ -7,7 +7,10 @@ from `order` t - and t.order_num = #{req.orderNum} + and t.order_num like concat('%',#{req.orderNum},'%') + + + and t.street_id = #{req.streetId} and t.start_time >= #{req.startTimestamp} and t.start_time <= #{req.endTimestamp}