Browse Source

/*灵州站红外对接接口调整*/

master
htjcAdmin 5 months ago
parent
commit
7e02d0258e
2 changed files with 72 additions and 11 deletions
  1. +44
    -11
      src/main/java/com/inspect/nvr/service/impl/IvsCameraServiceImpl.java
  2. +28
    -0
      src/main/java/com/inspect/nvr/utils/StringHexConverter.java

+ 44
- 11
src/main/java/com/inspect/nvr/service/impl/IvsCameraServiceImpl.java View File

@ -10,8 +10,10 @@ import com.inspect.nvr.hikVision.utils.jna.HCNetSDK;
import com.inspect.nvr.hikVision.utils.jna.HikVisionUtils; import com.inspect.nvr.hikVision.utils.jna.HikVisionUtils;
import com.inspect.nvr.service.IvsCameraService; import com.inspect.nvr.service.IvsCameraService;
import com.inspect.nvr.utils.DateUtils; import com.inspect.nvr.utils.DateUtils;
import com.inspect.nvr.utils.StringHexConverter;
import com.inspect.nvr.utils.redis.RedisService; import com.inspect.nvr.utils.redis.RedisService;
import com.sun.jna.ptr.IntByReference; import com.sun.jna.ptr.IntByReference;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -33,9 +35,9 @@ import java.util.Date;
import java.util.List; import java.util.List;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@Slf4j
@Service @Service
public class IvsCameraServiceImpl implements IvsCameraService { public class IvsCameraServiceImpl implements IvsCameraService {
private final Logger log = LoggerFactory.getLogger(this.getClass());
@Value("${test-mode:false}") @Value("${test-mode:false}")
private boolean testMode; private boolean testMode;
@ -50,7 +52,7 @@ public class IvsCameraServiceImpl implements IvsCameraService {
@Override @Override
public IvsPresetListView ptzPresetList(String cameraCode, String domainCode) { public IvsPresetListView ptzPresetList(String cameraCode, String domainCode) {
if(testMode) {
if (testMode) {
List<IvsPresetListView.PtzPresetInfo> list = new ArrayList<>(); List<IvsPresetListView.PtzPresetInfo> list = new ArrayList<>();
list.add(IvsPresetListView.PtzPresetInfo list.add(IvsPresetListView.PtzPresetInfo
.builder().presetName("preset").presetIndex(0).focusSwitch(1).reserve("reserve") .builder().presetName("preset").presetIndex(0).focusSwitch(1).reserve("reserve")
@ -70,7 +72,7 @@ public class IvsCameraServiceImpl implements IvsCameraService {
//跳转预置位 //跳转预置位
@Override @Override
public PtzControlResult ptzControl(PtzControlParam param) { public PtzControlResult ptzControl(PtzControlParam param) {
if(testMode) {
if (testMode) {
return PtzControlResult.builder() return PtzControlResult.builder()
.resultCode("0") .resultCode("0")
.build(); .build();
@ -135,9 +137,16 @@ public class IvsCameraServiceImpl implements IvsCameraService {
public SnapshotInfoListResult getSnapshotList(SnapshotInfoListParam param) { public SnapshotInfoListResult getSnapshotList(SnapshotInfoListParam param) {
SnapshotInfoListResult.SnapshotInfoList snapshotInfoList = new SnapshotInfoListResult.SnapshotInfoList(); SnapshotInfoListResult.SnapshotInfoList snapshotInfoList = new SnapshotInfoListResult.SnapshotInfoList();
List<SnapshotInfoListResult.SnapshotInfo> infoList = new ArrayList<>(); List<SnapshotInfoListResult.SnapshotInfo> infoList = new ArrayList<>();
final String rawString = String.join((":"), param.getAddress(), param.getUsername(), param.getPassword());
final String hexString = StringHexConverter.toHex(rawString);
String[] addressArray = param.getAddress().split(":");
final String pictureUrl = "http://" + addressArray[0] + ":" + addressArray[1] + "/downloadfile?filesessionid=" + hexString;
log.info("GET_SNAPSHOT_LIST rawString: {}, hexString: {}, pictureUrl: {}", rawString, hexString, pictureUrl);
infoList.add( infoList.add(
SnapshotInfoListResult.SnapshotInfo.builder() SnapshotInfoListResult.SnapshotInfo.builder()
.pictureUrl("http://192.168.1.172:18539/downloadfile?filesessionid=" + param.getTaskID())
.pictureUrl(pictureUrl)
.cameraCode(param.getCameraCode()) .cameraCode(param.getCameraCode())
.build()); .build());
snapshotInfoList.setTotal(1); snapshotInfoList.setTotal(1);
@ -152,6 +161,8 @@ public class IvsCameraServiceImpl implements IvsCameraService {
@Override @Override
public ByteArrayInputStream downloadFile(String fileSessionId) { public ByteArrayInputStream downloadFile(String fileSessionId) {
final String rawString = StringHexConverter.fromHex(fileSessionId);
log.info("DOWNLOAD_FILE hexString: {}, rawString: {}", fileSessionId, rawString);
if (testMode) { if (testMode) {
try { try {
return new ByteArrayInputStream(loadDefaultImage()); return new ByteArrayInputStream(loadDefaultImage());
@ -160,14 +171,38 @@ public class IvsCameraServiceImpl implements IvsCameraService {
} }
} }
String[] cameraAddressInfos = rawString.split((":"));
if (cameraAddressInfos.length != 6) {
log.error("DOWNLOAD_FILE ADDRESS INFO ERROR rawString: {}", rawString);
try {
return new ByteArrayInputStream(loadDefaultImage());
} catch (IOException e) {
throw new RuntimeException("测试环境生成错误图片失败2", e);
}
}
// 从nvr或者camera下载图片, 开发中 // 从nvr或者camera下载图片, 开发中
Camera camera = new Camera(); Camera camera = new Camera();
//赋值 //赋值
camera.setIp("192.168.1.231");
camera.setPort(8000);
camera.setUserName("admin");
camera.setPassword("2016.h.BD");
camera.setChannel(11);
// camera.setIp("192.168.1.231");
// camera.setPort(8000);
// camera.setUserName("admin");
// camera.setPassword("2016.h.BD");
// camera.setChannel(11);
log.info("DOWNLOAD_FILE ip: {}, port: {}, username: {}, password: {}, channel: {}, pointName: {}",
cameraAddressInfos[0],
cameraAddressInfos[1],
cameraAddressInfos[2],
cameraAddressInfos[3],
cameraAddressInfos[4],
cameraAddressInfos[5]);
camera.setIp(cameraAddressInfos[0]);
camera.setPort(Integer.parseInt(cameraAddressInfos[1]));
camera.setUserName(cameraAddressInfos[2]);
camera.setPassword(cameraAddressInfos[3]);
camera.setChannel(Integer.parseInt(cameraAddressInfos[4]));
camera.setPointNum(Integer.parseInt(cameraAddressInfos[5]));
//从redis中获取lUserID(存在时间200) //从redis中获取lUserID(存在时间200)
lUserID = (Integer) redisService.redisTemplate.opsForValue().get(camera.getIp() + "_userId"); lUserID = (Integer) redisService.redisTemplate.opsForValue().get(camera.getIp() + "_userId");
@ -211,8 +246,6 @@ public class IvsCameraServiceImpl implements IvsCameraService {
byte[] bytes = StreamUtils.copyToByteArray(inputStream); byte[] bytes = StreamUtils.copyToByteArray(inputStream);
// 确保删除临时文件 // 确保删除临时文件
Files.deleteIfExists(tempImagePath); Files.deleteIfExists(tempImagePath);


+ 28
- 0
src/main/java/com/inspect/nvr/utils/StringHexConverter.java View File

@ -0,0 +1,28 @@
package com.inspect.nvr.utils;
import lombok.extern.slf4j.Slf4j;
import java.nio.charset.StandardCharsets;
@Slf4j
public class StringHexConverter {
// 字符串 -> 十六进制字符串
public static String toHex(String input) {
byte[] bytes = input.getBytes(StandardCharsets.UTF_8);
StringBuilder hex = new StringBuilder(bytes.length * 2);
for (byte b : bytes) {
hex.append(String.format("%02x", b));
}
return hex.toString();
}
// 十六进制字符串 -> 原始字符串
public static String fromHex(String hex) {
int length = hex.length();
byte[] bytes = new byte[length / 2];
for (int i = 0; i < length; i += 2) {
bytes[i / 2] = (byte) Integer.parseInt(hex.substring(i, i + 2), 16);
}
return new String(bytes, StandardCharsets.UTF_8);
}
}

Loading…
Cancel
Save