Преглед изворни кода

增加大华设备对接

Signed-off-by: haidong <chenloveguitar@qq.com>
doorRight设置
haidong пре 2 година
родитељ
комит
602fd01d73
2 измењених фајлова са 118 додато и 25 уклоњено
  1. +103
    -25
      src/main/java/com/yzx/impl/DaHua.java
  2. +15
    -0
      src/main/java/com/yzx/pojo/FaceRecrodInfo.java

+ 103
- 25
src/main/java/com/yzx/impl/DaHua.java Прегледај датотеку

@@ -1,9 +1,11 @@
package com.yzx.impl;

import com.netsdk.common.Res;
import com.netsdk.demo.frame.Gate.CardManegerDialog;
import com.netsdk.demo.module.DeviceLogModule;
import com.netsdk.demo.module.GateModule;
import com.netsdk.demo.module.LoginModule;
import com.netsdk.demo.module.TalkModule;
import com.netsdk.lib.NetSDKLib;
import com.netsdk.lib.ToolKits;
import com.netsdk.lib.structure.DH_DEVICE_LOG_ITEM_EX;
@@ -11,17 +13,17 @@ import com.netsdk.lib.structure.NET_TIME;
import com.sun.jna.Memory;
import com.sun.jna.Pointer;
import com.yzx.IHardwareEquipment;
import com.yzx.pojo.FaceRecrodInfo;
import com.yzx.pojo.UserFaceInfo;

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.*;

