diff --git a/src/main/java/com/inspect/nvr/controller/CameraController.java b/src/main/java/com/inspect/nvr/controller/CameraController.java index f0f15e4..e44d647 100644 --- a/src/main/java/com/inspect/nvr/controller/CameraController.java +++ b/src/main/java/com/inspect/nvr/controller/CameraController.java @@ -1,29 +1,18 @@ package com.inspect.nvr.controller; - -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; import com.inspect.nvr.domain.Infrared.Camera; import com.inspect.nvr.domain.Infrared.TemperatureData; -import com.inspect.nvr.domain.device.PtzControlParam; +import com.inspect.nvr.enums.CameraEnum; import com.inspect.nvr.hikVision.utils.AjaxResult; import com.inspect.nvr.service.DahuaService; import com.inspect.nvr.service.HikVisionService; import com.inspect.nvr.service.IvsCameraService; -import com.inspect.nvr.utils.StringUtils; import com.inspect.nvr.utils.redis.RedisService; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; -import org.springframework.util.StreamUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.io.ByteArrayInputStream; -import java.io.InputStream; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; import java.util.concurrent.*; import java.util.function.Supplier; @@ -56,13 +45,15 @@ public class CameraController { public TemperatureData cameraHong(@RequestBody Camera camera) throws InterruptedException { log.info("红外开始===================================》》》》》"); TemperatureData temperatureData = null; - if(0 == camera.getCameraType()){ + if(CameraEnum.HIKVISION.getCode() == camera.getCameraType()){ temperatureData = executeWithTimeout(() -> cameraService.StartRemote(camera), 7, TimeUnit.SECONDS); // temperatureData = cameraService.StartRemote(camera); } else { temperatureData = dahuaService.StartRemote(camera); } - redisService.setCacheObject(camera.getIp() +'_'+ camera.getPresetId(), temperatureData, 14400L, TimeUnit.SECONDS); + String redisKey = camera.getIp() +'_'+ camera.getPresetId(); + log.info("红外结束, redisKey: {}, temperatureData: {}", redisKey, temperatureData); + redisService.setCacheObject(redisKey, temperatureData, 14400L, TimeUnit.SECONDS); return temperatureData; } diff --git a/src/main/java/com/inspect/nvr/enums/CameraEnum.java b/src/main/java/com/inspect/nvr/enums/CameraEnum.java new file mode 100644 index 0000000..f44d44a --- /dev/null +++ b/src/main/java/com/inspect/nvr/enums/CameraEnum.java @@ -0,0 +1,21 @@ +package com.inspect.nvr.enums; + +/** + * 相机类型枚举 + */ +public enum CameraEnum { + // 大华 + HIKVISION(0), + // 海康威视 + DAHUA(1); + + private int code; + + CameraEnum(int code) { + this.code = code; + } + + public int getCode() { + return code; + } +} diff --git a/src/main/java/com/inspect/nvr/service/CommonCameraService.java b/src/main/java/com/inspect/nvr/service/CommonCameraService.java index 83648fd..f59bc18 100644 --- a/src/main/java/com/inspect/nvr/service/CommonCameraService.java +++ b/src/main/java/com/inspect/nvr/service/CommonCameraService.java @@ -99,7 +99,7 @@ public class CommonCameraService { } }); } catch (Exception e) { - log.error("Digest认证抓图失败:{}", e.getMessage()); + log.error("Digest认证抓图失败:", e); } return null; } diff --git a/src/main/java/com/inspect/nvr/service/DahuaCameraService.java b/src/main/java/com/inspect/nvr/service/DahuaCameraService.java index 4a08a20..16b77ca 100644 --- a/src/main/java/com/inspect/nvr/service/DahuaCameraService.java +++ b/src/main/java/com/inspect/nvr/service/DahuaCameraService.java @@ -128,7 +128,7 @@ public class DahuaCameraService extends CommonCameraService { Files.write(fullPath, byteArray); return byteArray; } catch (TimeoutException e) { - log.error("[大华]抓图超时:在{}秒内未收到设备回调", TIMEOUT_SEC); + log.error("[大华]抓图超时:在 {} 秒内未收到设备回调,requestKey={}", TIMEOUT_SEC, requestKey); } catch (Exception e) { log.error("[大华]抓图异常:", e); } finally { @@ -154,7 +154,7 @@ public class DahuaCameraService extends CommonCameraService { String requestKey = lLoginID.longValue() + ":" + CmdSerial; CompletableFuture future = PENDING_REQUESTS.remove(requestKey); if (future != null) { - log.error("[大华]匹配到抓图回调,LoginID={}, Serial={}", lLoginID, CmdSerial); + log.info("[大华]匹配到抓图回调,LoginID={}, Serial={}", lLoginID, CmdSerial); if (pBuf != null && RevLen > 0) { // 2. 读取图片数据 byte[] data = pBuf.getByteArray(0, RevLen); diff --git a/src/main/java/com/inspect/nvr/service/HikCameraService.java b/src/main/java/com/inspect/nvr/service/HikCameraService.java index 40d3d26..a3e2fdf 100644 --- a/src/main/java/com/inspect/nvr/service/HikCameraService.java +++ b/src/main/java/com/inspect/nvr/service/HikCameraService.java @@ -225,7 +225,7 @@ public class HikCameraService extends CommonCameraService { return future.get(TIMEOUT_SEC, TimeUnit.SECONDS); } catch (TimeoutException e) { - log.error("[海康]测温超时:在 " + TIMEOUT_SEC + " 秒内未收到设备回调"); + log.error("[海康]测温超时:在 {} 秒内未收到设备回调,requestId={}", TIMEOUT_SEC, requestId); } catch (Exception e) { log.error("[海康]测温异常:{}", e.getMessage()); } finally { @@ -252,7 +252,7 @@ public class HikCameraService extends CommonCameraService { pmt.write(0, lpBuffer.getByteArray(0, thermometryUpload.size()), 0, thermometryUpload.size()); thermometryUpload.read(); - String strTemp = "规则ID:" + thermometryUpload.byRuleID + "规则名称:" + thermometryUpload.szRuleName + "规则类型:" + thermometryUpload.byRuleCalibType + "预置点号:" + thermometryUpload.wPresetNo + "点温度:" + thermometryUpload.struPointThermCfg.fTemperature + "点坐标:" + thermometryUpload.struPointThermCfg.struPoint.fX + "," + thermometryUpload.struPointThermCfg.struPoint.fY + "区域最高温度:" + thermometryUpload.struLinePolygonThermCfg.fMaxTemperature + "区域最低温度:" + thermometryUpload.struLinePolygonThermCfg.fMinTemperature + "区域平均温度:" + thermometryUpload.struLinePolygonThermCfg.fAverageTemperature + "区域温差:" + thermometryUpload.struLinePolygonThermCfg.fTemperatureDiff + "\n"; + String strTemp = "规则ID:" + thermometryUpload.byRuleID + "规则名称:" + thermometryUpload.szRuleName + "规则类型:" + thermometryUpload.byRuleCalibType + "预置点号:" + thermometryUpload.wPresetNo + "点,温度:" + thermometryUpload.struPointThermCfg.fTemperature + "点坐标:" + thermometryUpload.struPointThermCfg.struPoint.fX + "," + thermometryUpload.struPointThermCfg.struPoint.fY + "区域最高温度:" + thermometryUpload.struLinePolygonThermCfg.fMaxTemperature + "区域最低温度:" + thermometryUpload.struLinePolygonThermCfg.fMinTemperature + "区域平均温度:" + thermometryUpload.struLinePolygonThermCfg.fAverageTemperature + "区域温差:" + thermometryUpload.struLinePolygonThermCfg.fTemperatureDiff + "\n"; log.info("[海康]实时测温成功,requestId={}, data={}", requestId, strTemp); HCNetSDK.NET_DVR_LINEPOLYGON_THERM_CFG struLinePolygonThermCfg = thermometryUpload.struLinePolygonThermCfg; diff --git a/src/main/java/com/inspect/nvr/service/impl/HikVisionServiceImpl.java b/src/main/java/com/inspect/nvr/service/impl/HikVisionServiceImpl.java index 7f75825..7d8db5f 100644 --- a/src/main/java/com/inspect/nvr/service/impl/HikVisionServiceImpl.java +++ b/src/main/java/com/inspect/nvr/service/impl/HikVisionServiceImpl.java @@ -238,6 +238,7 @@ public class HikVisionServiceImpl implements HikVisionService { /** * @deprecated 实时测温接口,获取最高温和最低温 + * use {@link #StartRemote(Camera)} instead */ @Deprecated public TemperatureData StartRemoteOld(Camera camera) { diff --git a/src/main/java/com/inspect/nvr/service/impl/IvsCameraServiceImpl.java b/src/main/java/com/inspect/nvr/service/impl/IvsCameraServiceImpl.java index 2ee3bcb..19c26ee 100644 --- a/src/main/java/com/inspect/nvr/service/impl/IvsCameraServiceImpl.java +++ b/src/main/java/com/inspect/nvr/service/impl/IvsCameraServiceImpl.java @@ -6,6 +6,7 @@ import com.inspect.nvr.domain.Infrared.Camera; import com.inspect.nvr.domain.Infrared.NvrInfo; import com.inspect.nvr.domain.Infrared.TemperatureData; import com.inspect.nvr.domain.device.*; +import com.inspect.nvr.enums.CameraEnum; import com.inspect.nvr.hikVision.utils.AjaxResult; import com.inspect.nvr.hikVision.utils.StringUtils; import com.inspect.nvr.hikVision.utils.jna.HCNetSDK; @@ -396,7 +397,7 @@ public class IvsCameraServiceImpl implements IvsCameraService { nvrInfo.setAccount(camera.getUserName()); nvrInfo.setPassword(camera.getPassword()); - if (ObjectUtil.equals(camera.getCameraType(), 1)) { + if (CameraEnum.DAHUA.getCode() == camera.getCameraType()) { log.info("大华相机抓图"); byte[] bytes = dahuaCameraService.capture(nvrInfo, camera.getChannel()); return new ByteArrayInputStream(bytes); @@ -428,7 +429,7 @@ public class IvsCameraServiceImpl implements IvsCameraService { nvrInfo.setAccount(camera.getUserName()); nvrInfo.setPassword(camera.getPassword()); - if (ObjectUtil.equals(camera.getCameraType(), 1)) { + if (CameraEnum.DAHUA.getCode() == camera.getCameraType()) { log.info("大华相机Digest抓图"); byte[] bytes = dahuaCameraService.captureDigest(nvrInfo, camera.getChannel()); return bytes;