|
|
@@ -1,9 +1,11 @@ |
|
|
package com.yzx.impl; |
|
|
package com.yzx.impl; |
|
|
|
|
|
|
|
|
import com.netsdk.common.Res; |
|
|
import com.netsdk.common.Res; |
|
|
|
|
|
import com.netsdk.demo.frame.Gate.CardManegerDialog; |
|
|
import com.netsdk.demo.module.DeviceLogModule; |
|
|
import com.netsdk.demo.module.DeviceLogModule; |
|
|
import com.netsdk.demo.module.GateModule; |
|
|
import com.netsdk.demo.module.GateModule; |
|
|
import com.netsdk.demo.module.LoginModule; |
|
|
import com.netsdk.demo.module.LoginModule; |
|
|
|
|
|
import com.netsdk.demo.module.TalkModule; |
|
|
import com.netsdk.lib.NetSDKLib; |
|
|
import com.netsdk.lib.NetSDKLib; |
|
|
import com.netsdk.lib.ToolKits; |
|
|
import com.netsdk.lib.ToolKits; |
|
|
import com.netsdk.lib.structure.DH_DEVICE_LOG_ITEM_EX; |
|
|
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.Memory; |
|
|
import com.sun.jna.Pointer; |
|
|
import com.sun.jna.Pointer; |
|
|
import com.yzx.IHardwareEquipment; |
|
|
import com.yzx.IHardwareEquipment; |
|
|
|
|
|
import com.yzx.pojo.FaceRecrodInfo; |
|
|
import com.yzx.pojo.UserFaceInfo; |
|
|
import com.yzx.pojo.UserFaceInfo; |
|
|
|
|
|
|
|
|
import javax.imageio.ImageIO; |
|
|
import javax.imageio.ImageIO; |
|
|
|
|
|
import javax.swing.*; |
|
|
import java.awt.image.BufferedImage; |
|
|
import java.awt.image.BufferedImage; |
|
|
import java.io.ByteArrayInputStream; |
|
|
import java.io.ByteArrayInputStream; |
|
|
import java.io.File; |
|
|
import java.io.File; |
|
|
import java.io.IOException; |
|
|
import java.io.IOException; |
|
|
import java.io.UnsupportedEncodingException; |
|
|
import java.io.UnsupportedEncodingException; |
|
|
import java.util.Arrays; |
|
|
|
|
|
import java.util.List; |
|
|
|
|
|
import java.util.Optional; |
|
|
|
|
|
|
|
|
import java.util.*; |
|
|
|
|
|
|
|
|
public class DaHua implements IHardwareEquipment { |
|
|
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 |
|
|
* @param startTime 开始时间格式 yyyy/MM/dd/hh/mm/ss |
|
|
@@ -70,18 +89,18 @@ public class DaHua implements IHardwareEquipment { |
|
|
* @param time |
|
|
* @param time |
|
|
* @return |
|
|
* @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()); |
|
|
this.login(info.getIp(),info.getPort(),info.getUsername(),info.getPassword()); |
|
|
|
|
|
|
|
|
int count = 0; |
|
|
int count = 0; |
|
|
int index = 0; |
|
|
int index = 0; |
|
|
int nFindCount = 10; |
|
|
|
|
|
|
|
|
int nFindCount = 100; |
|
|
|
|
|
|
|
|
// 日期: 为空,查询所有开门信息 |
|
|
// 日期: 为空,查询所有开门信息 |
|
|
// 获取查询句柄 |
|
|
// 获取查询句柄 |
|
|
if(!GateModule.findRecord(time)) { |
|
|
if(!GateModule.findRecord(time)) { |
|
|
return false; |
|
|
|
|
|
|
|
|
return faceRecrodInfoList; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// 查询具体信息 |
|
|
// 查询具体信息 |
|
|
@@ -95,23 +114,15 @@ public class DaHua implements IHardwareEquipment { |
|
|
index = i + count * nFindCount; |
|
|
index = i + count * nFindCount; |
|
|
|
|
|
|
|
|
try { |
|
|
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) { |
|
|
} catch (UnsupportedEncodingException e) { |
|
|
e.printStackTrace(); |
|
|
e.printStackTrace(); |
|
|
} |
|
|
} |
|
|
@@ -130,7 +141,7 @@ public class DaHua implements IHardwareEquipment { |
|
|
|
|
|
|
|
|
//退出登录 |
|
|
//退出登录 |
|
|
this.logout(); |
|
|
this.logout(); |
|
|
return true; |
|
|
|
|
|
|
|
|
return faceRecrodInfoList; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
@@ -156,6 +167,20 @@ public class DaHua implements IHardwareEquipment { |
|
|
return false; |
|
|
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 |
|
|
* @param userId |
|
|
@@ -246,6 +271,59 @@ public class DaHua implements IHardwareEquipment { |
|
|
return 0; |
|
|
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) { |
|
|
public boolean login(String ip,short port,String username,String password) { |
|
|
|