public class DaHua implements IHardwareEquipment {

@@ -48,6 +50,23 @@ public class DaHua implements IHardwareEquipment {
}


public boolean openDoor(){
this.login(info.getIp(),info.getPort(),info.getUsername(),info.getPassword());
NetSDKLib.NET_CTRL_ACCESS_OPEN openInfo = new NetSDKLib.NET_CTRL_ACCESS_OPEN();
openInfo.nChannelID = 0;
openInfo.emOpenDoorType = NetSDKLib.EM_OPEN_DOOR_TYPE.EM_OPEN_DOOR_TYPE_REMOTE;

Pointer pointer = new Memory(openInfo.size());
ToolKits.SetStructDataToPointer(openInfo, pointer, 0);
boolean ret = LoginModule.netsdk.CLIENT_ControlDeviceEx(LoginModule.m_hLoginHandle,
NetSDKLib.CtrlType.CTRLTYPE_CTRL_ACCESS_OPEN, pointer, null, 10000);
if (!ret) {
return false;
}
this.logout();
return true;
}

/**
* 获取系统日志
* @param startTime 开始时间格式 yyyy/MM/dd/hh/mm/ss
@@ -70,18 +89,18 @@ public class DaHua implements IHardwareEquipment {
* @param time
* @return
*/
public boolean getAllRecord(NetSDKLib.NET_TIME time){
public List<FaceRecrodInfo> getAllRecord(NetSDKLib.NET_TIME time){
List<FaceRecrodInfo> faceRecrodInfoList = new ArrayList<>();
this.login(info.getIp(),info.getPort(),info.getUsername(),info.getPassword());

int count = 0;
int index = 0;
int nFindCount = 10;
int nFindCount = 100;

// 日期: 为空,查询所有开门信息
// 获取查询句柄
if(!GateModule.findRecord(time)) {
return false;
return faceRecrodInfoList;
}

// 查询具体信息
@@ -95,23 +114,15 @@ public class DaHua implements IHardwareEquipment {
index = i + count * nFindCount;

try {
StringBuilder sb = new StringBuilder();
sb.append("位置序号:").append(index).append("\n");// 位置序号
sb.append("时间序号:").append(pstRecord[i].stuTime.dwYear)
.append(String.format("%02d", pstRecord[i].stuTime.dwMonth))//占位
.append(String.format("%02d", pstRecord[i].stuTime.dwDay)).append("\n");//占位
sb.append("记录编号:").append(pstRecord[i].nRecNo).append("\n"); // 序号
sb.append("卡号:").append(new String(pstRecord[i].szCardNo).trim()).append("\n"); // 卡号
sb.append("卡名:").append(new String(pstRecord[i].szCardName, "GBK").trim()).append("\n"); // 卡名 -> employeeName
sb.append("用户ID:").append(new String(pstRecord[i].szUserID).trim()).append("\n"); // 用户ID -> employeeNo
sb.append("卡密:").append(new String(pstRecord[i].szPwd).trim()).append("\n"); // 卡密码
sb.append("刷卡结果:").append(pstRecord[i].bStatus).append("\n"); // 刷卡结果
sb.append("开门方式:").append(Res.string().getOpenMethods(pstRecord[i].emMethod)).append("\n"); // 开门方式
sb.append("开门方式:").append(pstRecord[i].emMethod).append("\n"); // 开门方式
pstRecord[i].stuTime.dwHour = pstRecord[i].stuTime.dwHour + 8;
sb.append("刷卡时间:").append(pstRecord[i].stuTime.toStringTimeEx()).append("\n"); // 刷卡时间
sb.append("人脸图片地址:").append(new String(pstRecord[i].szSnapFtpUrl).trim()).append("\n"); //人脸图片地址
System.out.println("sb = " + sb);
FaceRecrodInfo faceRecrodInfo = new FaceRecrodInfo();
faceRecrodInfo.setIndex(index);
faceRecrodInfo.setRecordNo(pstRecord[i].nRecNo);
faceRecrodInfo.setCardNo(new String(pstRecord[i].szCardNo));
faceRecrodInfo.setEmployeeNo(new String(pstRecord[i].szUserID).trim());
faceRecrodInfo.setEmployeeName(new String(pstRecord[i].szCardName, "GBK").trim());
faceRecrodInfo.setTime(pstRecord[i].stuTime.toStringTimeEx());
faceRecrodInfo.setSnapUrl(new String(pstRecord[i].szSnapFtpUrl).trim());
faceRecrodInfoList.add(faceRecrodInfo);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
@@ -130,7 +141,7 @@ public class DaHua implements IHardwareEquipment {

//退出登录
this.logout();
return true;
return faceRecrodInfoList;
}

/**
@@ -156,6 +167,20 @@ public class DaHua implements IHardwareEquipment {
return false;
}

public boolean deletePerson(UserFaceInfo userFaceInfo){
this.login(info.getIp(),info.getPort(),info.getUsername(),info.getPassword());
//查询用户
String employeeNo = userFaceInfo.getEmployeeNo();
int recordNo = this.findRecordNo(employeeNo);
if(recordNo != 0){
if(GateModule.deleteCard(recordNo) && GateModule.deleteFaceInfo(employeeNo)){
return true;
}
}
this.logout();
return false;
}

/**
* 添加人脸
* @param userId
@@ -246,6 +271,59 @@ public class DaHua implements IHardwareEquipment {
return 0;
}

public List<UserFaceInfo> findAllCard() {
this.login(info.getIp(),info.getPort(),info.getUsername(),info.getPassword());
List<UserFaceInfo> userFaceInfoList = new ArrayList<>();

int nFindCount = 1;

// 卡号: 为空,查询所有的卡信息
// 获取查询句柄
if(!GateModule.findCard("","")) {
return userFaceInfoList;
}

// 查询具体信息
while(true) {
NetSDKLib.NET_RECORDSET_ACCESS_CTL_CARD[] pstRecord = GateModule.findNextCard(nFindCount);
if(pstRecord == null) {
break;
}

for(int i = 0; i < pstRecord.length; i++) {
UserFaceInfo userFaceInfo = new UserFaceInfo();
try {
userFaceInfo.setCardNo(new String(pstRecord[i].szCardNo).trim());
userFaceInfo.setEmployeeName(new String(pstRecord[i].szCardName, "GBK").trim());
userFaceInfo.setEmployeeNo(new String(pstRecord[i].szUserID).trim());
userFaceInfo.setStartTime(pstRecord[i].stuValidStartTime.toStringTimeEx());
userFaceInfo.setEndTime(pstRecord[i].stuValidEndTime.toStringTimeEx());
userFaceInfoList.add(userFaceInfo);
}catch(UnsupportedEncodingException e){
e.printStackTrace();
}
}

if (pstRecord.length < nFindCount) {
break;
}
}

// 关闭查询接口
GateModule.findCardClose();
this.logout();
return userFaceInfoList;
}

public boolean clearAllPerson(){
this.login(info.getIp(),info.getPort(),info.getUsername(),info.getPassword());
if(GateModule.clearCard() && GateModule.clearFaceInfo()){
return true;
}
this.logout();
return false;
}


// 登录
public boolean login(String ip,short port,String username,String password) {


+ 15
- 0
src/main/java/com/yzx/pojo/FaceRecrodInfo.java Прегледај датотеку

@@ -0,0 +1,15 @@
package com.yzx.pojo;

import lombok.Data;

@Data
public class FaceRecrodInfo {

private int index;//索引 -> day_postion
private int recordNo;//记录编号 -> serial_no
private String cardNo;//卡号
private String employeeNo;//用户编号
private String employeeName;//用户名称 -> user_name
private String time;//刷脸时间
private String snapUrl;//人脸图片地址
}

Loading…
Откажи
Сачувај