|
|
@@ -6,8 +6,12 @@ import com.alibaba.fastjson.JSONObject; |
|
|
import com.hkversion.HCNetSDK; |
|
|
import com.hkversion.HCNetSDK; |
|
|
import com.sun.jna.Pointer; |
|
|
import com.sun.jna.Pointer; |
|
|
import com.sun.jna.ptr.IntByReference; |
|
|
import com.sun.jna.ptr.IntByReference; |
|
|
|
|
|
import com.yzx.impl.CardTemplateInfo; |
|
|
|
|
|
|
|
|
import java.io.UnsupportedEncodingException; |
|
|
import java.io.UnsupportedEncodingException; |
|
|
|
|
|
import java.util.List; |
|
|
|
|
|
import java.util.Map; |
|
|
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 功能:人脸下发、查询、删除、人员计划模板配置 |
|
|
* 功能:人脸下发、查询、删除、人员计划模板配置 |
|
|
@@ -120,7 +124,7 @@ public class UserManage { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public static void modifyUserInfo(int lUserID, String employeeNo,int planTemplateNo) throws UnsupportedEncodingException, InterruptedException, JSONException { |
|
|
|
|
|
|
|
|
public static int modifyUserInfo(int lUserID, String employeeNo,int planTemplateNo) throws InterruptedException, JSONException { |
|
|
HCNetSDK.BYTE_ARRAY ptrByteArray = new HCNetSDK.BYTE_ARRAY(1024); //数组 |
|
|
HCNetSDK.BYTE_ARRAY ptrByteArray = new HCNetSDK.BYTE_ARRAY(1024); //数组 |
|
|
//"POST /ISAPI/AccessControl/UserInfo/Record?format=json" 此URL也是下发人员 |
|
|
//"POST /ISAPI/AccessControl/UserInfo/Record?format=json" 此URL也是下发人员 |
|
|
String strInBuffer = "PUT /ISAPI/AccessControl/UserInfo/Modify?format=json"; |
|
|
String strInBuffer = "PUT /ISAPI/AccessControl/UserInfo/Modify?format=json"; |
|
|
@@ -130,7 +134,6 @@ public class UserManage { |
|
|
int lHandler = AcsMain.hCNetSDK.NET_DVR_StartRemoteConfig(lUserID, HCNetSDK.NET_DVR_JSON_CONFIG, ptrByteArray.getPointer(), strInBuffer.length(), null, null); |
|
|
int lHandler = AcsMain.hCNetSDK.NET_DVR_StartRemoteConfig(lUserID, HCNetSDK.NET_DVR_JSON_CONFIG, ptrByteArray.getPointer(), strInBuffer.length(), null, null); |
|
|
if (lHandler < 0) { |
|
|
if (lHandler < 0) { |
|
|
System.out.println("AddUserInfo NET_DVR_StartRemoteConfig 失败,错误码为" + AcsMain.hCNetSDK.NET_DVR_GetLastError()); |
|
|
System.out.println("AddUserInfo NET_DVR_StartRemoteConfig 失败,错误码为" + AcsMain.hCNetSDK.NET_DVR_GetLastError()); |
|
|
return; |
|
|
|
|
|
} else { |
|
|
} else { |
|
|
System.out.println("AddUserInfo NET_DVR_StartRemoteConfig 成功!"); |
|
|
System.out.println("AddUserInfo NET_DVR_StartRemoteConfig 成功!"); |
|
|
|
|
|
|
|
|
@@ -200,8 +203,10 @@ public class UserManage { |
|
|
System.out.println("NET_DVR_StopRemoteConfig接口调用失败,错误码:" + AcsMain.hCNetSDK.NET_DVR_GetLastError()); |
|
|
System.out.println("NET_DVR_StopRemoteConfig接口调用失败,错误码:" + AcsMain.hCNetSDK.NET_DVR_GetLastError()); |
|
|
} else { |
|
|
} else { |
|
|
System.out.println("NET_DVR_StopRemoteConfig接口成功"); |
|
|
System.out.println("NET_DVR_StopRemoteConfig接口成功"); |
|
|
|
|
|
return 1; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
return -1; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
@@ -423,33 +428,33 @@ public class UserManage { |
|
|
for(int i=0;i<7;i++) |
|
|
for(int i=0;i<7;i++) |
|
|
{ |
|
|
{ |
|
|
struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[0].byEnable = 1; |
|
|
struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[0].byEnable = 1; |
|
|
struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[0].struTimeSegment.struBeginTime.byHour = 16; |
|
|
|
|
|
|
|
|
struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[0].struTimeSegment.struBeginTime.byHour = 0; |
|
|
struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[0].struTimeSegment.struBeginTime.byMinute = 0; |
|
|
struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[0].struTimeSegment.struBeginTime.byMinute = 0; |
|
|
struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[0].struTimeSegment.struBeginTime.bySecond = 0; |
|
|
struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[0].struTimeSegment.struBeginTime.bySecond = 0; |
|
|
struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[0].struTimeSegment.struEndTime.byHour = 16; |
|
|
|
|
|
struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[0].struTimeSegment.struEndTime.byMinute = 30; |
|
|
|
|
|
struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[0].struTimeSegment.struEndTime.bySecond = 0; |
|
|
|
|
|
struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[1].byEnable = 1; |
|
|
|
|
|
struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[1].struTimeSegment.struBeginTime.byHour = 17; |
|
|
|
|
|
struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[1].struTimeSegment.struBeginTime.byMinute = 5; |
|
|
|
|
|
struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[1].struTimeSegment.struBeginTime.bySecond = 0; |
|
|
|
|
|
struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[1].struTimeSegment.struEndTime.byHour = 17; |
|
|
|
|
|
struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[1].struTimeSegment.struEndTime.byMinute = 10; |
|
|
|
|
|
struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[1].struTimeSegment.struEndTime.bySecond = 0; |
|
|
|
|
|
struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[2].byEnable = 1; |
|
|
|
|
|
struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[2].struTimeSegment.struBeginTime.byHour = 18; |
|
|
|
|
|
struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[2].struTimeSegment.struBeginTime.byMinute = 0; |
|
|
|
|
|
struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[2].struTimeSegment.struBeginTime.bySecond = 0; |
|
|
|
|
|
struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[2].struTimeSegment.struEndTime.byHour = 18; |
|
|
|
|
|
struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[2].struTimeSegment.struEndTime.byMinute = 30; |
|
|
|
|
|
struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[2].struTimeSegment.struEndTime.bySecond = 0; |
|
|
|
|
|
struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[3].byEnable = 1; |
|
|
|
|
|
struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[3].struTimeSegment.struBeginTime.byHour = 19; |
|
|
|
|
|
struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[3].struTimeSegment.struBeginTime.byMinute = 0; |
|
|
|
|
|
struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[3].struTimeSegment.struBeginTime.bySecond = 0; |
|
|
|
|
|
struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[3].struTimeSegment.struEndTime.byHour = 19; |
|
|
|
|
|
struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[3].struTimeSegment.struEndTime.byMinute = 30; |
|
|
|
|
|
struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[3].struTimeSegment.struEndTime.bySecond = 0; |
|
|
|
|
|
|
|
|
struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[0].struTimeSegment.struEndTime.byHour = 23; |
|
|
|
|
|
struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[0].struTimeSegment.struEndTime.byMinute = 59; |
|
|
|
|
|
struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[0].struTimeSegment.struEndTime.bySecond = 59; |
|
|
|
|
|
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[1].byEnable = 1; |
|
|
|
|
|
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[1].struTimeSegment.struBeginTime.byHour = 17; |
|
|
|
|
|
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[1].struTimeSegment.struBeginTime.byMinute = 5; |
|
|
|
|
|
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[1].struTimeSegment.struBeginTime.bySecond = 0; |
|
|
|
|
|
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[1].struTimeSegment.struEndTime.byHour = 17; |
|
|
|
|
|
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[1].struTimeSegment.struEndTime.byMinute = 10; |
|
|
|
|
|
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[1].struTimeSegment.struEndTime.bySecond = 0; |
|
|
|
|
|
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[2].byEnable = 1; |
|
|
|
|
|
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[2].struTimeSegment.struBeginTime.byHour = 18; |
|
|
|
|
|
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[2].struTimeSegment.struBeginTime.byMinute = 0; |
|
|
|
|
|
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[2].struTimeSegment.struBeginTime.bySecond = 0; |
|
|
|
|
|
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[2].struTimeSegment.struEndTime.byHour = 18; |
|
|
|
|
|
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[2].struTimeSegment.struEndTime.byMinute = 30; |
|
|
|
|
|
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[2].struTimeSegment.struEndTime.bySecond = 0; |
|
|
|
|
|
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[3].byEnable = 1; |
|
|
|
|
|
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[3].struTimeSegment.struBeginTime.byHour = 19; |
|
|
|
|
|
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[3].struTimeSegment.struBeginTime.byMinute = 0; |
|
|
|
|
|
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[3].struTimeSegment.struBeginTime.bySecond = 0; |
|
|
|
|
|
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[3].struTimeSegment.struEndTime.byHour = 19; |
|
|
|
|
|
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[3].struTimeSegment.struEndTime.byMinute = 30; |
|
|
|
|
|
// struWeekPlanCfg.struPlanCfg[i].struPlanCfgDay[3].struTimeSegment.struEndTime.bySecond = 0; |
|
|
} |
|
|
} |
|
|
struWeekPlanCfg.write(); |
|
|
struWeekPlanCfg.write(); |
|
|
//设置卡权限周计划参数 |
|
|
//设置卡权限周计划参数 |
|
|
@@ -459,4 +464,98 @@ public class UserManage { |
|
|
System.out.println("NET_DVR_SET_CARD_RIGHT_WEEK_PLAN_V50成功!"); |
|
|
System.out.println("NET_DVR_SET_CARD_RIGHT_WEEK_PLAN_V50成功!"); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 人员计划模板配置 |
|
|
|
|
|
* |
|
|
|
|
|
* @param userID 用户登录句柄 |
|
|
|
|
|
* @param info 计划模板编号,从1开始,最大值从门禁能力集获取 |
|
|
|
|
|
*/ |
|
|
|
|
|
public static int setCardTemplate(int userID, CardTemplateInfo info) { |
|
|
|
|
|
int iPlanTemplateNumber = info.getTemplateId(); |
|
|
|
|
|
//设置卡权限计划模板参数 |
|
|
|
|
|
HCNetSDK.NET_DVR_PLAN_TEMPLATE_COND struPlanCond = new HCNetSDK.NET_DVR_PLAN_TEMPLATE_COND(); |
|
|
|
|
|
struPlanCond.dwSize = struPlanCond.size(); |
|
|
|
|
|
struPlanCond.dwPlanTemplateNumber = iPlanTemplateNumber;//计划模板编号,从1开始,最大值从门禁能力集获取 |
|
|
|
|
|
struPlanCond.wLocalControllerID = 0;//就地控制器序号[1,64],0表示门禁主机 |
|
|
|
|
|
struPlanCond.write(); |
|
|
|
|
|
HCNetSDK.NET_DVR_PLAN_TEMPLATE struPlanTemCfg = new HCNetSDK.NET_DVR_PLAN_TEMPLATE(); |
|
|
|
|
|
struPlanTemCfg.dwSize = struPlanTemCfg.size(); |
|
|
|
|
|
struPlanTemCfg.byEnable = info.getEnable(); //是否使能:0- 否,1- 是 |
|
|
|
|
|
struPlanTemCfg.dwWeekPlanNo = 2;//周计划编号,0表示无效 |
|
|
|
|
|
struPlanTemCfg.dwHolidayGroupNo[0] = 0;//假日组编号,按值表示,采用紧凑型排列,中间遇到0则后续无效 |
|
|
|
|
|
byte[] byTemplateName; |
|
|
|
|
|
try { |
|
|
|
|
|
byTemplateName = info.getTemplateName().getBytes("GBK"); |
|
|
|
|
|
//计划模板名称 |
|
|
|
|
|
for (int i = 0; i < HCNetSDK.NAME_LEN; i++) { |
|
|
|
|
|
struPlanTemCfg.byTemplateName[i] = 0; |
|
|
|
|
|
} |
|
|
|
|
|
System.arraycopy(byTemplateName, 0, struPlanTemCfg.byTemplateName, 0, byTemplateName.length); |
|
|
|
|
|
} catch (UnsupportedEncodingException e) { |
|
|
|
|
|
// TODO Auto-generated catch block |
|
|
|
|
|
e.printStackTrace(); |
|
|
|
|
|
} |
|
|
|
|
|
struPlanTemCfg.write(); |
|
|
|
|
|
IntByReference pInt = new IntByReference(0); |
|
|
|
|
|
Pointer lpStatusList = pInt.getPointer(); |
|
|
|
|
|
if (false == AcsMain.hCNetSDK.NET_DVR_SetDeviceConfig(userID, HCNetSDK.NET_DVR_SET_CARD_RIGHT_PLAN_TEMPLATE_V50, 1, struPlanCond.getPointer(), struPlanCond.size(), lpStatusList, struPlanTemCfg.getPointer(), struPlanTemCfg.size())) { |
|
|
|
|
|
System.out.println("NET_DVR_SET_CARD_RIGHT_PLAN_TEMPLATE_V50失败,错误号:" + AcsMain.hCNetSDK.NET_DVR_GetLastError()); |
|
|
|
|
|
return -1; |
|
|
|
|
|
} |
|
|
|
|
|
System.out.println("NET_DVR_SET_CARD_RIGHT_PLAN_TEMPLATE_V50成功!"); |
|
|
|
|
|
//获取卡权限周计划参数 |
|
|
|
|
|
HCNetSDK.NET_DVR_WEEK_PLAN_COND struWeekPlanCond = new HCNetSDK.NET_DVR_WEEK_PLAN_COND(); |
|
|
|
|
|
struWeekPlanCond.dwSize = struWeekPlanCond.size(); |
|
|
|
|
|
struWeekPlanCond.dwWeekPlanNumber = 2; |
|
|
|
|
|
struWeekPlanCond.wLocalControllerID = 0; |
|
|
|
|
|
HCNetSDK.NET_DVR_WEEK_PLAN_CFG struWeekPlanCfg = new HCNetSDK.NET_DVR_WEEK_PLAN_CFG(); |
|
|
|
|
|
struWeekPlanCond.write(); |
|
|
|
|
|
struWeekPlanCfg.write(); |
|
|
|
|
|
Pointer lpCond = struWeekPlanCond.getPointer(); |
|
|
|
|
|
Pointer lpInbuferCfg = struWeekPlanCfg.getPointer(); |
|
|
|
|
|
if (false == AcsMain.hCNetSDK.NET_DVR_GetDeviceConfig(userID, HCNetSDK.NET_DVR_GET_CARD_RIGHT_WEEK_PLAN_V50, 1, lpCond, struWeekPlanCond.size(), lpStatusList, lpInbuferCfg, struWeekPlanCfg.size())) { |
|
|
|
|
|
System.out.println("NET_DVR_GET_CARD_RIGHT_WEEK_PLAN_V50失败,错误号:" + AcsMain.hCNetSDK.NET_DVR_GetLastError()); |
|
|
|
|
|
return -1; |
|
|
|
|
|
} |
|
|
|
|
|
struWeekPlanCfg.read(); |
|
|
|
|
|
struWeekPlanCfg.byEnable = info.getEnable(); //是否使能: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; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
List<CardTemplateInfo.TimeSegmentInfo> timeSegmentInfos = info.getTimeSegmentInfos(); |
|
|
|
|
|
Map<Integer, List<CardTemplateInfo.TimeSegmentInfo>> timeSegmentInfoWeekDayMap = timeSegmentInfos.stream().collect(Collectors.groupingBy(i -> i.getWeekday())); |
|
|
|
|
|
timeSegmentInfoWeekDayMap.forEach((k,v) ->{ |
|
|
|
|
|
for (CardTemplateInfo.TimeSegmentInfo timeSegmentInfo : v) { |
|
|
|
|
|
int timeSegment = timeSegmentInfo.getTimeSegment(); |
|
|
|
|
|
struWeekPlanCfg.struPlanCfg[k].struPlanCfgDay[timeSegment].byEnable = timeSegmentInfo.getEnable(); |
|
|
|
|
|
struWeekPlanCfg.struPlanCfg[k].struPlanCfgDay[timeSegment].struTimeSegment.struBeginTime.byHour = timeSegmentInfo.getBeginTimeHour(); |
|
|
|
|
|
struWeekPlanCfg.struPlanCfg[k].struPlanCfgDay[timeSegment].struTimeSegment.struBeginTime.byMinute = timeSegmentInfo.getBeginTimeMinute(); |
|
|
|
|
|
struWeekPlanCfg.struPlanCfg[k].struPlanCfgDay[timeSegment].struTimeSegment.struBeginTime.bySecond = timeSegmentInfo.getBeginTimeSecond(); |
|
|
|
|
|
struWeekPlanCfg.struPlanCfg[k].struPlanCfgDay[timeSegment].struTimeSegment.struEndTime.byHour = timeSegmentInfo.getEndTimeHour(); |
|
|
|
|
|
struWeekPlanCfg.struPlanCfg[k].struPlanCfgDay[timeSegment].struTimeSegment.struEndTime.byMinute = timeSegmentInfo.getEndTimeMinute(); |
|
|
|
|
|
struWeekPlanCfg.struPlanCfg[k].struPlanCfgDay[timeSegment].struTimeSegment.struEndTime.bySecond = timeSegmentInfo.getEndTimeSecond(); |
|
|
|
|
|
} |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
struWeekPlanCfg.write(); |
|
|
|
|
|
//设置卡权限周计划参数 |
|
|
|
|
|
if (false == AcsMain.hCNetSDK.NET_DVR_SetDeviceConfig(userID, HCNetSDK.NET_DVR_SET_CARD_RIGHT_WEEK_PLAN_V50, 1, lpCond, struWeekPlanCond.size(), lpStatusList, lpInbuferCfg, struWeekPlanCfg.size())) { |
|
|
|
|
|
System.out.println("NET_DVR_SET_CARD_RIGHT_WEEK_PLAN_V50失败,错误号:" + AcsMain.hCNetSDK.NET_DVR_GetLastError()); |
|
|
|
|
|
return -1; |
|
|
|
|
|
} else { |
|
|
|
|
|
System.out.println("NET_DVR_SET_CARD_RIGHT_WEEK_PLAN_V50成功!"); |
|
|
|
|
|
return 1; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
} |