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