From 38f29e38fcc668171dc05c53d40a36b895c86102 Mon Sep 17 00:00:00 2001 From: liusuyi <1951119284@qq.com> Date: 星期四, 10 十月 2024 13:34:28 +0800 Subject: [PATCH] init --- ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java | 106 +++++++++++++++++++++++----------------------------- 1 files changed, 47 insertions(+), 59 deletions(-) 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 3957ce6..bb92799 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 @@ -7,45 +7,39 @@ import com.ruoyi.common.config.ARDConfig; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.domain.AjaxResult; -import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.file.FileUtils; import com.ruoyi.common.utils.file.MimeTypeUtils; -import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.common.utils.uuid.IdUtils; -import com.ruoyi.device.camera.factory.CameraSDK; import com.ruoyi.device.camera.domain.ArdCameras; import com.ruoyi.device.camera.domain.CameraCmd; +import com.ruoyi.device.camera.factory.CameraSDK; import com.ruoyi.device.camera.service.IArdCamerasService; import com.ruoyi.device.camera.service.ICameraSdkService; import com.ruoyi.device.channel.domain.ArdChannel; import com.ruoyi.device.channel.service.IArdChannelService; -import com.ruoyi.media.domain.Vtdu; import com.ruoyi.media.service.IVtduService; import com.ruoyi.utils.gis.GisUtil; import com.ruoyi.utils.minio.MinioUtil; import com.ruoyi.utils.sdk.common.GlobalVariable; -import com.ruoyi.utils.sdk.common.SdkErrorCodeEnum; import com.ruoyi.utils.sdk.dhsdk.common.ErrorCode; import com.ruoyi.utils.sdk.dhsdk.lib.NetSDKLib; -import com.ruoyi.utils.sdk.dhsdk.lib.ToolKits; import com.ruoyi.utils.sdk.dhsdk.lib.enumeration.EM_NEW_CONFIG; import com.ruoyi.utils.sdk.dhsdk.lib.enumeration.NET_EM_CFG_OPERATE_TYPE; import com.ruoyi.utils.sdk.dhsdk.lib.structure.CFG_INFRARED_INFO; import com.ruoyi.utils.sdk.dhsdk.lib.structure.CFG_VIDEO_IN_FOCUS; import com.ruoyi.utils.sdk.dhsdk.lib.structure.DH_OUT_PTZ_VIEW_RANGE_STATUS; import com.ruoyi.utils.sdk.dhsdk.module.*; -import com.sun.jna.Native; import com.sun.jna.Pointer; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +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 javax.servlet.ServletOutputStream; -import javax.servlet.http.HttpServletResponse; import java.io.*; -import java.nio.ByteBuffer; import java.nio.file.Files; import java.nio.file.Paths; import java.text.DecimalFormat; @@ -53,7 +47,6 @@ import java.util.concurrent.PriorityBlockingQueue; import static com.ruoyi.utils.sdk.dhsdk.lib.NetSDKLib.*; -import static com.ruoyi.utils.sdk.dhsdk.lib.NetSDKLib.NET_DEVSTATE_PTZ_VIEW_RANGE; import static com.ruoyi.utils.sdk.dhsdk.lib.NetSDKLib.NET_PTZ_ControlType.NET_PTZ_POINT_MOVE_CONTROL; import static com.ruoyi.utils.sdk.dhsdk.lib.NetSDKLib.NET_PTZ_ControlType.NET_PTZ_POINT_SET_CONTROL; import static com.ruoyi.utils.sdk.dhsdk.lib.ToolKits.getErrorCodePrint; @@ -88,6 +81,11 @@ // 缃戠粶杩炴帴鎭㈠ private static HaveReConnect haveReConnect = new HaveReConnect(); + @PostConstruct + public void initSdk() { + log.info("鍒濆鍖栧ぇ鍗巗dk"); + LoginModule.init(disConnect, haveReConnect); + } /** * 鐧诲綍 @@ -99,24 +97,23 @@ @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) { camera.setChanNum(0); - camera.setLoginId(-1); + camera.setLoginId(-1l); camera.setState("0"); 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()); camera.setState("1"); camera.setChanNum(m_stDeviceInfo.byChanNum); - camera.setStartDChan(1); - camera.setLoginId((int) loginId.longValue()); + camera.setStartChan(1); + camera.setLoginId(loginId.longValue()); GlobalVariable.loginMap.put(camera.getId(), loginId); //鑾峰彇鏈�鏂伴�氶亾 List<ArdChannel> ardChannelList = getChannels(camera); @@ -125,14 +122,15 @@ ardChannelList.stream().forEach(channel -> { ardChannelService.insertArdChannel(channel); }); - camera.setChanNum(ardChannelList.size()); camera.setChannelList(ardChannelList); - ardCamerasService.updateArdCameras(camera); - //閰嶇疆鍒版祦濯掍綋 - addVtdu(camera); + //閫氶亾鎵归噺娣诲姞鍒版祦濯掍綋 + batchAddVtdu(camera); } + ardCamerasService.updateArdCameras(camera); //鍒涘缓寮曞闃熷垪 createGuideQueue(camera); + //鍔犲叆宸茬櫥褰曡澶囬泦鍚� + GlobalVariable.loginedSet.add(camera); return AjaxResult.success("璁惧鐧诲綍鎴愬姛"); } catch (Exception ex) { log.error("璁惧鐧诲綍寮傚父:" + ex.getMessage()); @@ -141,26 +139,26 @@ } @Override - @Async("loginExecutor") + @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) { camera.setChanNum(0); - camera.setLoginId(-1); + camera.setLoginId(-1l); camera.setState("0"); 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); camera.setState("1"); camera.setChanNum(m_stDeviceInfo.byChanNum); - camera.setStartDChan(1); - camera.setLoginId((int) loginId.longValue()); + camera.setStartChan(1); + camera.setLoginId(loginId.longValue()); ardCamerasService.updateArdCameras(camera); GlobalVariable.loginMap.put(camera.getId(), loginId); @@ -171,14 +169,15 @@ ardChannelList.stream().forEach(channel -> { ardChannelService.insertArdChannel(channel); }); - camera.setChanNum(ardChannelList.size()); camera.setChannelList(ardChannelList); - ardCamerasService.updateArdCameras(camera); - //閰嶇疆鍒版祦濯掍綋 - addVtdu(camera); + //閫氶亾鎵归噺娣诲姞鍒版祦濯掍綋 + batchAddVtdu(camera); } + ardCamerasService.updateArdCameras(camera); //鍒涘缓寮曞闃熷垪 createGuideQueue(camera); + //鍔犲叆宸茬櫥褰曡澶囬泦鍚� + GlobalVariable.loginedSet.add(camera); return AjaxResult.success("鐧诲綍鎴愬姛"); } catch (Exception ex) { log.error("鐧诲綍寮傚父:" + ex.getMessage()); @@ -186,35 +185,13 @@ } } - //娣诲姞鍒版祦濯掍綋 - private void addVtdu(ArdCameras camera) { + //閫氶亾鎵归噺娣诲姞鍒版祦濯掍綋 + public void batchAddVtdu(ArdCameras camera) { camera.getChannelList().stream().forEach(channel -> { - String name = camera.getId() + "_" + channel.getChanNo(); - String rtspSource = "rtsp://" + camera.getUsername() + ":" + camera.getPassword() + "@" + camera.getIp() + ":" + camera.getRtspPort() + "/cam/realmonitor?channel=" + channel.getChanNo() + "&subtype=0"; - //鍒犻櫎娴佸獟浣� - if (vtduService.selectVtduByName(name) != null) { - vtduService.deleteVtduByName(name); - } - //娣诲姞鍒版祦濯掍綋 - CameraCmd cmd = new CameraCmd(camera.getId(), channel.getChanNo()); - Map<String, Object> videoCompressionCfg = getVideoCompressionCfg(cmd); - Vtdu vtdu = new Vtdu(); - if (videoCompressionCfg.get("videoEncType") != null) { - if (videoCompressionCfg.get("videoEncType").equals("鏍囧噯h264")) { - vtdu.setIsCode("0");//榛樿涓嶈浆鐮� - } else { - vtdu.setIsCode("1");//榛樿杞爜 - } - } else { - vtdu.setIsCode("0");//榛樿涓嶈浆鐮� - } - vtdu.setRtspSource(rtspSource); - vtdu.setName(name); - vtdu.setMode("1");//榛樿CPU杞В鐮� - vtdu.setCameraId(camera.getId()); - vtduService.insertVtdu(vtdu); + vtduService.addChanToVtdu(camera, channel); }); } + //鍒涘缓寮曞闃熷垪 private void createGuideQueue(ArdCameras camera) { @@ -231,12 +208,14 @@ //鑾峰彇閫氶亾 public List<ArdChannel> getChannels(ArdCameras camera) { + if (camera.getLoginId() < 0) { + return new ArrayList<>(); + } LLong loginId = new LLong(camera.getLoginId()); List<ArdChannel> ardChannelList = new ArrayList<>(); for (int i = 1; i < camera.getChanNum() + 1; i++) { ArdChannel channel = new ArdChannel(); - String chanName = ConfigModule.getChannelName(loginId, i - 1).trim(); - log.debug("鑾峰彇閫氶亾鍚嶇О锛�" + chanName); + String chanName = ConfigModule.getChannelName(loginId, i).trim(); channel.setName(chanName.equals("") ? "閫氶亾" + i : chanName); channel.setDeviceId(camera.getId()); channel.setChanNo(i); @@ -656,6 +635,15 @@ GlobalVariable.previewMap.remove(cameraId); } log.debug("褰曞儚鍋滄"); + //瀛樺叆minio + String BucketName = "record"; + String ObjectName = IdUtils.fastSimpleUUID() + ".mp4"; + FileInputStream stream = new FileInputStream(path); + boolean b = MinioUtil.uploadObject(BucketName, ObjectName, stream, stream.available(), "video/MP4"); + if (b) { + url = MinioUtil.getBucketObjectUrl(BucketName, ObjectName); + log.debug("涓婁紶鏂囦欢鎴愬姛!" + url); + } } return url; } catch (Exception ex) { -- Gitblit v1.9.3