diff --git a/web/src/main/java/com/zhehekeji/web/config/ConfigProperties.java b/web/src/main/java/com/zhehekeji/web/config/ConfigProperties.java index 003dd9b..96ca79f 100644 --- a/web/src/main/java/com/zhehekeji/web/config/ConfigProperties.java +++ b/web/src/main/java/com/zhehekeji/web/config/ConfigProperties.java @@ -51,6 +51,8 @@ public class ConfigProperties { private Long delayCaptureTime; + private String cameraTimeUpdateCron; + private Long runningDelayCaptureTime; private Long C1DelayCaptureTime; 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 2b2c0ef..907779a 100644 --- a/web/src/main/java/com/zhehekeji/web/controller/CameraControlController.java +++ b/web/src/main/java/com/zhehekeji/web/controller/CameraControlController.java @@ -334,7 +334,7 @@ public class CameraControlController { private CameraService cameraService; private void checkLogin(Integer cameraId) { - if (CameraConnMap.getConnId(cameraId) == null) { + if (CameraConnMap.getConnId(cameraId) != null) { Boolean ok = false; if (configProperties.getCameraConfig().getCameraType() == ConfigProperties.HIK_CAMERA) { ok = HikLoginModuleImpl.connectStatus(CameraConnMap.getConnId(cameraId).intValue()); @@ -348,6 +348,9 @@ public class CameraControlController { cameraService.cameraLogin(camera); } } + }else { + Camera camera = cameraMapper.selectById(cameraId); + cameraService.cameraLogin(camera); } } } 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 2e3236c..00c6a0c 100644 --- a/web/src/main/java/com/zhehekeji/web/lib/CameraControlModule.java +++ b/web/src/main/java/com/zhehekeji/web/lib/CameraControlModule.java @@ -1,9 +1,13 @@ package com.zhehekeji.web.lib; +import com.zhehekeji.web.lib.hik.HCNetSDK; +import com.zhehekeji.web.lib.hik.HikLoginModuleImpl; import com.zhehekeji.web.pojo.CameraPtzPojo; import java.time.LocalDateTime; +import static com.zhehekeji.web.lib.hik.HCNetSDK.NET_DVR_SET_TIMECFG; + public interface CameraControlModule { boolean connectStatus(Integer cameraId); @@ -34,6 +38,13 @@ public interface CameraControlModule { */ boolean ptzControlRightStart(Integer cameraId, int nChannelID, int lParam1, int lParam2); + /** + * + * @param cameraId 球机id + * @return + */ + public boolean setCameraTime(Integer cameraId); + boolean ptzControlRightEnd(Integer cameraId, int nChannelID); CameraPtzPojo ptzGetDVRConfig(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 f6458a4..8c6ec67 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 @@ -21,6 +21,7 @@ import java.util.List; import java.util.Timer; import static com.zhehekeji.web.lib.hik.HCNetSDK.NET_DVR_GET_PTZPOS; +import static com.zhehekeji.web.lib.hik.HCNetSDK.NET_DVR_SET_TIMECFG; /** * 云台控制接口实现 @@ -89,6 +90,21 @@ public class HikCameraControlModuleImpl implements CameraControlModule { return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.PAN_RIGHT, 0); } + /** + * + * @param cameraId 球机id + * @return + */ + 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(); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_SetDVRConfig(lUserId, NET_DVR_SET_TIMECFG, 0,time.getPointer(), time.size()); + } + @Override public CameraPtzPojo ptzGetDVRConfig(Integer lUserID) { 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 aca83de..b741d0b 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 @@ -5,11 +5,14 @@ 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.hik.HCNetSDK; +import com.zhehekeji.web.lib.hik.HikLoginModuleImpl; import com.zhehekeji.web.pojo.CameraPtzPojo; import lombok.extern.slf4j.Slf4j; import java.time.LocalDateTime; +import static com.zhehekeji.web.lib.hik.HCNetSDK.NET_DVR_SET_TIMECFG; import static com.zhehekeji.web.lib.joyware.JoywareLoginModuleImpl.mp4ReceiveCB; /** @@ -86,7 +89,15 @@ public class JoywareCameraControlModuleImpl implements CameraControlModule { NetSDKLib.NET_PTZ_ControlType.NET_PTZ_RIGHT_CONTROL, lParam1, lParam2, 0, 0); } - + 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(); + return HikLoginModuleImpl.hcNetsdk.NET_DVR_SetDVRConfig(lUserId, NET_DVR_SET_TIMECFG, 0,time.getPointer(), time.size()); + } public boolean ptzControlRightEnd(Integer cameraId, int nChannelID) { log.info("right end"); return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID, 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 200cf10..4f98f7b 100644 --- a/web/src/main/java/com/zhehekeji/web/service/CronTab.java +++ b/web/src/main/java/com/zhehekeji/web/service/CronTab.java @@ -2,7 +2,14 @@ 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.lib.CameraConnMap; +import com.zhehekeji.web.lib.CameraControlModule; +import com.zhehekeji.web.lib.hik.HikCameraControlModuleImpl; +import com.zhehekeji.web.lib.hik.HikLoginModuleImpl; +import com.zhehekeji.web.lib.joyware.JoywareLoginModuleImpl; +import com.zhehekeji.web.mapper.CameraMapper; import com.zhehekeji.web.mapper.LightSourceMapper; import com.zhehekeji.web.service.damLightSource.JYDAMEquip; import com.zhehekeji.web.service.damLightSource.JYDamHelper; @@ -38,8 +45,15 @@ public class CronTab { @Resource private ConfigProperties configProperties; @Resource + private CameraMapper cameraMapper; + @Resource private LightSourceMapper lightSourceMapper; + @Resource + private CameraService cameraService; + @Resource + private CameraControlModule cameraControlModule; + private static LocalDateTime now; private static Map lightTimeMap = new HashMap<>(); @@ -96,6 +110,28 @@ public class CronTab { } } + @Scheduled(cron = "${cameraConfig.cameraTimeUpdateCron}") + public void cameraTimeUpdate() { + log.info(" cameraTimeUpdate"); + long timeStamp = System.currentTimeMillis(); + List cameras = cameraMapper.selectList(new QueryWrapper<>()); + for (Camera camera : cameras){ + Boolean ok = false; + if(configProperties.getCameraConfig().getCameraType() == ConfigProperties.HIK_CAMERA){ + ok = HikLoginModuleImpl.connectStatus(CameraConnMap.getConnId(camera.getId()).intValue()); + }else { + ok = JoywareLoginModuleImpl.connectStatus(CameraConnMap.getConnId(camera.getId())); + } + + if(ok){ + cameraControlModule.setCameraTime(camera.getId()); + }else { + CameraConnMap.disConn(camera.getId()); + camera.setStatus("未连接"); + cameraService.cameraLogin(camera); + } + } + } public static void checkFileTime(File dir,int days) { if(!dir.exists()){ diff --git a/web/src/main/resources/application-prod.yml b/web/src/main/resources/application-prod.yml index 0058968..654b847 100644 --- a/web/src/main/resources/application-prod.yml +++ b/web/src/main/resources/application-prod.yml @@ -55,6 +55,7 @@ cameraConfig: # 利珀延迟10s就可 # 单位毫秒 delayDownloadMp4: 10000 + cameraTimeUpdateCron: 0/10 * * * * ? # ------------ # -----图片 mp4下载地址 savePath: