|
|
@ -27,6 +27,7 @@ import java.io.InputStream; |
|
|
import java.nio.file.Files; |
|
|
import java.nio.file.Files; |
|
|
import java.nio.file.Path; |
|
|
import java.nio.file.Path; |
|
|
import java.nio.file.Paths; |
|
|
import java.nio.file.Paths; |
|
|
|
|
|
import java.nio.file.StandardCopyOption; |
|
|
import java.util.ArrayList; |
|
|
import java.util.ArrayList; |
|
|
import java.util.Date; |
|
|
import java.util.Date; |
|
|
import java.util.List; |
|
|
import java.util.List; |
|
|
@ -51,14 +52,19 @@ public class IvsCameraServiceImpl implements IvsCameraService { |
|
|
@Override |
|
|
@Override |
|
|
public PtzControlResult ptzControl(PtzControlParam param) { |
|
|
public PtzControlResult ptzControl(PtzControlParam param) { |
|
|
|
|
|
|
|
|
Camera camera = new Camera(); |
|
|
|
|
|
|
|
|
Camera camera = new Camera(); |
|
|
//赋值 |
|
|
//赋值 |
|
|
|
|
|
|
|
|
|
|
|
camera.setIp("192.168.1.249"); |
|
|
|
|
|
camera.setPort(8000); |
|
|
|
|
|
camera.setUserName("admin"); |
|
|
|
|
|
camera.setPassword("htjc2018"); |
|
|
|
|
|
camera.setChannel(39); |
|
|
|
|
|
camera.setPointNum(1); |
|
|
|
|
|
|
|
|
lUserID = (Integer) redisService.redisTemplate.opsForValue().get(camera.getIp() + "_userId"); |
|
|
lUserID = (Integer) redisService.redisTemplate.opsForValue().get(camera.getIp() + "_userId"); |
|
|
|
|
|
|
|
|
if (ObjectUtil.isEmpty(lUserID)){ |
|
|
|
|
|
NvrInfo nvrInfo= new NvrInfo(); |
|
|
|
|
|
|
|
|
if (ObjectUtil.isEmpty(lUserID)) { |
|
|
|
|
|
NvrInfo nvrInfo = new NvrInfo(); |
|
|
nvrInfo.setNvrIp(camera.getIp()); |
|
|
nvrInfo.setNvrIp(camera.getIp()); |
|
|
nvrInfo.setServerPort(camera.getPort()); |
|
|
nvrInfo.setServerPort(camera.getPort()); |
|
|
nvrInfo.setAccount(camera.getUserName()); |
|
|
nvrInfo.setAccount(camera.getUserName()); |
|
|
@ -89,8 +95,49 @@ public class IvsCameraServiceImpl implements IvsCameraService { |
|
|
@Override |
|
|
@Override |
|
|
public SnapshotCommandResult platformSnapshot(String cameraCode, String domainCode, SnapshotCommandParam param) { |
|
|
public SnapshotCommandResult platformSnapshot(String cameraCode, String domainCode, SnapshotCommandParam param) { |
|
|
|
|
|
|
|
|
Camera camera = new Camera(); |
|
|
|
|
|
|
|
|
SnapshotCommandResult snapshotCommandResult = |
|
|
|
|
|
SnapshotCommandResult.builder() |
|
|
|
|
|
.taskID("0123456789") |
|
|
|
|
|
.build(); |
|
|
|
|
|
return snapshotCommandResult; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
public SnapshotInfoListResult getSnapshotList(SnapshotInfoListParam param) { |
|
|
|
|
|
SnapshotInfoListResult.SnapshotInfoList snapshotInfoList = new SnapshotInfoListResult.SnapshotInfoList(); |
|
|
|
|
|
List<SnapshotInfoListResult.SnapshotInfo> infoList = new ArrayList<>(); |
|
|
|
|
|
infoList.add( |
|
|
|
|
|
SnapshotInfoListResult.SnapshotInfo.builder() |
|
|
|
|
|
.pictureUrl("http://192.168.1.172:18539/downloadfile?filesessionid=HQ3HLF98QI6T645DSNVO4S066S00") |
|
|
|
|
|
.cameraCode("01969538357008970118") |
|
|
|
|
|
.build()); |
|
|
|
|
|
snapshotInfoList.setTotal(1); |
|
|
|
|
|
snapshotInfoList.setSnapshotInfos(infoList); |
|
|
|
|
|
SnapshotInfoListResult snapshotInfoListResult = |
|
|
|
|
|
SnapshotInfoListResult.builder() |
|
|
|
|
|
.snapshotInfoList(snapshotInfoList) |
|
|
|
|
|
.build(); |
|
|
|
|
|
return snapshotInfoListResult; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
public ByteArrayInputStream downloadFile(String fileSessionId) { |
|
|
|
|
|
if (testMode) { |
|
|
|
|
|
try { |
|
|
|
|
|
return new ByteArrayInputStream(loadDefaultImage()); |
|
|
|
|
|
} catch (IOException e) { |
|
|
|
|
|
throw new RuntimeException("测试环境生成错误图片失败", e); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 从nvr或者camera下载图片, 开发中 |
|
|
|
|
|
Camera camera = new Camera(); |
|
|
//赋值 |
|
|
//赋值 |
|
|
|
|
|
camera.setIp("192.168.1.195"); |
|
|
|
|
|
camera.setPort(8000); |
|
|
|
|
|
camera.setUserName("admin"); |
|
|
|
|
|
camera.setPassword("htjc2018"); |
|
|
|
|
|
camera.setChannel(2); |
|
|
|
|
|
|
|
|
//从redis中获取lUserID(存在时间200) |
|
|
//从redis中获取lUserID(存在时间200) |
|
|
lUserID = (Integer) redisService.redisTemplate.opsForValue().get(camera.getIp() + "_userId"); |
|
|
lUserID = (Integer) redisService.redisTemplate.opsForValue().get(camera.getIp() + "_userId"); |
|
|
@ -114,65 +161,36 @@ public class IvsCameraServiceImpl implements IvsCameraService { |
|
|
|
|
|
|
|
|
// 2. 创建临时存储目录(系统临时目录更安全) |
|
|
// 2. 创建临时存储目录(系统临时目录更安全) |
|
|
Path tempDir = Paths.get(System.getProperty("java.io.tmpdir"), "hik_capture"); |
|
|
Path tempDir = Paths.get(System.getProperty("java.io.tmpdir"), "hik_capture"); |
|
|
|
|
|
// 生成唯一文件名(IP+时间戳) |
|
|
|
|
|
String fileName = String.format("%s_%s.jpg", camera.getIp(), DateUtils.dateTimeNow("yyyyMMddHHmmss")); |
|
|
|
|
|
Path tempImagePath = tempDir.resolve(fileName); |
|
|
try { |
|
|
try { |
|
|
if (!Files.exists(tempDir)) { |
|
|
if (!Files.exists(tempDir)) { |
|
|
Files.createDirectories(tempDir); |
|
|
Files.createDirectories(tempDir); |
|
|
} |
|
|
} |
|
|
// 3. 生成唯一文件名(IP+时间戳) |
|
|
|
|
|
String fileName = String.format("%s_%s.jpg", camera.getIp(), DateUtils.dateTimeNow("yyyyMMddHHmmss")); |
|
|
|
|
|
Path tempImagePath = tempDir.resolve(fileName); |
|
|
|
|
|
|
|
|
|
|
|
boolean b = hcNetSDK.NET_DVR_CaptureJPEGPicture(lUserID, camera.getChannel(), dvrJpegpara, |
|
|
boolean b = hcNetSDK.NET_DVR_CaptureJPEGPicture(lUserID, camera.getChannel(), dvrJpegpara, |
|
|
tempImagePath.toString().getBytes("GBK")); |
|
|
tempImagePath.toString().getBytes("GBK")); |
|
|
if (!b) { |
|
|
if (!b) { |
|
|
System.out.println("设置设备进行抓图失败,错误码:" + hcNetSDK.NET_DVR_GetLastError()); |
|
|
|
|
|
|
|
|
// System.out.println("设置设备进行抓图失败,错误码:" + hcNetSDK.NET_DVR_GetLastError()); |
|
|
|
|
|
log.error("设置设备进行抓图失败,错误码:" + hcNetSDK.NET_DVR_GetLastError()); |
|
|
} |
|
|
} |
|
|
//图片流 |
|
|
//图片流 |
|
|
InputStream inputStream = Files.newInputStream(tempImagePath); |
|
|
InputStream inputStream = Files.newInputStream(tempImagePath); |
|
|
|
|
|
|
|
|
|
|
|
byte[] bytes = StreamUtils.copyToByteArray(inputStream); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 确保删除临时文件 |
|
|
// 确保删除临时文件 |
|
|
Files.deleteIfExists(tempImagePath); |
|
|
Files.deleteIfExists(tempImagePath); |
|
|
|
|
|
|
|
|
|
|
|
return new ByteArrayInputStream(bytes); |
|
|
} catch (Exception e) { |
|
|
} catch (Exception e) { |
|
|
log.error("抓图失败"+e.getMessage()); |
|
|
|
|
|
|
|
|
log.error("抓图失败" + e.getMessage()); |
|
|
|
|
|
return null; |
|
|
} |
|
|
} |
|
|
SnapshotCommandResult snapshotCommandResult = |
|
|
|
|
|
SnapshotCommandResult.builder() |
|
|
|
|
|
.taskID("0123456789") |
|
|
|
|
|
.build(); |
|
|
|
|
|
return snapshotCommandResult; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
public SnapshotInfoListResult getSnapshotList(SnapshotInfoListParam param) { |
|
|
|
|
|
SnapshotInfoListResult.SnapshotInfoList snapshotInfoList = new SnapshotInfoListResult.SnapshotInfoList(); |
|
|
|
|
|
List<SnapshotInfoListResult.SnapshotInfo> infoList = new ArrayList<>(); |
|
|
|
|
|
infoList.add( |
|
|
|
|
|
SnapshotInfoListResult.SnapshotInfo.builder() |
|
|
|
|
|
.pictureUrl("http://192.168.1.172:18539/downloadfile?filesessionid=HQ3HLF98QI6T645DSNVO4S066S00") |
|
|
|
|
|
.cameraCode("01969538357008970118") |
|
|
|
|
|
.build()); |
|
|
|
|
|
snapshotInfoList.setTotal(1); |
|
|
|
|
|
snapshotInfoList.setSnapshotInfos(infoList); |
|
|
|
|
|
SnapshotInfoListResult snapshotInfoListResult = |
|
|
|
|
|
SnapshotInfoListResult.builder() |
|
|
|
|
|
.snapshotInfoList(snapshotInfoList) |
|
|
|
|
|
.build(); |
|
|
|
|
|
return snapshotInfoListResult; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
public ByteArrayInputStream downloadFile(String fileSessionId) { |
|
|
|
|
|
if (testMode) { |
|
|
|
|
|
try { |
|
|
|
|
|
return new ByteArrayInputStream(loadDefaultImage()); |
|
|
|
|
|
} catch (IOException e) { |
|
|
|
|
|
throw new RuntimeException("测试环境生成错误图片失败", e); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 从nvr或者camera下载图片, 开发中 |
|
|
|
|
|
return null; |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public byte[] loadDefaultImage() throws IOException { |
|
|
public byte[] loadDefaultImage() throws IOException { |
|
|
@ -194,7 +212,7 @@ public class IvsCameraServiceImpl implements IvsCameraService { |
|
|
System.out.println(":设备登录成功!" + lUserID); |
|
|
System.out.println(":设备登录成功!" + lUserID); |
|
|
// birdNvrMapper.updateNvrInfo(nvrInfo); |
|
|
// birdNvrMapper.updateNvrInfo(nvrInfo); |
|
|
// redisTemplate.opsForValue().set(nvrInfo.getNvrIp() + "_userId", lUserID); |
|
|
// redisTemplate.opsForValue().set(nvrInfo.getNvrIp() + "_userId", lUserID); |
|
|
redisService.setCacheObject(nvrInfo.getNvrIp() + "_userId", lUserID,200L, TimeUnit.SECONDS); |
|
|
|
|
|
|
|
|
redisService.setCacheObject(nvrInfo.getNvrIp() + "_userId", lUserID, 200L, TimeUnit.SECONDS); |
|
|
//若果设备序列号为空时,即为第一次登陆,写入基础数据 |
|
|
//若果设备序列号为空时,即为第一次登陆,写入基础数据 |
|
|
if (nvrInfo.getNvrSerial() == null || nvrInfo.getNvrSerial().equals("")) { |
|
|
if (nvrInfo.getNvrSerial() == null || nvrInfo.getNvrSerial().equals("")) { |
|
|
m_strDeviceInfo.read(); |
|
|
m_strDeviceInfo.read(); |
|
|
|