Browse Source

refactor: 完善相机取温抓拍日志

master
yinhuaiwei 4 weeks ago
parent
commit
5d88ac1970
7 changed files with 35 additions and 21 deletions
  1. +5
    -14
      src/main/java/com/inspect/nvr/controller/CameraController.java
  2. +21
    -0
      src/main/java/com/inspect/nvr/enums/CameraEnum.java
  3. +1
    -1
      src/main/java/com/inspect/nvr/service/CommonCameraService.java
  4. +2
    -2
      src/main/java/com/inspect/nvr/service/DahuaCameraService.java
  5. +2
    -2
      src/main/java/com/inspect/nvr/service/HikCameraService.java
  6. +1
    -0
      src/main/java/com/inspect/nvr/service/impl/HikVisionServiceImpl.java
  7. +3
    -2
      src/main/java/com/inspect/nvr/service/impl/IvsCameraServiceImpl.java

+ 5
- 14
src/main/java/com/inspect/nvr/controller/CameraController.java View File

@ -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;
}


+ 21
- 0
src/main/java/com/inspect/nvr/enums/CameraEnum.java View File

@ -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;
}
}

+ 1
- 1
src/main/java/com/inspect/nvr/service/CommonCameraService.java View File

@ -99,7 +99,7 @@ public class CommonCameraService {
}
});
} catch (Exception e) {
log.error("Digest认证抓图失败:{}", e.getMessage());
log.error("Digest认证抓图失败:", e);
}
return null;
}


+ 2
- 2
src/main/java/com/inspect/nvr/service/DahuaCameraService.java View File

@ -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<byte[]> 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);


+ 2
- 2
src/main/java/com/inspect/nvr/service/HikCameraService.java View File

@ -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;


+ 1
- 0
src/main/java/com/inspect/nvr/service/impl/HikVisionServiceImpl.java View File

@ -238,6 +238,7 @@ public class HikVisionServiceImpl implements HikVisionService {
/**
* @deprecated 实时测温接口获取最高温和最低温
* use {@link #StartRemote(Camera)} instead
*/
@Deprecated
public TemperatureData StartRemoteOld(Camera camera) {


+ 3
- 2
src/main/java/com/inspect/nvr/service/impl/IvsCameraServiceImpl.java View File

@ -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;


Loading…
Cancel
Save