From 5b017324148ea92d96f9f16ade215463d6c712e5 Mon Sep 17 00:00:00 2001 From: liusuyi <1951119284@qq.com> Date: 星期六, 10 八月 2024 14:15:02 +0800 Subject: [PATCH] 优化:海康大华sdk断线重连机制 --- ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java | 20 +++++ ard-work/src/main/resources/mapper/device/ArdChannelMapper.xml | 3 ard-work/src/main/java/com/ruoyi/device/channel/service/impl/ArdChannelServiceImpl.java | 17 ++- ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java | 79 ++++++++----------- ard-work/src/main/java/com/ruoyi/device/channel/service/IArdChannelService.java | 30 ++++-- ard-work/src/main/java/com/ruoyi/device/camera/service/ICameraSdkService.java | 1 ard-work/src/main/java/com/ruoyi/device/camera/factory/CameraSDK.java | 3 ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java | 3 ard-work/src/main/java/com/ruoyi/utils/sdk/common/GlobalVariable.java | 11 +- ard-work/src/main/java/com/ruoyi/device/channel/mapper/ArdChannelMapper.java | 7 + ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java | 12 ++- 11 files changed, 114 insertions(+), 72 deletions(-) diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/factory/CameraSDK.java b/ard-work/src/main/java/com/ruoyi/device/camera/factory/CameraSDK.java index d535bbd..4d3234a 100644 --- a/ard-work/src/main/java/com/ruoyi/device/camera/factory/CameraSDK.java +++ b/ard-work/src/main/java/com/ruoyi/device/camera/factory/CameraSDK.java @@ -11,7 +11,7 @@ import java.util.Map; /** - * 鐩告満SDK绛栫暐鎺ュ彛 + * 鐩告満SDK绛栫暐鎺ュ彛 * 鍒樿嫃涔� * 2023/11/7 10:48:52 */ @@ -73,6 +73,7 @@ //鎶撳浘 String picCutCate(CameraCmd cmd); + //鑾峰彇ptz AjaxResult getPtz(CameraCmd cmd); diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/service/ICameraSdkService.java b/ard-work/src/main/java/com/ruoyi/device/camera/service/ICameraSdkService.java index c4aad00..9cf1523 100644 --- a/ard-work/src/main/java/com/ruoyi/device/camera/service/ICameraSdkService.java +++ b/ard-work/src/main/java/com/ruoyi/device/camera/service/ICameraSdkService.java @@ -3,6 +3,7 @@ import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.device.camera.domain.ArdCameras; import com.ruoyi.device.camera.domain.CameraCmd; + import java.util.Map; public interface ICameraSdkService { diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java index b2070e5..39e9b5c 100644 --- a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java +++ b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java @@ -73,7 +73,6 @@ @PostConstruct public void loadCameras() { - //娓呯悊鏈湴褰曞儚缂撳瓨鏂囦欢 String tempPath = ARDConfig.getProfile() + Constants.LOCAL_RECORD_TEMP_PREFIX; FileUtils.deleteFolder(tempPath); @@ -85,6 +84,8 @@ for (ArdCameras ardCamera : ardCameras) { redisCache.setCacheObject(getCacheKey(ardCamera.getId()), ardCamera); } + //娓呯┖閫氶亾 + ardChannelMapper.clearArdChannel(); //娓呯┖娴佸獟浣� vtduService.clearVtdu(); } diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java index 0209056..4478731 100644 --- a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java +++ b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java @@ -33,6 +33,9 @@ import javax.annotation.Resource; import java.util.*; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @@ -70,6 +73,23 @@ ardCamerasService.resetCameraLoginId(); List<ArdCameras> ardCameras = ardCamerasService.selectArdCamerasListNoDataScope(new ArdCameras()); ardCameras.stream().forEach(ardCamera -> asyncLogin(ardCamera)); + //寮�鍚櫥褰曞け璐ョ浉鏈洪噸杩炲畾鏃朵换鍔� + ScheduledExecutorService executor = Executors.newScheduledThreadPool(1); + executor.scheduleAtFixedRate(new Runnable() { + @Override + public void run() { + try { + log.info("寮�濮嬫墽琛岀櫥褰曞け璐ョ浉鏈洪噸杩炲畾鏃朵换鍔�"); + List<Object> ardCameras = redisCache.getListKey(CacheConstants.CAMERA_LIST_KEY); + ardCameras.stream() + .map(object -> (ArdCameras) object) // 灏哋bject杞崲涓篈rdCameras + .filter(camera -> !GlobalVariable.loginMap.containsKey(camera.getId())) + .forEach(camera -> asyncLogin(camera)); + } catch (Exception ex) { + log.error("閲嶈繛鐩告満寮傚父锛�" + ex.getMessage()); + } + } + }, 30, 30, TimeUnit.SECONDS); // 浠诲姟寤惰繜 } catch (Exception ex) { log.error("鍒濆鍖栫櫥褰曠浉鏈哄紓甯革細" + ex.getMessage()); } diff --git a/ard-work/src/main/java/com/ruoyi/device/channel/mapper/ArdChannelMapper.java b/ard-work/src/main/java/com/ruoyi/device/channel/mapper/ArdChannelMapper.java index 7823474..bc21429 100644 --- a/ard-work/src/main/java/com/ruoyi/device/channel/mapper/ArdChannelMapper.java +++ b/ard-work/src/main/java/com/ruoyi/device/channel/mapper/ArdChannelMapper.java @@ -66,4 +66,11 @@ * @return 缁撴灉 */ public int deleteArdChannelByDeviceId(String deviceId); + /** + * 娓呯┖閫氶亾 + * + * @author 鍒樿嫃涔� + * @date 2024/8/10 11:18 + */ + public int clearArdChannel(); } diff --git a/ard-work/src/main/java/com/ruoyi/device/channel/service/IArdChannelService.java b/ard-work/src/main/java/com/ruoyi/device/channel/service/IArdChannelService.java index 17a7a6d..f136e2a 100644 --- a/ard-work/src/main/java/com/ruoyi/device/channel/service/IArdChannelService.java +++ b/ard-work/src/main/java/com/ruoyi/device/channel/service/IArdChannelService.java @@ -7,15 +7,14 @@ /** * 閫氶亾绠$悊Service鎺ュ彛 - * + * * @author ard * @date 2023-08-19 */ -public interface IArdChannelService -{ +public interface IArdChannelService { /** * 鏌ヨ閫氶亾绠$悊 - * + * * @param id 閫氶亾绠$悊涓婚敭 * @return 閫氶亾绠$悊 */ @@ -23,7 +22,7 @@ /** * 鏌ヨ閫氶亾绠$悊鍒楄〃 - * + * * @param ardChannel 閫氶亾绠$悊 * @return 閫氶亾绠$悊闆嗗悎 */ @@ -31,7 +30,7 @@ /** * 鏂板閫氶亾绠$悊 - * + * * @param ardChannel 閫氶亾绠$悊 * @return 缁撴灉 */ @@ -39,7 +38,7 @@ /** * 淇敼閫氶亾绠$悊 - * + * * @param ardChannel 閫氶亾绠$悊 * @return 缁撴灉 */ @@ -47,7 +46,7 @@ /** * 鎵归噺鍒犻櫎閫氶亾绠$悊 - * + * * @param ids 闇�瑕佸垹闄ょ殑閫氶亾绠$悊涓婚敭闆嗗悎 * @return 缁撴灉 */ @@ -55,25 +54,34 @@ /** * 鍒犻櫎閫氶亾绠$悊淇℃伅 - * + * * @param id 閫氶亾绠$悊涓婚敭 * @return 缁撴灉 */ public int deleteArdChannelById(String id); + /** * 鍒犻櫎閫氶亾绠$悊淇℃伅 * * @param deviceId 鎵�灞炶澶嘔D * @return 缁撴灉 */ - public int deleteArdChannelByDeviceId(String deviceId); + public int deleteArdChannelByDeviceId(String deviceId); /** + * 娓呯┖閫氶亾 + * + * @author 鍒樿嫃涔� + * @date 2024/8/10 11:18 + */ + public int clearArdChannel(); + + /** + * @return * @Author 鍒樿嫃涔� * @Description 鍚屾閫氶亾淇℃伅 * @Date 2024/7/10 13:20 * @Param - * @return */ public void asyncChannel(ArdCameras ardCameras, List<ArdChannel> oldArrayList, List<ArdChannel> newArrayList); } diff --git a/ard-work/src/main/java/com/ruoyi/device/channel/service/impl/ArdChannelServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/channel/service/impl/ArdChannelServiceImpl.java index c715669..0ada6a5 100644 --- a/ard-work/src/main/java/com/ruoyi/device/channel/service/impl/ArdChannelServiceImpl.java +++ b/ard-work/src/main/java/com/ruoyi/device/channel/service/impl/ArdChannelServiceImpl.java @@ -6,12 +6,7 @@ import com.ruoyi.common.utils.uuid.IdUtils; import com.ruoyi.device.camera.domain.ArdCameras; -import com.ruoyi.device.camera.factory.CameraSDK; -import com.ruoyi.device.camera.factory.CameraSDKFactory; -import com.ruoyi.device.camera.mapper.ArdCamerasMapper; -import com.ruoyi.media.mapper.VtduMapper; import com.ruoyi.media.service.IVtduService; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.device.channel.mapper.ArdChannelMapper; import com.ruoyi.device.channel.domain.ArdChannel; @@ -29,8 +24,6 @@ public class ArdChannelServiceImpl implements IArdChannelService { @Resource private ArdChannelMapper ardChannelMapper; - @Resource - private CameraSDKFactory cameraSDKFactory; @Resource private IVtduService vtduService; /** @@ -101,6 +94,16 @@ } /** + * 娓呯┖閫氶亾 + * + * @author 鍒樿嫃涔� + * @date 2024/8/10 11:18 + */ + @Override + public int clearArdChannel(){ + return ardChannelMapper.clearArdChannel(); + } + /** * 鍒犻櫎閫氶亾绠$悊淇℃伅 * * @param deviceId 鎵�灞炶澶嘔D diff --git a/ard-work/src/main/java/com/ruoyi/utils/sdk/common/GlobalVariable.java b/ard-work/src/main/java/com/ruoyi/utils/sdk/common/GlobalVariable.java index c410500..aa39a55 100644 --- a/ard-work/src/main/java/com/ruoyi/utils/sdk/common/GlobalVariable.java +++ b/ard-work/src/main/java/com/ruoyi/utils/sdk/common/GlobalVariable.java @@ -5,8 +5,11 @@ import lombok.Data; import org.ehcache.impl.internal.concurrent.ConcurrentHashMap; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; +import java.util.concurrent.CopyOnWriteArrayList; /** * @ClassName: globalVariable @@ -18,14 +21,14 @@ @Data public class GlobalVariable { //淇濆瓨鐩告満鐧诲綍淇℃伅 - public static Map<String, Object> loginMap = new HashMap<>(); + public static Map<String, Object> loginMap = new ConcurrentHashMap<>(); //鐩告満棰勮瀛楀吀 - public static Map<String, Integer> previewMap = new HashMap<>(); + public static Map<String, Integer> previewMap = new ConcurrentHashMap<>(); //绾跨▼瀛楀吀 - public static Map<String, String> threadMap = new HashMap<>(); + public static Map<String, String> threadMap = new ConcurrentHashMap<>(); //淇濆瓨鐩告満鐧诲綍淇℃伅(loginId:Camera) - public static Map<Integer, Object> loginCameraMap = new HashMap<>(); + public static Map<Integer, Object> loginCameraMap = new ConcurrentHashMap<>(); //鐧诲綍杩囩浉鏈洪泦鍚� public static ConcurrentHashSet<ArdCameras> loginedSet = new ConcurrentHashSet<>(); } diff --git a/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java b/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java index 5d1c7e8..eb5dc2a 100644 --- a/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java +++ b/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java @@ -37,6 +37,7 @@ import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; +import javax.annotation.PostConstruct; import javax.annotation.Resource; import java.io.*; import java.nio.file.Files; @@ -80,6 +81,11 @@ // 缃戠粶杩炴帴鎭㈠ private static HaveReConnect haveReConnect = new HaveReConnect(); + @PostConstruct + public void initSdk() { + log.info("鍒濆鍖栧ぇ鍗巗dk"); + LoginModule.init(disConnect, haveReConnect); + } /** * 鐧诲綍 @@ -91,7 +97,6 @@ @Override public AjaxResult login(ArdCameras camera) { try { - LoginModule.init(disConnect, haveReConnect); NetSDKLib.NET_DEVICEINFO_Ex m_stDeviceInfo = new NetSDKLib.NET_DEVICEINFO_Ex(); NetSDKLib.LLong loginId = LoginModule.login(camera.getIp(), camera.getPort(), camera.getUsername(), camera.getPassword(), m_stDeviceInfo); if (loginId.longValue() <= 0) { @@ -101,7 +106,7 @@ ardCamerasService.updateArdCameras(camera); //鍒犻櫎绠$悊閫氶亾 ardChannelService.deleteArdChannelByDeviceId(camera.getId()); - log.error("璁惧[" + camera.getIp() + ":" + camera.getPort() + "]鐧诲綍澶辫触:" + getErrorCodePrint()); + log.warn("璁惧[" + camera.getIp() + ":" + camera.getPort() + "]鐧诲綍澶辫触:" + getErrorCodePrint()); return AjaxResult.warn(ErrorCode.getErrorCode(LoginModule.netsdk.CLIENT_GetLastError())); } log.debug("璁惧[" + camera.getIp() + ":" + camera.getPort() + "]鐧诲綍鎴愬姛:" + (int) loginId.longValue()); @@ -137,7 +142,6 @@ @Async("globalExecutor") public AjaxResult asyncLogin(ArdCameras camera) { try { - LoginModule.init(disConnect, haveReConnect); NetSDKLib.NET_DEVICEINFO_Ex m_stDeviceInfo = new NetSDKLib.NET_DEVICEINFO_Ex(); NetSDKLib.LLong loginId = LoginModule.login(camera.getIp(), camera.getPort(), camera.getUsername(), camera.getPassword(), m_stDeviceInfo); if (loginId.longValue() <= 0) { @@ -147,7 +151,7 @@ ardCamerasService.updateArdCameras(camera); //鍒犻櫎绠$悊閫氶亾 ardChannelService.deleteArdChannelByDeviceId(camera.getId()); - log.error("璁惧[" + camera.getIp() + ":" + camera.getPort() + "]鐧诲綍澶辫触:" + getErrorCodePrint()); + log.warn("璁惧[" + camera.getIp() + ":" + camera.getPort() + "]鐧诲綍澶辫触:" + getErrorCodePrint()); return AjaxResult.warn(getErrorCodePrint()); } log.debug("璁惧[" + camera.getIp() + ":" + camera.getPort() + "]鐧诲綍鎴愬姛:" + loginId); diff --git a/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java b/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java index e622d1c..0fb2504 100644 --- a/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java +++ b/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java @@ -29,11 +29,10 @@ import com.sun.jna.Pointer; import com.sun.jna.ptr.IntByReference; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.ApplicationEventPublisher; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; +import javax.annotation.PostConstruct; import javax.annotation.Resource; import java.io.*; import java.math.BigDecimal; @@ -65,9 +64,37 @@ private QueueHandler queueHandler; @Resource ICameraSdkService cameraSdkService; - public Object _lock = new Object(); + public static HCNetSDK hCNetSDK = HCNetSDK.hCNetSDK; private static HCNetSDK.FExceptionCallBack fExceptionCallBack;//寮傚父鍥炶皟 + + @PostConstruct + public void initSdk() { + log.info("鍒濆鍖栨捣搴穝dk"); + // 鍒濆鍖� + if (!hCNetSDK.NET_DVR_Init()) { + log.debug("SDK鍒濆鍖栧け璐�"); + } + //鎵撳嵃娴峰悍sdk鏃ュ織 + if (Platform.isWindows()) { + String WIN_PATH = System.getProperty("user.dir") + File.separator + "ardLog" + File.separator + "logs" + File.separator; + hCNetSDK.NET_DVR_SetLogToFile(3, WIN_PATH, true); + } else { + hCNetSDK.NET_DVR_SetLogToFile(3, "/home/ardLog/hiklog", true); + } + if (fExceptionCallBack == null) { + fExceptionCallBack = new ExceptionCallBack();//寮傚父鍥炶皟 + //璁剧疆寮傚父鍥炶皟鍑芥暟(鍙湪鍥炶皟鍑芥暟涓幏鍙栬澶囦笂涓嬬嚎鐘舵�佺瓑) + if (!hCNetSDK.NET_DVR_SetExceptionCallBack_V30(0, 0, fExceptionCallBack, null)) { + log.debug("Set fExceptionCallBack function fail"); + } else { + log.debug("Set fExceptionCallBack function successfully!"); + } + } + //璁剧疆杩炴帴鏃堕棿涓庨噸杩炴椂闂� + hCNetSDK.NET_DVR_SetConnectTime(2000, 1); + hCNetSDK.NET_DVR_SetReconnect(5000, true); + } /** * @鎻忚堪 娉ㄥ唽鐧诲綍 鍙敮鎸佸悓姝ョ櫥闄嗭紝涓斿畼鏂逛笉寤鸿鐩存帴鍦ㄦ鎺ュ彛涓嬪啓鑰楁椂鎿嶄綔 @@ -80,24 +107,11 @@ @Override public AjaxResult login(ArdCameras camera) { try { - // 鍒濆鍖� - if (!hCNetSDK.NET_DVR_Init()) { - log.debug("SDK鍒濆鍖栧け璐�"); - } - //鎵撳嵃娴峰悍sdk鏃ュ織 - if (Platform.isWindows()) { - String WIN_PATH = System.getProperty("user.dir") + File.separator + "ardLog" + File.separator + "logs" + File.separator; - hCNetSDK.NET_DVR_SetLogToFile(3, WIN_PATH, true); - } else { - hCNetSDK.NET_DVR_SetLogToFile(3, "/home/ardLog/hiklog", true); - } String m_sDeviceIP = camera.getIp(); String m_sUsername = camera.getUsername(); String m_sPassword = camera.getPassword(); short m_sPort = camera.getPort().shortValue(); - //璁剧疆杩炴帴鏃堕棿涓庨噸杩炴椂闂� - hCNetSDK.NET_DVR_SetConnectTime(2000, 1); - hCNetSDK.NET_DVR_SetReconnect(5000, true); + //璁惧淇℃伅, 杈撳嚭鍙傛暟 HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40(); HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO(); @@ -115,6 +129,7 @@ //鏄惁寮傛鐧诲綍锛�0- 鍚︼紝1- 鏄� windowsSDK閲屾槸true鍜宖alse m_strLoginInfo.bUseAsynLogin = false; m_strLoginInfo.write(); + //鍚屾鐧诲綍 int lUserID = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo); if (lUserID < 0) { @@ -125,20 +140,12 @@ //鍒犻櫎绠$悊閫氶亾 ardChannelService.deleteArdChannelByDeviceId(camera.getId()); ardCamerasService.updateArdCameras(camera); - log.debug("璁惧[" + camera.getIp() + ":" + camera.getPort() + "]鐧诲綍澶辫触: " + SdkErrorCodeEnum.getDescByCode(errorCode) + "(" + errorCode + ")"); + log.warn("璁惧[" + camera.getIp() + ":" + camera.getPort() + "]鐧诲綍澶辫触: " + SdkErrorCodeEnum.getDescByCode(errorCode) + "(" + errorCode + ")"); return AjaxResult.warn("璁惧[" + camera.getIp() + ":" + camera.getPort() + "]鐧诲綍澶辫触: " + SdkErrorCodeEnum.getDescByCode(errorCode) + "(" + errorCode + ")"); } log.debug("Login Success [ " + camera.getIp() + ":" + camera.getPort() + " ]"); - if (fExceptionCallBack == null) { - fExceptionCallBack = new ExceptionCallBack();//寮傚父鍥炶皟 - //璁剧疆寮傚父鍥炶皟鍑芥暟(鍙湪鍥炶皟鍑芥暟涓幏鍙栬澶囦笂涓嬬嚎鐘舵�佺瓑) - if (!hCNetSDK.NET_DVR_SetExceptionCallBack_V30(0, 0, fExceptionCallBack, null)) { - log.debug("Set fExceptionCallBack function fail"); - } else { - log.debug("Set fExceptionCallBack function successfully!"); - } - } + GlobalVariable.loginMap.put(camera.getId(), lUserID); GlobalVariable.loginCameraMap.put(lUserID, camera); camera.setLoginId((long) lUserID); @@ -187,29 +194,13 @@ @Async("globalExecutor") public AjaxResult asyncLogin(ArdCameras camera) { try { - // 鍒濆鍖� - if (!hCNetSDK.NET_DVR_Init()) { - log.error("SDK鍒濆鍖栧け璐�"); - return AjaxResult.warn("SDK鍒濆鍖栧け璐�"); - } - //鎵撳嵃娴峰悍sdk鏃ュ織 - if (Platform.isWindows()) { - String WIN_PATH = System.getProperty("user.dir") + File.separator + "ardLog" + File.separator + "logs" + File.separator; - hCNetSDK.NET_DVR_SetLogToFile(3, WIN_PATH, true); - } else { - hCNetSDK.NET_DVR_SetLogToFile(3, "/home/ardLog/hiklog", true); - } String m_sDeviceIP = camera.getIp(); String m_sUsername = camera.getUsername(); String m_sPassword = camera.getPassword(); short m_sPort = camera.getPort().shortValue(); - //璁剧疆杩炴帴鏃堕棿涓庨噸杩炴椂闂� - hCNetSDK.NET_DVR_SetConnectTime(2000, 1); - hCNetSDK.NET_DVR_SetReconnect(5000, true); //璁惧淇℃伅, 杈撳嚭鍙傛暟 HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40(); HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO(); - // 娉ㄥ唽璁惧-鐧诲綍鍙傛暟锛屽寘鎷澶囧湴鍧�銆佺櫥褰曠敤鎴枫�佸瘑鐮佺瓑 m_strLoginInfo.sDeviceAddress = new byte[HCNetSDK.NET_DVR_DEV_ADDRESS_MAX_LEN]; System.arraycopy(m_sDeviceIP.getBytes(), 0, m_strLoginInfo.sDeviceAddress, 0, m_sDeviceIP.length()); @@ -233,7 +224,7 @@ //鍒犻櫎绠$悊閫氶亾 ardChannelService.deleteArdChannelByDeviceId(camera.getId()); ardCamerasService.updateArdCameras(camera); - log.error("璁惧[" + camera.getIp() + ":" + camera.getPort() + "]鐧诲綍澶辫触: " + SdkErrorCodeEnum.getDescByCode(errorCode) + "(" + errorCode + ")"); + log.warn("璁惧[" + camera.getIp() + ":" + camera.getPort() + "]鐧诲綍澶辫触: " + SdkErrorCodeEnum.getDescByCode(errorCode) + "(" + errorCode + ")"); return AjaxResult.warn("璁惧[" + camera.getIp() + ":" + camera.getPort() + "]鐧诲綍澶辫触: " + SdkErrorCodeEnum.getDescByCode(errorCode) + "(" + errorCode + ")"); } log.debug("Login Success 銆� " + camera.getIp() + ":" + camera.getPort() + " 銆�"); diff --git a/ard-work/src/main/resources/mapper/device/ArdChannelMapper.xml b/ard-work/src/main/resources/mapper/device/ArdChannelMapper.xml index dbac841..0a99fc3 100644 --- a/ard-work/src/main/resources/mapper/device/ArdChannelMapper.xml +++ b/ard-work/src/main/resources/mapper/device/ArdChannelMapper.xml @@ -72,4 +72,7 @@ from ard_channel where device_id = #{deviceId} </delete> + <delete id="clearArdChannel"> + delete from ard_channel + </delete> </mapper> -- Gitblit v1.9.3