diff --git a/src/main/java/com/oldwei/hikdev/controller/AccessControlController.java b/src/main/java/com/oldwei/hikdev/controller/AccessControlController.java index 445cbec..bc8a134 100644 --- a/src/main/java/com/oldwei/hikdev/controller/AccessControlController.java +++ b/src/main/java/com/oldwei/hikdev/controller/AccessControlController.java @@ -13,9 +13,11 @@ import com.oldwei.hikdev.entity.param.UserFaceParam; import com.oldwei.hikdev.service.IHikAccessControlService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.format.annotation.DateTimeFormat; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; +import java.util.Date; import java.util.List; /** @@ -187,4 +189,10 @@ public class AccessControlController { public HikDevResponse setCartTemplate(String deviceSn, Integer planTemplateNumber) { return this.hikAccessControlService.setCartTemplate(deviceSn, planTemplateNumber); } + + @CheckDeviceLogin + @PostMapping("getDeviceCase") + public HikDevResponse getDeviceCase(String deviceSn, @DateTimeFormat(pattern = "yyyy-MM-dd") Date startTime, @DateTimeFormat(pattern = "yyyy-MM-dd") Date endTime, Integer dwMinor) { + return this.hikAccessControlService.getDeviceCase(deviceSn, startTime,endTime,dwMinor); + } } diff --git a/src/main/java/com/oldwei/hikdev/service/IHikAccessControlService.java b/src/main/java/com/oldwei/hikdev/service/IHikAccessControlService.java index febb6d6..7c1d3ce 100644 --- a/src/main/java/com/oldwei/hikdev/service/IHikAccessControlService.java +++ b/src/main/java/com/oldwei/hikdev/service/IHikAccessControlService.java @@ -7,6 +7,7 @@ import com.oldwei.hikdev.entity.param.AccessControlUser; import com.oldwei.hikdev.entity.param.EditUserParam; import com.oldwei.hikdev.entity.param.UserFaceParam; +import java.util.Date; import java.util.List; /** @@ -145,4 +146,7 @@ public interface IHikAccessControlService { * @return */ HikDevResponse setCartTemplate(String deviceSn, Integer planTemplateNumber); + + + HikDevResponse getDeviceCase(String deviceSn, Date startTime, Date endTime,Integer dwMinor); } diff --git a/src/main/java/com/oldwei/hikdev/service/impl/HikAccessControlServiceImpl.java b/src/main/java/com/oldwei/hikdev/service/impl/HikAccessControlServiceImpl.java index 42097ff..f64c027 100644 --- a/src/main/java/com/oldwei/hikdev/service/impl/HikAccessControlServiceImpl.java +++ b/src/main/java/com/oldwei/hikdev/service/impl/HikAccessControlServiceImpl.java @@ -1129,23 +1129,29 @@ public class HikAccessControlServiceImpl implements IHikAccessControlService { /** * 调用设备事件 */ - public void getDeviceCase(String deviceSn,Date startTime,Date endTime) { + public HikDevResponse getDeviceCase(String deviceSn,Date startTime,Date endTime,Integer dwMinor) { + HikDevResponse result = new HikDevResponse(); Map eventMap;// 储存事件信息的map + List list = new ArrayList<>(); // 调用获取设备事件长连接 HCNetSDK.NET_DVR_ACS_EVENT_COND struAcsEventCond = new HCNetSDK.NET_DVR_ACS_EVENT_COND(); struAcsEventCond.read(); struAcsEventCond.dwSize = struAcsEventCond.size(); struAcsEventCond.dwMajor = 5;// 5代表event事件 - struAcsEventCond.dwMinor = 0x4b;// 代表刷脸成功 + struAcsEventCond.dwMinor = dwMinor;// 代表刷脸成功 struAcsEventCond.struStartTime = NetDvrTimeUtil.getDvrStruTime(startTime);// ****必须要 struAcsEventCond.struEndTime = NetDvrTimeUtil.getDvrStruTime(endTime);// ***必须要 struAcsEventCond.write(); Pointer ptrStruEventCond = struAcsEventCond.getPointer(); Integer longUserId = this.dataCache.getInteger(DataCachePrefixConstant.HIK_REG_USERID + deviceSn); + log.info(longUserId+""); + log.info(HCNetSDK.NET_DVR_GET_ACS_EVENT+""); + log.info(JSONObject.toJSONString(ptrStruEventCond)); + log.info(JSONObject.toJSONString(struAcsEventCond.size())); Integer lHandle = this.hikDevService.NET_DVR_StartRemoteConfig(longUserId,HCNetSDK.NET_DVR_GET_ACS_EVENT,ptrStruEventCond,struAcsEventCond.size(),null,null); if (lHandle == -1){ System.out.println("建立获取设备事件长连接失败,错误码为"+this.hikDevService.NET_DVR_GetLastError()); - return; + return result; }else{ System.out.println("建立获取设备事件连接成功!"+lHandle); } @@ -1180,11 +1186,14 @@ public class HikAccessControlServiceImpl implements IHikAccessControlService { break; }else if (dwState == HCNetSDK.NET_SDK_GET_NEXT_STATUS_SUCCESS){ // 获取设备事件成功 + System.out.println("===============获取设备事件成功======================="); eventMap = new HashMap<>(16); eventMap.put("employeeNo",StringEncodingUtil.guessEncodingTransformString(struEventCFG.struAcsEventInfo.byEmployeeNo)); eventMap.put("cardNo",StringEncodingUtil.guessEncodingTransformString(struEventCFG.struAcsEventInfo.byCardNo)); eventMap.put("struTime",NetDvrTimeUtil.getDateStr(NetDvrTimeUtil.getDate(struEventCFG.struTime))); // eventList.add(eventMap); +// log.info(JSONObject.toJSONString(struEventCFG)); + list.add(eventMap); continue; }else if(dwState == HCNetSDK.NET_SDK_NEXT_STATUS__FINISH) { // 获取设备事件信息完成 @@ -1192,6 +1201,16 @@ public class HikAccessControlServiceImpl implements IHikAccessControlService { break; } } + + if(list.size()>0){ + result.data(list); + result.ok("设备事件获取成功!"); + } + + if (!hikDevService.NET_DVR_StopRemoteConfig(lHandle)) { + result.err("NET_DVR_StopRemoteConfig接口调用失败,错误码:" + hikDevService.NET_DVR_GetLastError()); + } + return result; } }