对接海康明眸门禁设备-周计划模板

2023-12-03 09:12

本文主要是介绍对接海康明眸门禁设备-周计划模板,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

对接海康明眸门禁设备-周计划模板

注意:一天最多支持八个时间段。
设备支持的模板数 和周计划数,通过设备能力集获取。

设置周计划模板

 /***设置周计划模板*lUserID 登录句柄*weekDateList 自定义时间集合*iPlanTemplateNumber 模板id*templateName 模板名称*List<IotAddFaceParam> paramLis 自定义人员信息集合*/
hikvisionDeviceApiService.setWeeklyPlan(lUserID,weekDateList,iPlanTemplateNumber,templateName);
List<IotAddFaceParam> paramList = new ArrayList<>();// 修改人员信息  具体看前面文章添加用户(添加用户信息)
hikvisionDeviceApiService.addUserInfo(paramList,lUserID,String.valueOf(iPlanTemplateNumber));

修改用户采用的是添加用户方法:
URL为一下:
该方法用户存在时修改,不存在时新增。
具体看前面文章添加用户(添加用户信息)

String strUserInBuffer = "PUT /ISAPI/AccessControl/UserInfo/SetUp?format=json";

周计划权限

/***设备周计划权限* 每一个计划模板可以关联一个周计划和一个假日组计划,假日计划的优先级高于周计划。* 周计划可以配置周一到周日的时间段,每天支持配置8个不同的时间段* @param lUserID              用户登录句柄* @param iPlanTemplateNumber 计划模板编号,从1开始,最大值从门禁能力集获取* templateName 模板名称* weekDateList 自定义时间集合**/public void setWeeklyPlan(int lUserID, List<IotWeekInfoParam> weekDateList, int iPlanTemplateNumber, String templateName) {if (lUserID == -1) {log.warn("登录失败,错误码为 :{}", hCNetSDK.NET_DVR_GetLastError());}//计划模板编号,从1开始,最大值从门禁能力集获取
//        int iPlanTemplateNumber = 6;//模板名称
//        String templateName = "周权限设置模板";//设置卡权限计划模板参数NET_DVR_PLAN_TEMPLATE_COND struPlanCond = new NET_DVR_PLAN_TEMPLATE_COND();struPlanCond.dwSize = struPlanCond.size();struPlanCond.dwPlanTemplateNumber = iPlanTemplateNumber;//计划模板编号,从1开始,最大值从门禁能力集获取struPlanCond.wLocalControllerID = 0;//就地控制器序号[1,64],0表示门禁主机struPlanCond.write();NET_DVR_PLAN_TEMPLATE struPlanTemCfg = new NET_DVR_PLAN_TEMPLATE();struPlanTemCfg.dwSize = struPlanTemCfg.size();struPlanTemCfg.byEnable = 1; //是否使能:0- 否,1- 是struPlanTemCfg.dwWeekPlanNo = 1;//周计划编号,0表示无效struPlanTemCfg.dwHolidayGroupNo[0] = 0;//假日组编号,按值表示,采用紧凑型排列,中间遇到0则后续无效byte[] byTemplateName;byTemplateName = templateName.getBytes(StandardCharsets.UTF_8);//计划模板名称for (int i = 0; i < IotHikNetConstant.NAME_LEN; i++) {struPlanTemCfg.byTemplateName[i] = 0;}System.arraycopy(byTemplateName, 0, struPlanTemCfg.byTemplateName, 0, byTemplateName.length);struPlanTemCfg.write();IntByReference pInt = new IntByReference(0);Pointer lpStatusList = pInt.getPointer();if (!hCNetSDK.NET_DVR_SetDeviceConfig(lUserID, IotHikNetConstant.NET_DVR_SET_CARD_RIGHT_PLAN_TEMPLATE_V50, 1, struPlanCond.getPointer(), struPlanCond.size(), lpStatusList, struPlanTemCfg.getPointer(), struPlanTemCfg.size())) {//设置模板参数失败log.warn("NET_DVR_SET_CARD_RIGHT_PLAN_TEMPLATE_V50失败,错误号:{},{}", hCNetSDK.NET_DVR_GetLastError(),IotHkExceptionEnum.getMsg(hCNetSDK.NET_DVR_GetLastError()));}//获取卡权限周计划参数NET_DVR_WEEK_PLAN_COND struWeekPlanCond = new NET_DVR_WEEK_PLAN_COND();struWeekPlanCond.dwSize = struWeekPlanCond.size();struWeekPlanCond.dwWeekPlanNumber = 2;struWeekPlanCond.wLocalControllerID = 0;NET_DVR_WEEK_PLAN_CFG struWeekPlanCfg = new NET_DVR_WEEK_PLAN_CFG();struWeekPlanCond.write();struWeekPlanCfg.write();Pointer lpCond = struWeekPlanCond.getPointer();Pointer lpInbuferCfg = struWeekPlanCfg.getPointer();if (!hCNetSDK.NET_DVR_GetDeviceConfig(lUserID, IotHikNetConstant.NET_DVR_GET_CARD_RIGHT_WEEK_PLAN_V50, 1, lpCond, struWeekPlanCond.size(), lpStatusList, lpInbuferCfg, struWeekPlanCfg.size())) {//获取周计划模板失败log.warn("NET_DVR_GET_CARD_RIGHT_WEEK_PLAN_V50失败,错误号:{},{}",hCNetSDK.NET_DVR_GetLastError(),IotHkExceptionEnum.getMsg(hCNetSDK.NET_DVR_GetLastError()));return;}struWeekPlanCfg.read();struWeekPlanCfg.byEnable = 1; //是否使能:0- 否,1- 是/**避免时间段交叉,先初始化, 七天八小时*/for (int i = 0; i < 7; i++) {for (int j = 0; j < 8; j++) {struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[j].byEnable = 0;struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[j].struTimeSegment.struBeginTime.byHour = 0;struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[j].struTimeSegment.struBeginTime.byMinute = 0;struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[j].struTimeSegment.struBeginTime.bySecond = 0;struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[j].struTimeSegment.struEndTime.byHour = 0;struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[j].struTimeSegment.struEndTime.byMinute = 0;struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[j].struTimeSegment.struEndTime.bySecond = 0;}}weekDateList.stream().sorted(Comparator.comparing(IotWeekInfoParam::getWeekNum));Map<Integer, IotWeekInfoParam> listMap = weekDateList.stream().collect(AbsCollector.toMap(IotWeekInfoParam::getWeekNum));// 一周七天for (int i = 0; i < 7; i++) {IotWeekInfoParam weekParam = listMap.get(i+1);if(ObjectUtil.isNull(weekParam)){defaultDateData(i,struWeekPlanCfg);} else {List<IotTimeQuanInfoParam> timeQuans = weekParam.getTimeQuan();if(CollUtil.isEmpty(timeQuans)){defaultDateData(i,struWeekPlanCfg);}// 每天时间段for (int j= 0; j< timeQuans.size(); j++) {IotTimeQuanInfoParam timeQuan = timeQuans.get(j);if (ObjectUtil.isNull(timeQuan.getType()) || timeQuan.getType() == 2) {struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[j].byEnable = 0;} else {struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[j].byEnable = 1;}List<Byte> startTimes = Arrays.stream(timeQuan.getStartTime().split(":")).map(Byte::valueOf).collect(Collectors.toList());List<Byte> stopTimes = Arrays.stream(timeQuan.getStopTime().split(":")).map(Byte::valueOf).collect(Collectors.toList());struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[j].struTimeSegment.struBeginTime.byHour = startTimes.get(0);struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[j].struTimeSegment.struBeginTime.byMinute = startTimes.get(1);struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[j].struTimeSegment.struBeginTime.bySecond = 0;struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[j].struTimeSegment.struEndTime.byHour = stopTimes.get(0);struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[j].struTimeSegment.struEndTime.byMinute = stopTimes.get(1);struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[j].struTimeSegment.struEndTime.bySecond = 59;}}}struWeekPlanCfg.write();//设置卡权限周计划参数if (!hCNetSDK.NET_DVR_SetDeviceConfig(lUserID, IotHikNetConstant.NET_DVR_SET_CARD_RIGHT_WEEK_PLAN_V50, 1, lpCond, struWeekPlanCond.size(), lpStatusList, lpInbuferCfg, struWeekPlanCfg.size())) {//设置周计划参数失败log.info("NET_DVR_SET_CARD_RIGHT_WEEK_PLAN_V50失败,错误号:{},{}", hCNetSDK.NET_DVR_GetLastError(),IotHkExceptionEnum.getMsg(hCNetSDK.NET_DVR_GetLastError()));} else {infolog.info("NET_DVR_SET_CARD_RIGHT_WEEK_PLAN_V50成功!");}}
public class IotWeekInfoParam implements Serializable {/*** 周 1-2-3*/private Integer weekNum;/*** 时间*/private List<IotTimeQuanInfoParam> timeQuan;}
public class IotTimeQuanInfoParam implements Serializable {/*** 开始时间*/private String startTime;/*** 结束时间*/private String stopTime;/*** int 1表示允许通过  2禁止通行*/private Integer type;}

这篇关于对接海康明眸门禁设备-周计划模板的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/448891

相关文章

使用Java填充Word模板的操作指南

《使用Java填充Word模板的操作指南》本文介绍了Java填充Word模板的实现方法,包括文本、列表和复选框的填充,首先通过Word域功能设置模板变量,然后使用poi-tl、aspose-words... 目录前言一、设置word模板普通字段列表字段复选框二、代码1. 引入POM2. 模板放入项目3.代码

Python进行word模板内容替换的实现示例

《Python进行word模板内容替换的实现示例》本文介绍了使用Python自动化处理Word模板文档的常用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... 目录技术背景与需求场景核心工具库介绍1.获取你的word模板内容2.正常文本内容的替换3.表格内容的

录音功能在哪里? 电脑手机等设备打开录音功能的技巧

《录音功能在哪里?电脑手机等设备打开录音功能的技巧》很多时候我们需要使用录音功能,电脑和手机这些常用设备怎么使用录音功能呢?下面我们就来看看详细的教程... 我们在会议讨论、采访记录、课堂学习、灵感创作、法律取证、重要对话时,都可能有录音需求,便于留存关键信息。下面分享一下如何在电脑端和手机端上找到录音功能

Java对接MQTT协议的完整实现示例代码

《Java对接MQTT协议的完整实现示例代码》MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛,:本文主要介绍Ja... 目录前言前置依赖1. MQTT配置类代码解析1.1 MQTT客户端工厂1.2 MQTT消息订阅适配器1.

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

Linux之platform平台设备驱动详解

《Linux之platform平台设备驱动详解》Linux设备驱动模型中,Platform总线作为虚拟总线统一管理无物理总线依赖的嵌入式设备,通过platform_driver和platform_de... 目录platform驱动注册platform设备注册设备树Platform驱动和设备的关系总结在 l

SpringBoot集成EasyPoi实现Excel模板导出成PDF文件

《SpringBoot集成EasyPoi实现Excel模板导出成PDF文件》在日常工作中,我们经常需要将数据导出成Excel表格或PDF文件,本文将介绍如何在SpringBoot项目中集成EasyPo... 目录前言摘要简介源代码解析应用场景案例优缺点分析类代码方法介绍测试用例小结前言在日常工作中,我们经

java对接海康摄像头的完整步骤记录

《java对接海康摄像头的完整步骤记录》在Java中调用海康威视摄像头通常需要使用海康威视提供的SDK,下面这篇文章主要给大家介绍了关于java对接海康摄像头的完整步骤,文中通过代码介绍的非常详细,需... 目录一、开发环境准备二、实现Java调用设备接口(一)加载动态链接库(二)结构体、接口重定义1.类型

java对接第三方接口的三种实现方式

《java对接第三方接口的三种实现方式》:本文主要介绍java对接第三方接口的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录HttpURLConnection调用方法CloseableHttpClient调用RestTemplate调用总结在日常工作

Java如何根据word模板导出数据

《Java如何根据word模板导出数据》这篇文章主要为大家详细介绍了Java如何实现根据word模板导出数据,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... pom.XML文件导入依赖 <dependency> <groupId>cn.afterturn</groupId>