diff --git a/common/src/main/java/com/storeroom/utils/DateUtils.java b/common/src/main/java/com/storeroom/utils/DateUtils.java index c23a209..e26fc72 100644 --- a/common/src/main/java/com/storeroom/utils/DateUtils.java +++ b/common/src/main/java/com/storeroom/utils/DateUtils.java @@ -1,5 +1,8 @@ package com.storeroom.utils; + +import java.sql.Timestamp; +import java.text.DateFormat; import java.text.SimpleDateFormat; import java.time.*; import java.time.format.DateTimeFormatter; @@ -74,7 +77,7 @@ public class DateUtils { * 日期 格式化 * * @param localDateTime / - * @param patten / + * @param patten / * @return / */ public static String localDateTimeFormat(LocalDateTime localDateTime, String patten) { @@ -86,7 +89,7 @@ public class DateUtils { * 日期 格式化 * * @param localDateTime / - * @param df / + * @param df / * @return / */ public static String localDateTimeFormat(LocalDateTime localDateTime, DateTimeFormatter df) { @@ -144,6 +147,16 @@ public class DateUtils { return LocalDateTime.from(DFY_MD_HMS.parse(localDateTime)); } + /** + * 获取当前时间戳 + */ + public static String getNowTimeInMillis() { + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String time = df.format(System.currentTimeMillis()); + LocalDateTime lTime = parseLocalDateTimeFormatyMdHms(time); + return String.valueOf(getTimeStamp(lTime)); + } + /** * 获取当前年 * @@ -176,14 +189,101 @@ public class DateUtils { /** * 生成表获取当前时间和时间戳 + * * @return */ - public static String getNowDateTime(){ + public static String getNowDateTime() { Calendar d = Calendar.getInstance(); SimpleDateFormat formatter = new SimpleDateFormat("yyyy_MM_dd_"); return formatter.format(d.getTime()) + d.getTimeInMillis(); } + public static String convertDate2String(Date date, String pattern) { + if (date == null) + return null; + DateFormat dateFormat = new SimpleDateFormat(pattern); + return dateFormat.format(date); + } + + /** + * 根据字符串获取年 + * + * @param timeString + * @return + */ + public static short getYear(String timeString) { + String timeStr = convertDate2String(parseTimeString2Date(timeString), "yyyy-MM-dd HH:mm:ss"); + return Short.parseShort(timeStr.substring(0, 4)); + } + + /** + * 根据字符串获取月 + * + * @param timeString / + * @return / + */ + public static short getMonth(String timeString) { + String timeStr = convertDate2String(parseTimeString2Date(timeString), "yyyy-MM-dd HH:mm:ss"); + return Short.parseShort(timeStr.substring(5, 7)); + } + + /** + * 根据字符串获取日 + * + * @param timeString / + * @return / + */ + public static short getDay(String timeString) { + String timeStr = convertDate2String(parseTimeString2Date(timeString), "yyyy-MM-dd HH:mm:ss"); + return Short.parseShort(timeStr.substring(8, 10)); + } + + /** + * 获取小时 + * + * @param timeString / + * @return / + */ + public static short getHour(String timeString) { + String timeStr = convertDate2String(parseTimeString2Date(timeString), "yyyy-MM-dd HH:mm:ss"); + return Short.parseShort(timeStr.substring(11, 13)); + } + + /** + * 根据字符串获取分 + * + * @param timeString / + * @return / + */ + public static short getMinute(String timeString) { + String timeStr = convertDate2String(parseTimeString2Date(timeString), "yyyy-MM-dd HH:mm:ss"); + return Short.parseShort(timeStr.substring(14, 16)); + } + + /** + * 根据字符串获取秒 + * + * @param timeString / + * @return / + */ + public static short getSecond(String timeString) { + String timeStr = convertDate2String(parseTimeString2Date(timeString), "yyyy-MM-dd HH:mm:ss"); + return Short.parseShort(timeStr.substring(17, 19)); + } + + public static Date parseTimeString2Date(String timeString) { + if ((timeString == null) || (timeString.equals(""))) { + return null; + } + Date date = null; + DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + try { + date = new Date(dateFormat.parse(timeString).getTime()); + } catch (Exception e) { + e.printStackTrace(); + } + return date; + } } diff --git a/storeroom/src/main/java/com/storeroom/modules/device/controller/DeviceController.java b/storeroom/src/main/java/com/storeroom/modules/device/controller/DeviceController.java index 7726008..de1a8af 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/controller/DeviceController.java +++ b/storeroom/src/main/java/com/storeroom/modules/device/controller/DeviceController.java @@ -7,13 +7,16 @@ import com.storeroom.annotaion.rest.AnonymousGetMapping; import com.storeroom.annotaion.rest.AnonymousPostMapping; import com.storeroom.exception.BaseException; import com.storeroom.modules.device.domain.AlarmDeseCaBinetLog; +import com.storeroom.modules.device.domain.CameraInfo; +import com.storeroom.modules.device.domain.DeviceCamerBind; import com.storeroom.modules.device.domain.DeviceInfo; -import com.storeroom.modules.device.service.ArchivesCasesService; -import com.storeroom.modules.device.service.DeviceService; -import com.storeroom.modules.device.service.OperatingStateService; +import com.storeroom.modules.device.service.*; +import com.storeroom.modules.device.service.dto.CameraInfoDto; import com.storeroom.modules.storeroom3d.service.AlarmInfoService; import com.storeroom.modules.storeroom3d.service.ThirdApiService; import com.storeroom.utils.ApiResponse; +import com.storeroom.utils.DateUtils; +import com.storeroom.utils.NanoIdUtils; import com.storeroom.utils.StringUtils; import com.storeroom.utils.enums.ResponseStatus; import io.swagger.annotations.Api; @@ -26,10 +29,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; @RestController @RequiredArgsConstructor @@ -42,6 +42,9 @@ public class DeviceController { private final ArchivesCasesService archivesCaseService; private final AlarmInfoService alarmInfoService; private final ThirdApiService thirdApiService; + private final CameraInfoService cameraInfoService; + private final DeviceCamerBindService deviceCamerBindService; + @ApiOperation("获取所有设备") @AnonymousGetMapping("all") @@ -149,8 +152,27 @@ public class DeviceController { @ApiOperation("第三方对接-上传密集架报警信息") @AnonymousPostMapping("log") public Object deseCabinetAlarmLog(@RequestBody AlarmDeseCaBinetLog alarmDeseCaBinetLog) { - + if (StringUtils.isEmpty(alarmDeseCaBinetLog.getI64Ts())) { + alarmDeseCaBinetLog.setI64Ts(DateUtils.getNowTimeInMillis()); + } deviceService.upLoadAlarmLog(alarmDeseCaBinetLog); + + //只记录报警日志下载视频,操作开架视频下载由自己接口提供 + if (alarmDeseCaBinetLog.getUsLevel() == 1) { + List cameraInfoDto = new ArrayList<>(); + List list = deviceCamerBindService.queryStoreroomCode(alarmDeseCaBinetLog.getStoreCode()); + list.forEach(item -> { + CameraInfo cameraInfo = new CameraInfo(); + cameraInfo.setId(NanoIdUtils.randomNanoId()); + cameraInfo.setDeviceCamerBindId(item); + cameraInfo.setDescription(alarmDeseCaBinetLog.getCContext()); + cameraInfo.setEvent("密集架报警"); + cameraInfo.setDownloadLink(""); + deviceCamerBindService.downloadVideo(alarmDeseCaBinetLog.getI64Ts(), item.getDeviceInfoId(), item.getId()); + }); + + } + Map objectMap = new HashMap<>(); objectMap.put("code", ""); objectMap.put("errorinfo", ""); diff --git a/storeroom/src/main/java/com/storeroom/modules/device/domain/AlarmDeseCaBinetLog.java b/storeroom/src/main/java/com/storeroom/modules/device/domain/AlarmDeseCaBinetLog.java index d479b16..023d3ff 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/domain/AlarmDeseCaBinetLog.java +++ b/storeroom/src/main/java/com/storeroom/modules/device/domain/AlarmDeseCaBinetLog.java @@ -1,6 +1,7 @@ package com.storeroom.modules.device.domain; +import com.fasterxml.jackson.annotation.JsonProperty; import com.storeroom.base.BaseEntity; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -30,27 +31,29 @@ public class AlarmDeseCaBinetLog implements Serializable { private String storeCode; @Column(name = "qu_No") + @JsonProperty("QuNo") @ApiModelProperty(value = "区号") private String QuNo; @Column(name = "ui_log_id") @ApiModelProperty(value = "0") - private String uiLogID; + private Integer uiLogID; @Column(name = "us_log_type") @ApiModelProperty(value = "1") - private String usLogType; + private Integer usLogType; @Column(name = "us_level") @ApiModelProperty(value = "等级:0为操作 1 为报警") - private String usLevel; + private Integer usLevel; @Column(name = "i64Ts") @ApiModelProperty(value = "时间戳") private String i64Ts; @Column(name = "c_context") + @JsonProperty("cContext") @ApiModelProperty(value = "日志信息") private String cContext; diff --git a/storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceCamerBind.java b/storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceCamerBind.java index 3ec7f72..50100e1 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceCamerBind.java +++ b/storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceCamerBind.java @@ -32,6 +32,10 @@ public class DeviceCamerBind extends BaseEntity implements Serializable { @ApiModelProperty(value = "库房名称") private String storeroomName; + @Column(name = "storeroom_code") + @ApiModelProperty(value = "库房代码") + private String storeroomCode; + @Column(name = "device_name") @ApiModelProperty(value = "设备名称") private String deviceName; diff --git a/storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceInfo.java b/storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceInfo.java index ddac159..5ba6392 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceInfo.java +++ b/storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceInfo.java @@ -136,10 +136,7 @@ public class DeviceInfo extends BaseEntity implements Serializable { @ApiModelProperty(value = "是否回调") private OperatingState isCallback; -// @JSONField(serialize = false) -// @ManyToMany(mappedBy = "deviceInfo") -// @ApiModelProperty(value = "3D库房显示配置") -// private Set displayConfig; + @Override public boolean equals(Object o) { diff --git a/storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceCamerBindRepository.java b/storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceCamerBindRepository.java index 7725fc7..5ae1d6c 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceCamerBindRepository.java +++ b/storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceCamerBindRepository.java @@ -4,10 +4,13 @@ import com.storeroom.modules.device.domain.DeviceCamerBind; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; -public interface DeviceCamerBindRepository extends JpaRepository, JpaSpecificationExecutor { +import java.util.List; + +public interface DeviceCamerBindRepository extends JpaRepository, JpaSpecificationExecutor { /** * 获取绑定数量 + * * @param deviceInfoId 获取设备id * @return / */ @@ -16,8 +19,17 @@ public interface DeviceCamerBindRepository extends JpaRepository findByStoreroomCode(String storeroomCode); } diff --git a/storeroom/src/main/java/com/storeroom/modules/device/service/DeviceCamerBindService.java b/storeroom/src/main/java/com/storeroom/modules/device/service/DeviceCamerBindService.java index 3cfbd10..e9e1699 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/service/DeviceCamerBindService.java +++ b/storeroom/src/main/java/com/storeroom/modules/device/service/DeviceCamerBindService.java @@ -36,4 +36,17 @@ public interface DeviceCamerBindService { * @param id */ void deleteBind(Set id); + + /** + * 通过库房名称查询 + * @return + */ + List queryStoreroomCode(String StoreroomCode); + + /** + * 根据时间下载 + * @param time 时间戳 + * @return + */ + String downloadVideo(String time,String deviceInfoId,String deviceCamerBindId); } diff --git a/storeroom/src/main/java/com/storeroom/modules/device/service/VideoMonitoringService.java b/storeroom/src/main/java/com/storeroom/modules/device/service/VideoMonitoringService.java index e56da13..77f7c59 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/service/VideoMonitoringService.java +++ b/storeroom/src/main/java/com/storeroom/modules/device/service/VideoMonitoringService.java @@ -4,11 +4,14 @@ package com.storeroom.modules.device.service; import com.storeroom.modules.device.service.dto.VideoMonitoringCrieria; import org.springframework.data.domain.Pageable; +import java.sql.Timestamp; + public interface VideoMonitoringService { /** * 获取视频监控列表 + * * @param crieria * @param pageable * @return @@ -16,4 +19,6 @@ public interface VideoMonitoringService { Object queryAll(VideoMonitoringCrieria crieria, Pageable pageable); + + } diff --git a/storeroom/src/main/java/com/storeroom/modules/device/service/dto/CameraInfoDto.java b/storeroom/src/main/java/com/storeroom/modules/device/service/dto/CameraInfoDto.java index 6887b2b..d35925c 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/service/dto/CameraInfoDto.java +++ b/storeroom/src/main/java/com/storeroom/modules/device/service/dto/CameraInfoDto.java @@ -1,5 +1,24 @@ package com.storeroom.modules.device.service.dto; -public class CameraInfoDto { + +import com.storeroom.base.BaseDTO; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +@Getter +@Setter +public class CameraInfoDto extends BaseDTO implements Serializable { + + private String id; + + private String deviceCamerBindId; + + private String description; + + private String event; + + private String downloadLink; } diff --git a/storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceCamerBindImpl.java b/storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceCamerBindImpl.java index 1b08985..58d7670 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceCamerBindImpl.java +++ b/storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceCamerBindImpl.java @@ -7,16 +7,17 @@ import com.storeroom.modules.device.repository.DeviceCamerBindRepository; import com.storeroom.modules.device.repository.DeviceInfoRepository; import com.storeroom.modules.device.service.DeviceCamerBindService; import com.storeroom.modules.device.service.dto.DeviceCamerBindCrieria; -import com.storeroom.utils.NanoIdUtils; -import com.storeroom.utils.PageUtil; -import com.storeroom.utils.QueryHelp; +import com.storeroom.modules.storeroom3d.config.common.VideoClient; +import com.storeroom.utils.*; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; +import java.time.LocalDateTime; import java.util.ArrayList; +import java.util.Calendar; import java.util.List; import java.util.Set; @@ -68,4 +69,46 @@ public class DeviceCamerBindImpl implements DeviceCamerBindService { public void deleteBind(Set id) { deviceCamerBindRepository.deleteAllById(id); } + + + @Override + public List queryStoreroomCode(String storeroomCode) { + return deviceCamerBindRepository.findByStoreroomCode(storeroomCode); + } + + @Override + public String downloadVideo(String time, String deviceInfoId, String deviceCamerBindId) { + Long times = Long.valueOf(time); + LocalDateTime timestamp = DateUtils.fromTimeStamp(times); + + //查询设备获取设备ip 端口号,账号密码 + DeviceInfo deviceInfo = deviceInfoRepository.findById(deviceInfoId).orElseGet(DeviceInfo::new); + + //判断不为空 + if (!ObjectUtils.isEmpty(deviceInfo) && !StringUtils.isEmpty(deviceInfo.getDeviceIp()) && !ObjectUtils.isEmpty(deviceInfo.getDevicePort()) && !StringUtils.isEmpty(deviceInfo.getDeviceAccount()) && !StringUtils.isEmpty(deviceInfo.getDevicePassword())) { + //查询绑定设备设定的视频时间 + DeviceCamerBind deviceCamerBind = deviceCamerBindRepository.findById(deviceCamerBindId).orElseGet(DeviceCamerBind::new); + //时间转换 + Long timeSize = Long.valueOf(deviceCamerBind.getTimeSize()); + //开始时间 减时间为开始时间 + LocalDateTime startTime = timestamp.minusSeconds(timeSize); + String strStartTime = DateUtils.localDateTimeFormatyMdHms(startTime); + + //结束时间 加时间为结束时间 + LocalDateTime endTime = timestamp.plusSeconds(timeSize); + String strEndTime = DateUtils.localDateTimeFormatyMdHms(endTime); + + VideoClient videoClient = new VideoClient(); + int result = videoClient.LogonDevice(deviceInfo.getDeviceIp(), deviceInfo.getDevicePort(), deviceInfo.getDeviceAccount(), deviceInfo.getDevicePassword()); + if (result == 0) { + String i = deviceInfo.getVideoRoute(); + videoClient.PlaybackByTimespanMode(strStartTime, strEndTime, Integer.parseInt(deviceInfo.getVideoRoute())); + return "成功"; + } + throw new BaseException("无法连接该设备"); + } + return "失败"; + } + + } diff --git a/storeroom/src/main/java/com/storeroom/modules/device/service/impl/VideoMonitoringImpl.java b/storeroom/src/main/java/com/storeroom/modules/device/service/impl/VideoMonitoringImpl.java index 0cee8cd..17e5c1a 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/service/impl/VideoMonitoringImpl.java +++ b/storeroom/src/main/java/com/storeroom/modules/device/service/impl/VideoMonitoringImpl.java @@ -1,9 +1,14 @@ package com.storeroom.modules.device.service.impl; +import com.storeroom.modules.device.domain.DeviceCamerBind; +import com.storeroom.modules.device.domain.DeviceInfo; import com.storeroom.modules.device.domain.VideoMonitoring; +import com.storeroom.modules.device.repository.DeviceInfoRepository; import com.storeroom.modules.device.repository.VideoMonitoringRepository; import com.storeroom.modules.device.service.VideoMonitoringService; import com.storeroom.modules.device.service.dto.VideoMonitoringCrieria; +import com.storeroom.modules.storeroom3d.config.common.VideoClient; +import com.storeroom.utils.DateUtils; import com.storeroom.utils.PageUtil; import com.storeroom.utils.QueryHelp; import lombok.RequiredArgsConstructor; @@ -11,6 +16,8 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; +import java.time.LocalDateTime; + @Service @RequiredArgsConstructor @@ -19,9 +26,14 @@ public class VideoMonitoringImpl implements VideoMonitoringService { private final VideoMonitoringRepository videoMonitoringRepository; + @Override public Object queryAll(VideoMonitoringCrieria crieria, Pageable pageable) { Page page = videoMonitoringRepository.findAll((root, query, criteriaBuilder) -> QueryHelp.getPredicate(root, crieria, criteriaBuilder), pageable); return PageUtil.toPage(page); } + + + + } diff --git a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/config/common/NVSSDK.java b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/config/common/NVSSDK.java index f6e56c9..84c995f 100644 --- a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/config/common/NVSSDK.java +++ b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/config/common/NVSSDK.java @@ -8,7 +8,6 @@ import com.sun.jna.ptr.IntByReference; import com.sun.jna.win32.StdCallLibrary; import com.sun.jna.Structure.ByValue; -import java.util.ArrayList; import java.util.Arrays; import java.util.List; diff --git a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/config/common/VideoClient.java b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/config/common/VideoClient.java index d1989ab..03bceec 100644 --- a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/config/common/VideoClient.java +++ b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/config/common/VideoClient.java @@ -1,9 +1,11 @@ package com.storeroom.modules.storeroom3d.config.common; +import com.storeroom.exception.BaseException; import com.storeroom.modules.storeroom3d.config.common.NVSSDK.DOWNLOAD_TIMESPAN; import com.storeroom.modules.storeroom3d.config.common.NVSSDK.RAWFRAME_INFO; import com.storeroom.modules.storeroom3d.config.common.NVSSDK.*; +import com.storeroom.utils.DateUtils; import com.sun.jna.Pointer; import com.sun.jna.ptr.IntByReference; @@ -17,7 +19,7 @@ public class VideoClient { int m_iConnectID = -1; int m_iTotalCount = 0; int m_iCurrentCount = 0; - String[] suffix = {".sdv", ".mp4", "", ".ps", "", "", ".ts"}; + String[] suffix = {".sdv", "", "", ".ps", "", "", ".ts"}; public void LogonNotify(String strIP, String strID, int iLogonID, int iLogonState) { String strMsg = new String(); @@ -55,7 +57,6 @@ public class VideoClient { } - NVSSDK.ALARM_NOTIFY cbkAlarm = new NVSSDK.ALARM_NOTIFY() { public void AlarmNotify(int _iLogonID, int _iChannel, int _iAlarmState, int _iAlarmType, Pointer _pUserData) { @@ -123,24 +124,25 @@ public class VideoClient { break; } case NVSSDK.WCM_DWONLOAD_FAULT: { - System.out.println("MainNotify:WCM_DWONLOAD_FAULT!下载失败!"); + // System.out.println("MainNotify:WCM_DWONLOAD_FAULT!下载失败!"); if (null == lParam) { m_iConnectID = 0; } else { m_iConnectID = (int) lParam.nativeValue(lParam); } NetClient.NetFileStopDownloadFile(m_iConnectID); - break; + + throw new BaseException("MainNotify:WCM_DWONLOAD_FAULT!下载失败!"); } case NVSSDK.WCM_DOWNLOAD_INTERRUPT: { - System.out.println("MainNotify:WCM_DOWNLOAD_INTERRUPT!下载中断!"); if (null == lParam) { m_iConnectID = 0; } else { m_iConnectID = (int) lParam.nativeValue(lParam); } NetClient.NetFileStopDownloadFile(m_iConnectID); - break; + throw new BaseException("MainNotify:WCM_DOWNLOAD_INTERRUPT!下载中断!"); + } default: break; @@ -177,7 +179,6 @@ public class VideoClient { VideoClient tPlayback = new VideoClient(); tPlayback.SDKInit(); //初始化SDK - // Scanner scanInput = new Scanner(System.in); System.out.println("Logon" + strIP + ":" + iPort + "-" + strUserName + "-" + strUserPwd); while (true) { m_iLogonID = NetClient.Logon("", strIP, strUserName, strUserPwd, "", iPort); @@ -185,15 +186,15 @@ public class VideoClient { if (iLogonStatus == NVSSDK.LOGON_SUCCESS) { break; } - tPlayback.PlaybackByTimespanMode(); + // tPlayback.PlaybackByTimespanMode(startTime, endTime); try { Thread.currentThread(); Thread.sleep(1000); } catch (InterruptedException e) { System.err.println("Interrupted"); } - } + } return 0; } @@ -270,33 +271,39 @@ public class VideoClient { } - public int PlaybackByTimespanMode() { + public int PlaybackByTimespanMode(String startTime, String endTime, int iChannelNO) { DOWNLOAD_TIMESPAN tDownloadTimeSpan = new DOWNLOAD_TIMESPAN(); tDownloadTimeSpan.m_iSize = tDownloadTimeSpan.size(); //Scanner scanInput = new Scanner(System.in); - System.out.print("请输入录像文件类型(sdv=0;PS=3;TS=6):"); - int iSaveFileType = 1; //scanInput.nextInt(); + //System.out.print("请输入录像文件类型(sdv=0;PS=3;TS=6):"); + int iSaveFileType = 6; tDownloadTimeSpan.m_iSaveFileType = iSaveFileType; tDownloadTimeSpan.m_iFileFlag = 0; //0:Download multiple files 1:Download into a single file - - String strLocalSaveFileName = new String("myTimespanDownload" + suffix[iSaveFileType]); + //判断文件夹是否存在 + File file = new File("videos/"); + if (!file.exists() && !file.isDirectory()) { + file.mkdirs(); + } + String strLocalSaveFileName = new String(file + "/" + DateUtils.getNowTimeInMillis() + "" + suffix[iSaveFileType]); tDownloadTimeSpan.m_cLocalFilename = strLocalSaveFileName.getBytes(); - tDownloadTimeSpan.m_iChannelNO = 0; //通道号按实际下载的设备通道号赋值 + tDownloadTimeSpan.m_iChannelNO = iChannelNO; //通道号按实际下载的设备通道号赋值 tDownloadTimeSpan.m_iStreamNo = 0; //码流号:0-主码流,1-副码流 + + //按时间段下载开始时间 - tDownloadTimeSpan.m_tTimeBegin.iYear = 2022; - tDownloadTimeSpan.m_tTimeBegin.iMonth = 8; - tDownloadTimeSpan.m_tTimeBegin.iDay = 24; - tDownloadTimeSpan.m_tTimeBegin.iHour = 0; - tDownloadTimeSpan.m_tTimeBegin.iMinute = 0; - tDownloadTimeSpan.m_tTimeBegin.iSecond = 0; + tDownloadTimeSpan.m_tTimeBegin.iYear = DateUtils.getYear(startTime); + tDownloadTimeSpan.m_tTimeBegin.iMonth = DateUtils.getMonth(startTime); + tDownloadTimeSpan.m_tTimeBegin.iDay = DateUtils.getDay(startTime); + tDownloadTimeSpan.m_tTimeBegin.iHour = DateUtils.getHour(startTime); + tDownloadTimeSpan.m_tTimeBegin.iMinute = DateUtils.getMinute(startTime); + tDownloadTimeSpan.m_tTimeBegin.iSecond = DateUtils.getSecond(startTime); //按时间段下载结束时间 - tDownloadTimeSpan.m_tTimeEnd.iYear = 2022; - tDownloadTimeSpan.m_tTimeEnd.iMonth = 8; - tDownloadTimeSpan.m_tTimeEnd.iDay = 24; - tDownloadTimeSpan.m_tTimeEnd.iHour = 0; - tDownloadTimeSpan.m_tTimeEnd.iMinute = 5; - tDownloadTimeSpan.m_tTimeEnd.iSecond = 0; + tDownloadTimeSpan.m_tTimeEnd.iYear = DateUtils.getYear(endTime); + tDownloadTimeSpan.m_tTimeEnd.iMonth = DateUtils.getMonth(endTime); + tDownloadTimeSpan.m_tTimeEnd.iDay = DateUtils.getDay(endTime); + tDownloadTimeSpan.m_tTimeEnd.iHour = DateUtils.getHour(endTime); + tDownloadTimeSpan.m_tTimeEnd.iMinute = DateUtils.getMinute(endTime); + tDownloadTimeSpan.m_tTimeEnd.iSecond = DateUtils.getSecond(endTime); tDownloadTimeSpan.m_iPosition = -1; //定位功能使用 tDownloadTimeSpan.m_iSpeed = 32; //下载速度,最大32,老设备按最大速度下载容易出现中断,因此下载成功后可将速度调成16倍速 @@ -307,7 +314,8 @@ public class VideoClient { if (0 == iRet) { //设置裸流回调,在回调里接收音视频裸流数据 m_iConnectID = iConnID.getValue(); - NetClient.SetRawFrameCallBack(m_iConnectID, cbkRawFrame, null); + //屏蔽下载无损格式视频 + //NetClient.SetRawFrameCallBack(m_iConnectID, cbkRawFrame, null); //调整速度 NVSSDK.DOWNLOAD_CONTROL tControl = new NVSSDK.DOWNLOAD_CONTROL(); tControl.m_iSize = tControl.size(); diff --git a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/VideosTestController.java b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/VideosTestController.java index 0578710..e763c31 100644 --- a/storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/VideosTestController.java +++ b/storeroom/src/main/java/com/storeroom/modules/storeroom3d/controller/VideosTestController.java @@ -21,8 +21,8 @@ public class VideosTestController { @ApiOperation("测试") @AnonymousGetMapping("ok") public ApiResponse ok() { - VideoClient videoClient = new VideoClient(); - videoClient.LogonDevice("192.168.99.21", 3000, "admin", "yxk63603325"); + // VideoClient videoClient = new VideoClient(); + //videoClient.LogonDevice("192.168.99.21", 3000, "admin", "yxk63603325"); return ApiResponse.success(ResponseStatus.SUCCESS); } } diff --git a/storeroom/src/test/java/test.java b/storeroom/src/test/java/test.java index 5a52ff6..4048c8b 100644 --- a/storeroom/src/test/java/test.java +++ b/storeroom/src/test/java/test.java @@ -1,8 +1,9 @@ +import com.storeroom.utils.DateUtils; import org.junit.jupiter.api.Test; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.util.*; public class test { @@ -28,11 +29,11 @@ public class test { } @Test - public void testArrayList(){ + public void testArrayList() { Integer[] array1 = {1, 2, 3}; - Integer[] array2 = {1, 2, 3, 4,44}; + Integer[] array2 = {1, 2, 3, 4, 44}; - List list = compare(array1,array2); + List list = compare(array1, array2); for (Integer integer : list) { System.out.println(integer); } @@ -48,4 +49,30 @@ public class test { } return list2; } + + + @Test + public void timesTest() { + + long time = 1661914260; + LocalDateTime s = DateUtils.fromTimeStamp(time); + String times = DateUtils.localDateTimeFormatyMdHms(s); + Short yeard = DateUtils.getYear(times); + System.out.println(yeard); + } + + @Test + public void timesAdd() { + long time = 1661914260; + LocalDateTime s = DateUtils.fromTimeStamp(time); + Calendar now = Calendar.getInstance(); + Long a = now.getTimeInMillis(); + String times = DateUtils.localDateTimeFormatyMdHms(s); + System.out.println(times); + System.out.println(s.plusSeconds(20)); + System.out.println(a); + System.out.println(now.getTimeInMillis()); + + + } } diff --git a/storeroom/src/test/java/videoTest.java b/storeroom/src/test/java/videoTest.java index 7fe0cfd..2d580ff 100644 --- a/storeroom/src/test/java/videoTest.java +++ b/storeroom/src/test/java/videoTest.java @@ -1,4 +1,5 @@ import com.storeroom.modules.storeroom3d.config.common.VideoClient; +import com.storeroom.utils.DateUtils; import org.junit.jupiter.api.Test; public class videoTest { @@ -6,7 +7,13 @@ public class videoTest { @Test public void loginVideo() { - VideoClient videoClient = new VideoClient(); - videoClient.LogonDevice("192.168.99.21",3000,"admin","yxk63603325"); + // VideoClient videoClient = new VideoClient(); + //videoClient.LogonDevice("192.168.99.21",3000,"admin","yxk63603325"); + } + + @Test + public void getTime() { + String time = DateUtils.getNowTimeInMillis(); + System.out.println(time); } }