diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/common/hikvision/HikvisionSnapshotUtil.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/common/hikvision/HikvisionSnapshotUtil.java index dfd8d8a..96ae4a0 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/common/hikvision/HikvisionSnapshotUtil.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/common/hikvision/HikvisionSnapshotUtil.java @@ -8,6 +8,10 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import java.io.File; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + @Service @Slf4j @@ -91,81 +95,59 @@ public class HikvisionSnapshotUtil { public short wPicQuality; } - //HCNetSDK 抓图,图片路径允许指定,不指定则走配置 - public static SdkResponse 截图(String imageName) { - String imagePath = "D://vehicle/" + DateUtil.thisYear(); + public static void sync截图(String imageName, String taskCode) { if (StringUtils.isEmpty(imageName)) { - return SdkResponse.requestFail("图片名称未知"); + log.warn("图片名称未定义"); + return; } - String sFileUrl = imagePath + "\\" + imageName; - if (!HCNetSDK.INSTANCE.NET_DVR_Init()) { - return SdkResponse.requestFail("[SDK] 初始化失败"); + LocalDate now = LocalDate.now(); + String datePath = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + + String imagePath = "C:" + File.separator + "software" + File.separator + "wms" + File.separator + "images" + File.separator + datePath; + + File dir = new File(imagePath); + if (!dir.exists()) { + dir.mkdirs(); } + + String sFileUrl = imagePath + File.separator + imageName + "_" + taskCode + ".jpg"; + + if (!HCNetSDK.INSTANCE.NET_DVR_Init()) { + log.warn("[SDK] 初始化失败"); + return; + } + NET_DVR_DEVICEINFO_V30 deviceInfo = new NET_DVR_DEVICEINFO_V30(); int userId = HCNetSDK.INSTANCE.NET_DVR_Login_V30(ip, port, username, password, deviceInfo); if (userId < 0) { - System.err.println("[SDK] 登录失败"); + log.warn("[SDK] 登录失败"); HCNetSDK.INSTANCE.NET_DVR_Cleanup(); - return SdkResponse.requestFail("[SDK] 登录失败"); + return; } NET_DVR_JPEGPARA jpegPara = new NET_DVR_JPEGPARA(); - // D1 jpegPara.wPicSize = 2; - // 一般质量 jpegPara.wPicQuality = 0; - //命名规则:任务号+载具号+时间.jpg - boolean result = HCNetSDK.INSTANCE.NET_DVR_CaptureJPEGPicture(userId, channel, jpegPara, sFileUrl); - if (!result) { - result = HCNetSDK.INSTANCE.NET_DVR_CaptureJPEGPicture(userId, channel, jpegPara, sFileUrl); + + try { + boolean result = HCNetSDK.INSTANCE.NET_DVR_CaptureJPEGPicture(userId, channel, jpegPara, sFileUrl); if (result) { - System.out.println("[SDK] 抓图成功,保存为 snapshot_sdk.jpg"); + log.info("[SDK] 抓图成功: " + sFileUrl); } else { - System.err.println("[SDK] 抓图失败"); + // 失败重试一次 + result = HCNetSDK.INSTANCE.NET_DVR_CaptureJPEGPicture(userId, channel, jpegPara, sFileUrl); + if (result) { + log.info("[SDK] 抓图成功(第二次尝试): " + sFileUrl); + } else { + log.warn("[SDK] 抓图失败: " + sFileUrl); + } } + } finally { + HCNetSDK.INSTANCE.NET_DVR_Logout(userId); + HCNetSDK.INSTANCE.NET_DVR_Cleanup(); } - HCNetSDK.INSTANCE.NET_DVR_Logout(userId); - HCNetSDK.INSTANCE.NET_DVR_Cleanup(); - return result ? SdkResponse.requestOk() : SdkResponse.requestFail("[SDK] 最终抓图失败"); } - public static void sync截图(String imageName, String taskCode) { - if (StringUtils.isEmpty(imageName)) { - log.warn("图片名称未定义"); - } - String imagePath = HikvisionSnapshotUtil.path + DateUtil.thisYear(); - String sFileUrl = imagePath + "\\" + imageName + "_" + taskCode; - String newFileUrl = imagePath + "\\" + imageName; - if (!HCNetSDK.INSTANCE.NET_DVR_Init()) { - } - NET_DVR_DEVICEINFO_V30 deviceInfo = new NET_DVR_DEVICEINFO_V30(); - int userId = HCNetSDK.INSTANCE.NET_DVR_Login_V30(ip, port, username, password, deviceInfo); - if (userId < 0) { - log.warn("[SDK] 登录失败"); - HCNetSDK.INSTANCE.NET_DVR_Cleanup(); - } - NET_DVR_JPEGPARA jpegPara = new NET_DVR_JPEGPARA(); - // D1 - jpegPara.wPicSize = 2; - // 一般质量 - jpegPara.wPicQuality = 0; - //命名规则:任务号+载具号+时间.jpg - try { - boolean result = HCNetSDK.INSTANCE.NET_DVR_CaptureJPEGPicture(userId, channel, jpegPara, sFileUrl); - if (!result) { - result = HCNetSDK.INSTANCE.NET_DVR_CaptureJPEGPicture(userId, channel, jpegPara, sFileUrl); - if (result) { - boolean result2 = HCNetSDK.INSTANCE.NET_DVR_CaptureJPEGPicture(userId, channel, jpegPara, newFileUrl); - log.info("[SDK] 抓图成功" + imagePath + ":" + imageName); - } else { - log.warn("[SDK] 抓图失败"); - } - } - } finally { - HCNetSDK.INSTANCE.NET_DVR_Logout(userId); - HCNetSDK.INSTANCE.NET_DVR_Cleanup(); - } - } }