|
@ -1,1270 +1,1249 @@
|
|
|
package com.yihu.jw.care.netdevsdk;
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.sun.jna.Memory;
|
|
|
import com.sun.jna.Pointer;
|
|
|
import com.sun.jna.Structure;
|
|
|
import com.yihu.jw.care.dao.face.BaseDeviceFaceRecordDao;
|
|
|
import com.yihu.jw.care.dao.face.BaseDevicePatientFaceDao;
|
|
|
import com.yihu.jw.care.netdevsdk.lib.NetDEVSDKLib;
|
|
|
import com.yihu.jw.care.netdevsdk.lib.NetDEVSDKLib.NETDEV_DEVICE_TYPE_E;
|
|
|
import com.yihu.jw.care.netdevsdk.lib.NetDEVSDKLib.NETDEV_DEVICE_LOGIN_INFO_S;
|
|
|
import com.yihu.jw.care.netdevsdk.lib.NetDEVSDKLib.NETDEV_SELOG_INFO_S;
|
|
|
import com.yihu.jw.care.netdevsdk.lib.NetDEVSDKLib.NETDEV_DEVICE_BASE_INFO_S;
|
|
|
import com.yihu.jw.care.netdevsdk.lib.NetDEVSDKLib.NETDEV_LAPI_SUB_INFO_S;
|
|
|
import com.yihu.jw.care.netdevsdk.lib.NetDEVSDKLib.NETDEV_SUBSCRIBE_SUCC_INFO_S;
|
|
|
import com.yihu.jw.care.netdevsdk.lib.NetDEVSDKLib.NETDEV_LIB_INFO_S;
|
|
|
import com.yihu.jw.care.netdevsdk.lib.NetDEVSDKLib.NETDEV_PERSON_QUERY_INFO_S;
|
|
|
import com.yihu.jw.care.netdevsdk.lib.NetDEVSDKLib.NETDEV_BATCH_OPERATE_BASIC_S;
|
|
|
import com.yihu.jw.care.netdevsdk.lib.NetDEVSDKLib.NETDEV_PERSON_INFO_S;
|
|
|
import com.yihu.jw.care.netdevsdk.lib.NetDEVSDKLib.NETDEV_REGION_INFO_S;
|
|
|
import com.yihu.jw.care.netdevsdk.lib.NetDEVSDKLib.NETDEV_IMAGE_INFO_S;
|
|
|
import com.yihu.jw.care.netdevsdk.lib.NetDEVSDKLib.NETDEV_FILE_INFO_S;
|
|
|
import com.yihu.jw.care.netdevsdk.lib.NetDEVSDKLib.NETDEV_GENDER_TYPE_E;
|
|
|
import com.yihu.jw.care.netdevsdk.lib.NetDEVSDKLib.NETDEV_ID_TYPE_E;
|
|
|
import com.yihu.jw.care.netdevsdk.lib.NetDEVSDKLib.NETDEV_ALARM_LOG_COND_LIST_S;
|
|
|
import com.yihu.jw.care.netdevsdk.lib.NetDEVSDKLib.NETDEV_QUERY_INFO_S;
|
|
|
import com.yihu.jw.care.netdevsdk.lib.NetDEVSDKLib.NETDEV_QUERYCOND_TYPE_E;
|
|
|
import com.yihu.jw.care.netdevsdk.lib.NetDEVSDKLib.NETDEV_QUERYCOND_LOGICTYPE_E;
|
|
|
import com.yihu.jw.care.netdevsdk.lib.NetDEVSDKLib.NETDEV_SMART_ALARM_LOG_RESULT_INFO_S;
|
|
|
import com.yihu.jw.care.netdevsdk.lib.NetDEVSDKLib.NETDEV_FACE_RECORD_SNAPSHOT_INFO_S;
|
|
|
import com.yihu.jw.care.netdevsdk.lib.NetDEVSDKLib.NETDEV_FACE_ALARM_CMP_INFO_S;
|
|
|
import com.yihu.jw.care.netdevsdk.lib.NetDEVSDKLib.NETDEV_FACE_MEMBER_INFO_S;
|
|
|
import com.yihu.jw.care.netdevsdk.lib.NetDEVSDKLib.NETDEV_FACE_MEMBER_REGION_INFO_S;
|
|
|
import com.yihu.jw.care.netdevsdk.lib.NetDEVSDKLib.NETDEV_FACE_MEMBER_ID_INFO_S;
|
|
|
import com.yihu.jw.care.netdevsdk.lib.NetDEVSDKLib.NETDEV_FACE_ALARM_SNAP_IMAGE_S;
|
|
|
import com.yihu.jw.care.netdevsdk.lib.NetDEVSDKLib.NETDEV_FACE_ALARM_IMAGE_AREA_S;
|
|
|
import com.yihu.jw.care.netdevsdk.lib.NetDEVSDKLib.NETDEV_DISCOVERY_DEVINFO_S;
|
|
|
import com.yihu.jw.care.netdevsdk.lib.NetDEVSDKLib.NETDEV_REPORT_INFO_S;
|
|
|
import com.yihu.jw.care.netdevsdk.lib.NetDEVSDKLib.NETDEV_REPORT_TYPE_E;
|
|
|
import com.yihu.jw.care.netdevsdk.lib.NetDEVSDKLib.NETDEV_TMS_FACE_SNAPSHOT_PIC_INFO_S;
|
|
|
import com.yihu.jw.care.netdevsdk.lib.NetDEVSDKLib.NETDEV_PERSON_EVENT_INFO_S;
|
|
|
import com.yihu.jw.care.netdevsdk.lib.NetDEVSDKLib.NETDEV_ACS_ATTENDANCE_LOG_INFO_S;
|
|
|
import com.yihu.jw.care.netdevsdk.lib.NetDEVSDKLib.NETDEV_COMPARE_INFO_S;
|
|
|
import com.yihu.jw.care.netdevsdk.lib.NetDEVSDKLib.NETDEV_FACE_ATTR_S;
|
|
|
import com.yihu.jw.care.netdevsdk.util.Common;
|
|
|
import com.yihu.jw.entity.base.patient.BasePatientDO;
|
|
|
import com.yihu.jw.entity.care.device.BaseDeviceFaceRecordDO;
|
|
|
import com.yihu.jw.entity.care.device.BaseDevicePatientFaceDO;
|
|
|
import com.yihu.jw.patient.dao.BasePatientDao;
|
|
|
import com.yihu.jw.util.date.DateUtil;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.context.annotation.Profile;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import javax.annotation.PostConstruct;
|
|
|
import javax.swing.*;
|
|
|
import java.io.File;
|
|
|
import java.io.FileOutputStream;
|
|
|
import java.io.IOException;
|
|
|
import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* 宇视人脸摄像头sdk
|
|
|
* Created by yeshijie on 2022/5/19.
|
|
|
*/
|
|
|
@Service
|
|
|
public class NetDevSdkService {
|
|
|
|
|
|
@Autowired
|
|
|
private BaseDevicePatientFaceDao devicePatientFaceDao;
|
|
|
@Autowired
|
|
|
private BaseDeviceFaceRecordDao faceRecordDao;
|
|
|
@Autowired
|
|
|
private BasePatientDao patientDao;
|
|
|
|
|
|
private static final Logger logger = LoggerFactory.getLogger(NetDevSdkService.class);
|
|
|
|
|
|
// http://zhyzh.gongshu.gov.cn:3001/ 开vpn后可以本地调试
|
|
|
//IP:10.18.50.18 账号admin 密码Admin12345@ HTTP端口80 HTTPS端口 443 RTSP端口 554
|
|
|
private static final int dwPort = 80;//端口号 443
|
|
|
// private static final int dwPort = 3001;//端口号 443
|
|
|
private static final String strUserName = "admin";//用户名
|
|
|
private static final String strPassword = "Admin12345@";//密码
|
|
|
// private static final String strIPAddr = "zhyzh.gongshu.gov.cn";//ip地址
|
|
|
private static final String strIPAddr = "10.18.50.18";//ip地址
|
|
|
private static final Integer dwLoginProto = 1; /* 登录协议 0:onvif 1:私有*/
|
|
|
private static final Integer dwDeviceType = 1; /* 设备类型 IPC/NVR */
|
|
|
private static final String baseFaceImg = "https://zhyzh.gongshu.gov.cn/face/";
|
|
|
|
|
|
public void init(){
|
|
|
initSDK();
|
|
|
initLogin();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 初始化sdk
|
|
|
*/
|
|
|
private void initSDK(){
|
|
|
String strLogPath = "./sdklog/";
|
|
|
boolean bRet = NetDemo.netdevsdk.NETDEV_SetLogPath(strLogPath);
|
|
|
if(false == bRet){
|
|
|
logger.info("日志路径设置失败:"+ NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
}
|
|
|
|
|
|
bRet = NetDemo.netdevsdk.NETDEV_Init();
|
|
|
if(false == bRet){
|
|
|
logger.info("sdk初始化失败:"+NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
try {
|
|
|
Common.updateStructureByReferenceMethod = Structure.class.getDeclaredMethod("updateStructureByReference", Class.class, Structure.class, Pointer.class);
|
|
|
Common.updateStructureByReferenceMethod.setAccessible(true);
|
|
|
} catch (Exception e) {
|
|
|
throw new RuntimeException(e);
|
|
|
}
|
|
|
|
|
|
File file=new File(NetDemo.strPicturePath);
|
|
|
if(!file.exists()){
|
|
|
file.mkdir();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* SDK清理
|
|
|
*/
|
|
|
private void cleanupSDK(){
|
|
|
NetDemo.netdevsdk.NETDEV_Cleanup();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 登录
|
|
|
*/
|
|
|
public void initLogin(){
|
|
|
NETDEV_DEVICE_LOGIN_INFO_S stDevLoginInfo = new NETDEV_DEVICE_LOGIN_INFO_S();
|
|
|
System.arraycopy(strUserName.getBytes(), 0, stDevLoginInfo.szUserName, 0, strUserName.getBytes().length);
|
|
|
System.arraycopy(strPassword.getBytes(), 0, stDevLoginInfo.szPassword, 0, strPassword.getBytes().length);
|
|
|
System.arraycopy(strIPAddr.getBytes(), 0, stDevLoginInfo.szIPAddr, 0, strIPAddr.getBytes().length);
|
|
|
stDevLoginInfo.dwPort = dwPort;
|
|
|
stDevLoginInfo.dwLoginProto = dwLoginProto;
|
|
|
NETDEV_SELOG_INFO_S stSELogInfo = new NETDEV_SELOG_INFO_S();
|
|
|
|
|
|
NetDemo.lpUserID = NetDemo.netdevsdk.NETDEV_Login_V30(stDevLoginInfo, stSELogInfo);
|
|
|
if(NetDemo.lpUserID!=null){
|
|
|
//4.25.5 注册人脸抓拍上报回调函数
|
|
|
NetDemo.netdevsdk.NETDEV_SetFaceSnapshotCallBack(NetDemo.lpUserID, cbFaceSnapshotCallBack, null);
|
|
|
}else{
|
|
|
logger.info("登录sdk失败,error code"+NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
//获取设备信息
|
|
|
NetDemo.pstDeviceInfo = new NETDEV_DEVICE_BASE_INFO_S();
|
|
|
NetDemo.pstDeviceInfo.write();
|
|
|
boolean bRet = NetDemo.netdevsdk.NETDEV_GetDeviceBaseInfo(NetDemo.lpUserID,NetDemo.pstDeviceInfo);
|
|
|
if(bRet != true){
|
|
|
logger.info("获取设备信息失败:" + NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
return;
|
|
|
}
|
|
|
NetDemo.pstDeviceInfo.read();
|
|
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取设备信息
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONObject pstDeviceInfo(){
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
if(NetDemo.pstDeviceInfo==null){
|
|
|
logger.info("请先登录设备");
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
jsonObject.put("dwChlID",NetDemo.pstDeviceInfo.dwChlID);//视频输入通道号 Video input channel ID
|
|
|
jsonObject.put("dwDeviceType",NetDemo.pstDeviceInfo.dwDeviceType);//设备类型
|
|
|
jsonObject.put("dwDevCode",NetDemo.pstDeviceInfo.dwDevCode);//设备编号
|
|
|
jsonObject.put("dwCurrentLang",NetDemo.pstDeviceInfo.dwCurrentLang);//设备当前语言 参见枚举#NETDEV_LANG_TYPE_E Current language NETDEV_LANG_TYPE_E*
|
|
|
jsonObject.put("stBuildDate",NetDemo.pstDeviceInfo.stBuildDate.dwYear
|
|
|
+"-"+NetDemo.pstDeviceInfo.stBuildDate.dwMonth
|
|
|
+"-"+NetDemo.pstDeviceInfo.stBuildDate.dwDay
|
|
|
+" "+NetDemo.pstDeviceInfo.stBuildDate.dwHour
|
|
|
+":"+NetDemo.pstDeviceInfo.stBuildDate.dwMinute);//发布时间
|
|
|
jsonObject.put("szSerialNum",Common.byteArrayToString(NetDemo.pstDeviceInfo.szSerialNum));//设备序列号
|
|
|
jsonObject.put("szMacAddress",Common.byteArrayToString(NetDemo.pstDeviceInfo.szMacAddress));//IPv4的Mac地址
|
|
|
jsonObject.put("szDevName",Common.byteArrayToString(NetDemo.pstDeviceInfo.szDevName));//设备名称
|
|
|
jsonObject.put("szDevModel",Common.byteArrayToString(NetDemo.pstDeviceInfo.szDevModel));//设备型号
|
|
|
jsonObject.put("szVIIDVersion",Common.byteArrayToString(NetDemo.pstDeviceInfo.szVIIDVersion));//视图库组件版本号
|
|
|
jsonObject.put("szSoftwareVersion",Common.byteArrayToString(NetDemo.pstDeviceInfo.szSoftwareVersion));//内部软件版本
|
|
|
jsonObject.put("szFirmwareVersion",Common.byteArrayToString(NetDemo.pstDeviceInfo.szFirmwareVersion));//软件版本号
|
|
|
jsonObject.put("szHardewareID",Common.byteArrayToString(NetDemo.pstDeviceInfo.szHardewareID));//硬件标识
|
|
|
jsonObject.put("szUbootVersion",Common.byteArrayToString(NetDemo.pstDeviceInfo.szUbootVersion));//UBOOT引导版本
|
|
|
jsonObject.put("szManufacturer",Common.byteArrayToString(NetDemo.pstDeviceInfo.szManufacturer));//厂商名称
|
|
|
jsonObject.put("szProtoName",Common.byteArrayToString(NetDemo.pstDeviceInfo.szProtoName));//设备原型机名称
|
|
|
|
|
|
jsonObject.put("dwChlID",NetDemo.pstDeviceInfo.dwChlID);//
|
|
|
return jsonObject;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 设备搜索回调
|
|
|
*/
|
|
|
public void discoveryDevice(){
|
|
|
boolean flag1 = NetDemo.netdevsdk.NETDEV_SetDiscoveryCallBack(cbDiscoveryCallBack, null);
|
|
|
boolean flag2 = NetDemo.netdevsdk.NETDEV_Discovery("0.0.0.0", "0.0.0.0");
|
|
|
logger.info("flag1:"+flag1+",flag2:"+flag2);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 订阅告警信息
|
|
|
*/
|
|
|
public void SubscribeAlarm() {
|
|
|
if(null == NetDemo.lpUserID)
|
|
|
{
|
|
|
logger.info("未登录,请先登录");
|
|
|
return;
|
|
|
}
|
|
|
boolean bRet = NetDemo.netdevsdk.NETDEV_SetAlarmCallBack_V30(NetDemo.lpUserID, cbAlarmMessCallBack, null);
|
|
|
if(bRet) {
|
|
|
logger.info("订阅告警信息成功");
|
|
|
}else {
|
|
|
logger.info("订阅告警信息失败,错误码"+ NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 取消订阅告警信息
|
|
|
*/
|
|
|
public void UnSubscribeAlarm() {
|
|
|
if(null == NetDemo.lpUserID)
|
|
|
{
|
|
|
logger.info("未登录,请先登录");
|
|
|
return;
|
|
|
}
|
|
|
boolean bRet = NetDemo.netdevsdk.NETDEV_SetAlarmCallBack_V30(NetDemo.lpUserID, null, null);
|
|
|
if(bRet==false) {
|
|
|
logger.info("取消订阅告警信息失败,错误码"+ NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
return;
|
|
|
}else {
|
|
|
logger.info("取消订阅告警信息成功");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 4.25.7 注册人脸报警消息回调函数
|
|
|
*/
|
|
|
public void registerPersonAlarm() {
|
|
|
if(null == NetDemo.lpUserID)
|
|
|
{
|
|
|
logger.info("未登录,请先登录");
|
|
|
return;
|
|
|
}
|
|
|
boolean bRet = NetDemo.netdevsdk.NETDEV_SetPersonAlarmCallBack(NetDemo.lpUserID, personAlarmMessCB, NetDemo.lpUserID);
|
|
|
if(false == bRet)
|
|
|
{
|
|
|
logger.info("设置人脸报警消息回调方法失败,错误码"+NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
NETDEV_LAPI_SUB_INFO_S stSubInfo = new NETDEV_LAPI_SUB_INFO_S();
|
|
|
stSubInfo.udwType = 16;
|
|
|
stSubInfo.udwLibIDNum = 0xffff;
|
|
|
NETDEV_SUBSCRIBE_SUCC_INFO_S stSubSuccInfo = new NETDEV_SUBSCRIBE_SUCC_INFO_S();
|
|
|
bRet = NetDemo.netdevsdk.NETDEV_SubscibeLapiAlarm(NetDemo.lpUserID, stSubInfo, stSubSuccInfo);
|
|
|
if(false == bRet){
|
|
|
logger.info("注册人脸报警消息失败:{}", NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
return;
|
|
|
}else {
|
|
|
logger.info("注册人脸报警消息");
|
|
|
}
|
|
|
NetDemo.dwPersonRecognizeMointerID = stSubSuccInfo.udwID;
|
|
|
}
|
|
|
/**
|
|
|
* 取消注册人脸报警消息回调函数
|
|
|
*/
|
|
|
public static void cancelRegisterPersonAlarm() {
|
|
|
if(null == NetDemo.lpUserID)
|
|
|
{
|
|
|
logger.info("未登录,请先登录");
|
|
|
return;
|
|
|
}
|
|
|
boolean bRet = NetDemo.netdevsdk.NETDEV_UnSubLapiAlarm(NetDemo.lpUserID, NetDemo.dwPersonRecognizeMointerID);
|
|
|
if(false == bRet)
|
|
|
{
|
|
|
logger.info("取消注册人脸报警消息失败:{}", NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
return;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
logger.info("取消成功");
|
|
|
}
|
|
|
NetDemo.dwPersonRecognizeMointerID = -1;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 同步人脸数据
|
|
|
*/
|
|
|
public void synPatientFaceRecords(){
|
|
|
List<BaseDevicePatientFaceDO> list = devicePatientFaceDao.findListByType(1);
|
|
|
for (BaseDevicePatientFaceDO faceDO:list){
|
|
|
try {
|
|
|
sysPatientFaceRecord(faceDO);
|
|
|
}catch (Exception e){
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public String sysPatientFaceRecord(BaseDevicePatientFaceDO faceDO){
|
|
|
String endTime = "";
|
|
|
String idcard = faceDO.getIdcard();
|
|
|
String patient = faceDO.getPatient();
|
|
|
String name = faceDO.getName();
|
|
|
|
|
|
if(null == NetDemo.lpUserID){
|
|
|
return "未登录,请先登录";
|
|
|
}
|
|
|
if (StringUtils.isBlank(idcard)){
|
|
|
return "身份证不能为空";
|
|
|
}
|
|
|
|
|
|
if(StringUtils.isNotBlank(faceDO.getSynTime())&&faceDO.getSynTime().compareTo(DateUtil.getNextMinute(DateUtil.getStringDate(), -30))>0){
|
|
|
return "同步时间必须晚于当前时间30分钟";
|
|
|
}
|
|
|
|
|
|
do {
|
|
|
String startTime = faceDO.getSynTime();
|
|
|
if(StringUtils.isBlank(startTime)){
|
|
|
//第一次取当前时间的前30分钟数据
|
|
|
endTime = DateUtil.getStringDate();
|
|
|
startTime = DateUtil.getNextMinute(endTime, -30);
|
|
|
}else{
|
|
|
endTime = DateUtil.getNextMinute(startTime, 30);//采集30分钟后的数据
|
|
|
}
|
|
|
logger.info(name+",startTime="+startTime+",endTime="+endTime);
|
|
|
NETDEV_ALARM_LOG_COND_LIST_S stFindCond = new NETDEV_ALARM_LOG_COND_LIST_S();
|
|
|
stFindCond.dwPageRow = 5;
|
|
|
stFindCond.dwFirstRow = 0;
|
|
|
|
|
|
stFindCond.dwCondSize = 5;
|
|
|
stFindCond.astCondition[0] = new NETDEV_QUERY_INFO_S();
|
|
|
stFindCond.astCondition[1] = new NETDEV_QUERY_INFO_S();
|
|
|
stFindCond.astCondition[2] = new NETDEV_QUERY_INFO_S();
|
|
|
stFindCond.astCondition[3] = new NETDEV_QUERY_INFO_S();
|
|
|
stFindCond.astCondition[4] = new NETDEV_QUERY_INFO_S();
|
|
|
stFindCond.astCondition[0].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_TIME;
|
|
|
stFindCond.astCondition[0].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_GREATER;
|
|
|
Common.stringToByteArray(String.valueOf(Common.date2TimeStamp(startTime, NetDemo.DateFormat)), stFindCond.astCondition[0].szConditionData); //NETDEV_ALARM_SMART_FACE_MATCH_LIST
|
|
|
stFindCond.astCondition[1].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_TIME;
|
|
|
stFindCond.astCondition[1].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_NO_GREATER;
|
|
|
Common.stringToByteArray(String.valueOf(Common.date2TimeStamp(endTime, NetDemo.DateFormat)), stFindCond.astCondition[1].szConditionData); //NETDEV_ALARM_SMART_FACE_MATCH_LIST
|
|
|
stFindCond.astCondition[2].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_TIME;
|
|
|
stFindCond.astCondition[2].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_DESC_ORDER;
|
|
|
Common.stringToByteArray("", stFindCond.astCondition[2].szConditionData);
|
|
|
|
|
|
stFindCond.astCondition[3].dwQueryType = 57;
|
|
|
stFindCond.astCondition[3].dwLogicFlag = 0;
|
|
|
//1表示匹配成功
|
|
|
Common.stringToByteArray("1", stFindCond.astCondition[3].szConditionData);
|
|
|
|
|
|
stFindCond.astCondition[4].dwQueryType = 58;
|
|
|
stFindCond.astCondition[4].dwLogicFlag = 0;
|
|
|
Common.stringToByteArray(idcard, stFindCond.astCondition[4].szConditionData);
|
|
|
|
|
|
|
|
|
NETDEV_SMART_ALARM_LOG_RESULT_INFO_S stResultInfo = new NETDEV_SMART_ALARM_LOG_RESULT_INFO_S();
|
|
|
boolean bRet = false;
|
|
|
while(true)
|
|
|
{
|
|
|
Pointer lpFindRecordHandlePointer = NetDemo.netdevsdk.NETDEV_FindFaceRecordDetailList(NetDemo.lpUserID, stFindCond, stResultInfo);
|
|
|
if(lpFindRecordHandlePointer != null)
|
|
|
{
|
|
|
while(true)
|
|
|
{
|
|
|
logger.info("人脸数据stFindCond.dwFirstRow:"+stFindCond.dwFirstRow);
|
|
|
NETDEV_FACE_RECORD_SNAPSHOT_INFO_S stRecordInfo = new NETDEV_FACE_RECORD_SNAPSHOT_INFO_S();
|
|
|
stRecordInfo.stCompareInfo = new NETDEV_FACE_ALARM_CMP_INFO_S();
|
|
|
stRecordInfo.stCompareInfo.stSnapshotImage = new NETDEV_FACE_ALARM_SNAP_IMAGE_S();
|
|
|
stRecordInfo.stCompareInfo.stSnapshotImage.stBigImage = new NETDEV_FILE_INFO_S();
|
|
|
stRecordInfo.stCompareInfo.stSnapshotImage.stBigImage.pcData = new Memory(Common.NETDEMO_PICTURE_SIZE);
|
|
|
stRecordInfo.stCompareInfo.stSnapshotImage.stBigImage.udwSize = Common.NETDEMO_PICTURE_SIZE;
|
|
|
stRecordInfo.stCompareInfo.stSnapshotImage.stSmallImage = new NETDEV_FILE_INFO_S();
|
|
|
stRecordInfo.stCompareInfo.stSnapshotImage.stSmallImage.pcData = new Memory(Common.NETDEMO_PICTURE_SIZE);
|
|
|
stRecordInfo.stCompareInfo.stSnapshotImage.stSmallImage.udwSize = Common.NETDEMO_PICTURE_SIZE;
|
|
|
stRecordInfo.stCompareInfo.stSnapshotImage.stArea = new NETDEV_FACE_ALARM_IMAGE_AREA_S();
|
|
|
stRecordInfo.stCompareInfo.pstPersonInfo = new Memory(Common.NETDEMO_PICTURE_SIZE);
|
|
|
bRet = NetDemo.netdevsdk.NETDEV_FindNextFaceRecordDetail(lpFindRecordHandlePointer, stRecordInfo);
|
|
|
if(bRet == true)
|
|
|
{
|
|
|
String passTime = Common.timeStamp2Date(String.valueOf(stRecordInfo.udwPassTime),NetDemo.DateFormat);
|
|
|
String strTime = Common.getDate();
|
|
|
//nvr 没有大图 String strFileNameBig = NetDemo.strPicturePath + "_" + "PassTime_"+ stRecordInfo.udwPassTime + "_" + "_" + strTime +"BigImage.jpg";
|
|
|
String imgName = "PassTime_"+ stRecordInfo.udwPassTime + "_" + strTime +"SmallImage.jpg";
|
|
|
String strFileNameSmall = NetDemo.strPicturePath + imgName;
|
|
|
Common.savePicture(stRecordInfo.stCompareInfo.stSnapshotImage.stSmallImage.pcData, stRecordInfo.stCompareInfo.stSnapshotImage.stSmallImage.udwSize, strFileNameSmall);
|
|
|
BaseDeviceFaceRecordDO faceRecordDO = new BaseDeviceFaceRecordDO();
|
|
|
faceRecordDO.setPatient(patient);
|
|
|
faceRecordDO.setName(name);
|
|
|
faceRecordDO.setPassTime(passTime);
|
|
|
faceRecordDO.setCreateTime(new Date());
|
|
|
faceRecordDO.setImg(baseFaceImg+imgName);
|
|
|
faceRecordDao.save(faceRecordDO);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
bRet = NetDemo.netdevsdk.NETDEV_FindCloseFaceRecordDetail(lpFindRecordHandlePointer);
|
|
|
if(bRet != true)
|
|
|
{
|
|
|
logger.info("关闭人脸记录详情失败:{}", NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
}
|
|
|
if(stResultInfo.udwTotal <= stFindCond.dwFirstRow)
|
|
|
{
|
|
|
break;
|
|
|
}
|
|
|
stFindCond.dwFirstRow += stFindCond.dwPageRow;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
logger.info("查询结束");
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
faceDO.setSynTime(endTime);
|
|
|
devicePatientFaceDao.save(faceDO);
|
|
|
}while (endTime.compareTo(DateUtil.getNextMinute(DateUtil.getStringDate(), -30))<0);
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 更新人脸库人员数据
|
|
|
*/
|
|
|
public String updPatientFace(){
|
|
|
if(null == NetDemo.lpUserID){
|
|
|
return "未登录,请先登录";
|
|
|
}
|
|
|
|
|
|
Pointer pPersonLibHandle = NetDemo.netdevsdk.NETDEV_FindPersonLibList(NetDemo.lpUserID);
|
|
|
if(null == pPersonLibHandle){
|
|
|
return "获取人员库列表失败, "+NetDemo.netdevsdk.NETDEV_GetLastError();
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
boolean bRet = false;
|
|
|
while(true)
|
|
|
{
|
|
|
NETDEV_LIB_INFO_S stPersonLibInfo = new NETDEV_LIB_INFO_S();
|
|
|
bRet = NetDemo.netdevsdk.NETDEV_FindNextPersonLibInfo(pPersonLibHandle, stPersonLibInfo);
|
|
|
if(false == bRet)
|
|
|
{
|
|
|
logger.info("获取下一个人员库列表失败:{}", NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
break;
|
|
|
}
|
|
|
String szName = Common.byteArrayToString(stPersonLibInfo.szName);
|
|
|
NetDemo.mapPersonLib.put(szName, stPersonLibInfo);
|
|
|
logger.info("人脸信息--szName:"+Common.byteArrayToString(stPersonLibInfo.szName));
|
|
|
}
|
|
|
//关闭资源
|
|
|
bRet = NetDemo.netdevsdk.NETDEV_FindClosePersonLibList(pPersonLibHandle);
|
|
|
if(false == bRet)
|
|
|
{
|
|
|
return "关闭人脸库资源失败:"+ NetDemo.netdevsdk.NETDEV_GetLastError();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if(NetDemo.mapPersonLib.size()==0){
|
|
|
return "人员库不存在";
|
|
|
}
|
|
|
|
|
|
for (NETDEV_LIB_INFO_S stPersonLibInfo: NetDemo.mapPersonLib.values()){
|
|
|
NETDEV_PERSON_QUERY_INFO_S stQueryInfo = new NETDEV_PERSON_QUERY_INFO_S();
|
|
|
stQueryInfo.udwNum = 0;
|
|
|
stQueryInfo.udwOffset = 0;
|
|
|
stQueryInfo.udwLimit = 16;
|
|
|
NETDEV_BATCH_OPERATE_BASIC_S stQueryResultInfo = new NETDEV_BATCH_OPERATE_BASIC_S();
|
|
|
boolean bRet = false;
|
|
|
while(true)
|
|
|
{
|
|
|
Pointer lpPersonFindHandle = NetDemo.netdevsdk.NETDEV_FindPersonInfoList(NetDemo.lpUserID, stPersonLibInfo.udwID, stQueryInfo, stQueryResultInfo);
|
|
|
if(lpPersonFindHandle == null || stQueryResultInfo.udwTotal == 0)
|
|
|
{
|
|
|
logger.info("获取人员列表失败:{}", NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
break;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
stQueryInfo.udwOffset += stQueryInfo.udwLimit;
|
|
|
while(true)
|
|
|
{
|
|
|
NETDEV_PERSON_INFO_S stPersonInfo = new NETDEV_PERSON_INFO_S();
|
|
|
stPersonInfo.stRegionInfo = new NETDEV_REGION_INFO_S();
|
|
|
|
|
|
stPersonInfo.stImageInfo[0] = new NETDEV_IMAGE_INFO_S();
|
|
|
stPersonInfo.stImageInfo[0].stFileInfo = new NETDEV_FILE_INFO_S();
|
|
|
stPersonInfo.stImageInfo[0].stFileInfo.udwSize = 1048576;
|
|
|
stPersonInfo.stImageInfo[0].stFileInfo.pcData = new Memory(stPersonInfo.stImageInfo[0].stFileInfo.udwSize);
|
|
|
stPersonInfo.write();
|
|
|
bRet = NetDemo.netdevsdk.NETDEV_FindNextPersonInfo(lpPersonFindHandle, stPersonInfo);
|
|
|
if(bRet != true)
|
|
|
{
|
|
|
break;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
String udwPersonID = stPersonInfo.udwPersonID+"";
|
|
|
String szPersonName = Common.byteArrayToString(stPersonInfo.szPersonName);
|
|
|
if(stPersonInfo.udwIdentificationNum > 0){
|
|
|
String szNumber = Common.byteArrayToString(stPersonInfo.stIdentificationInfo[0].szNumber);
|
|
|
BaseDevicePatientFaceDO faceDO = devicePatientFaceDao.findByIdcard(szNumber);
|
|
|
if(faceDO == null){
|
|
|
BasePatientDO patientDO = patientDao.findByIdcard(szNumber);
|
|
|
if(patientDO!=null){
|
|
|
faceDO = new BaseDevicePatientFaceDO();
|
|
|
faceDO.setFaceId(udwPersonID);
|
|
|
faceDO.setIdcard(szNumber);
|
|
|
faceDO.setType(1);
|
|
|
faceDO.setName(szPersonName);
|
|
|
faceDO.setCreateTime(new Date());
|
|
|
faceDO.setPatient(patientDO.getId());
|
|
|
devicePatientFaceDao.save(faceDO);
|
|
|
}
|
|
|
}
|
|
|
}else{
|
|
|
logger.info("人员没有身份证-- udwPersonID:"+udwPersonID
|
|
|
+",szPersonName:"+szPersonName);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
//关闭资源
|
|
|
bRet = NetDemo.netdevsdk.NETDEV_FindClosePersonInfoList(lpPersonFindHandle);
|
|
|
if(bRet == false)
|
|
|
{
|
|
|
logger.info("关闭人员列表资源失败:{}", NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
}
|
|
|
}
|
|
|
if(stQueryInfo.udwOffset >= stQueryResultInfo.udwTotal)
|
|
|
{
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 查找人员库
|
|
|
*/
|
|
|
public void findPersonLib() {
|
|
|
if(null == NetDemo.lpUserID)
|
|
|
{
|
|
|
logger.info("未登录,请先登录");
|
|
|
return;
|
|
|
}
|
|
|
boolean bRet = false;
|
|
|
|
|
|
Pointer pPersonLibHandle = NetDemo.netdevsdk.NETDEV_FindPersonLibList(NetDemo.lpUserID);
|
|
|
if(null == pPersonLibHandle)
|
|
|
{
|
|
|
logger.info("获取人员库列表失败{}", NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
return;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
while(true)
|
|
|
{
|
|
|
NETDEV_LIB_INFO_S stPersonLibInfo = new NETDEV_LIB_INFO_S();
|
|
|
bRet = NetDemo.netdevsdk.NETDEV_FindNextPersonLibInfo(pPersonLibHandle, stPersonLibInfo);
|
|
|
if(false == bRet)
|
|
|
{
|
|
|
logger.info("获取下一个人员库列表失败:{}", NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
break;
|
|
|
}
|
|
|
NetDemo.mapPersonLib.put(Common.byteArrayToString(stPersonLibInfo.szName), stPersonLibInfo);
|
|
|
logger.info("人脸信息--szName:"+Common.byteArrayToString(stPersonLibInfo.szName)
|
|
|
+",udwID:"+stPersonLibInfo.udwID
|
|
|
+",udwType:"+stPersonLibInfo.udwType
|
|
|
+",udwPersonNum:"+stPersonLibInfo.udwPersonNum
|
|
|
+",udwFaceNum:"+stPersonLibInfo.udwFaceNum
|
|
|
+",udwMemberNum:"+stPersonLibInfo.udwMemberNum
|
|
|
+",udwLastChange:"+stPersonLibInfo.udwLastChange
|
|
|
+",szBelongIndex:"+Common.byteArrayToString(stPersonLibInfo.szBelongIndex)
|
|
|
+",bIsMonitored:"+stPersonLibInfo.bIsMonitored
|
|
|
+",byRes:"+Common.byteArrayToString(stPersonLibInfo.byRes));
|
|
|
|
|
|
}
|
|
|
//关闭资源
|
|
|
bRet = NetDemo.netdevsdk.NETDEV_FindClosePersonLibList(pPersonLibHandle);
|
|
|
if(false == bRet)
|
|
|
{
|
|
|
logger.info("关闭人脸库资源失败:{}", NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 查找人员(必须先查找人员库)
|
|
|
* @param szName
|
|
|
*/
|
|
|
public void findPerson(String szName) {
|
|
|
if(null == NetDemo.lpUserID){
|
|
|
logger.info("未登录,请先登录");
|
|
|
return;
|
|
|
}
|
|
|
if(NetDemo.mapPersonLib.size()==0)
|
|
|
{
|
|
|
logger.info("请先查找人员库");
|
|
|
return;
|
|
|
}
|
|
|
if(StringUtils.isBlank(szName))
|
|
|
{
|
|
|
logger.info("请输入查找的人员库名称");
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
NETDEV_LIB_INFO_S stPersonLibInfo = NetDemo.mapPersonLib.get(szName);
|
|
|
NETDEV_PERSON_QUERY_INFO_S stQueryInfo = new NETDEV_PERSON_QUERY_INFO_S();
|
|
|
stQueryInfo.udwNum = 0;
|
|
|
stQueryInfo.udwOffset = 0;
|
|
|
stQueryInfo.udwLimit = 16;
|
|
|
NETDEV_BATCH_OPERATE_BASIC_S stQueryResultInfo = new NETDEV_BATCH_OPERATE_BASIC_S();
|
|
|
boolean bRet = false;
|
|
|
NetDemo.mapPersonInfo.clear();
|
|
|
while(true)
|
|
|
{
|
|
|
Pointer lpPersonFindHandle = NetDemo.netdevsdk.NETDEV_FindPersonInfoList(NetDemo.lpUserID, stPersonLibInfo.udwID, stQueryInfo, stQueryResultInfo);
|
|
|
if(lpPersonFindHandle == null || stQueryResultInfo.udwTotal == 0)
|
|
|
{
|
|
|
logger.info("获取人员列表失败:{}", NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
break;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
stQueryInfo.udwOffset += stQueryInfo.udwLimit;
|
|
|
while(true)
|
|
|
{
|
|
|
NETDEV_PERSON_INFO_S stPersonInfo = new NETDEV_PERSON_INFO_S();
|
|
|
stPersonInfo.stRegionInfo = new NETDEV_REGION_INFO_S();
|
|
|
|
|
|
stPersonInfo.stImageInfo[0] = new NETDEV_IMAGE_INFO_S();
|
|
|
stPersonInfo.stImageInfo[0].stFileInfo = new NETDEV_FILE_INFO_S();
|
|
|
stPersonInfo.stImageInfo[0].stFileInfo.udwSize = 1048576;
|
|
|
stPersonInfo.stImageInfo[0].stFileInfo.pcData = new Memory(stPersonInfo.stImageInfo[0].stFileInfo.udwSize);
|
|
|
stPersonInfo.write();
|
|
|
bRet = NetDemo.netdevsdk.NETDEV_FindNextPersonInfo(lpPersonFindHandle, stPersonInfo);
|
|
|
if(bRet != true)
|
|
|
{
|
|
|
break;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
NetDemo.mapPersonInfo.put(String.valueOf(stPersonInfo.udwPersonID), stPersonInfo);
|
|
|
Vector<String> PersonLibVector = new Vector<String>();
|
|
|
PersonLibVector.add(String.valueOf(stPersonInfo.udwPersonID));
|
|
|
PersonLibVector.add(Common.byteArrayToString(stPersonInfo.szPersonName));
|
|
|
|
|
|
if(stPersonInfo.udwGender == NETDEV_GENDER_TYPE_E.NETDEV_GENDER_TYPE_MAN)
|
|
|
{
|
|
|
PersonLibVector.add("man");
|
|
|
}
|
|
|
else if(stPersonInfo.udwGender == NETDEV_GENDER_TYPE_E.NETDEV_GENDER_TYPE_WOMAN)
|
|
|
{
|
|
|
PersonLibVector.add("woman");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
PersonLibVector.add("unknow");
|
|
|
}
|
|
|
|
|
|
PersonLibVector.add(Common.byteArrayToString(stPersonInfo.szBirthday));
|
|
|
|
|
|
PersonLibVector.add(Common.byteArrayToString(stPersonInfo.stRegionInfo.szNation));
|
|
|
PersonLibVector.add(Common.byteArrayToString(stPersonInfo.stRegionInfo.szProvince));
|
|
|
PersonLibVector.add(Common.byteArrayToString(stPersonInfo.stRegionInfo.szCity));
|
|
|
|
|
|
if(stPersonInfo.udwIdentificationNum > 0)
|
|
|
{
|
|
|
if(stPersonInfo.stIdentificationInfo[0].udwType == NETDEV_ID_TYPE_E.NETDEV_CERTIFICATE_TYPE_ID)
|
|
|
{
|
|
|
PersonLibVector.add("Identity card");
|
|
|
}
|
|
|
else if(stPersonInfo.stIdentificationInfo[0].udwType == NETDEV_ID_TYPE_E.NETDEV_CERTIFICATE_TYPE_PASSPORT)
|
|
|
{
|
|
|
PersonLibVector.add("Passport");
|
|
|
}
|
|
|
else if(stPersonInfo.stIdentificationInfo[0].udwType == NETDEV_ID_TYPE_E.NETDEV_CERTIFICATE_TYPE_DRIVING_LICENSE)
|
|
|
{
|
|
|
PersonLibVector.add("Driving license");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
PersonLibVector.add("other");
|
|
|
}
|
|
|
PersonLibVector.add(Common.byteArrayToString(stPersonInfo.stIdentificationInfo[0].szNumber));
|
|
|
}
|
|
|
|
|
|
if(stPersonInfo.udwIdentificationNum > 0){
|
|
|
logger.info("人员-- udwPersonID:"+stPersonInfo.udwPersonID
|
|
|
+",szPersonName:"+Common.byteArrayToString(stPersonInfo.szPersonName)
|
|
|
+",udwGender:"+stPersonInfo.udwGender
|
|
|
+",szBirthday:"+Common.byteArrayToString(stPersonInfo.szBirthday)
|
|
|
+",szNation:"+Common.byteArrayToString(stPersonInfo.stRegionInfo.szNation)
|
|
|
+",szProvince:"+Common.byteArrayToString(stPersonInfo.stRegionInfo.szProvince)
|
|
|
+",szCity:"+Common.byteArrayToString(stPersonInfo.stRegionInfo.szCity)
|
|
|
+",udwType:"+stPersonInfo.stIdentificationInfo[0].udwType
|
|
|
+",szNumber:"+Common.byteArrayToString(stPersonInfo.stIdentificationInfo[0].szNumber));
|
|
|
}else{
|
|
|
logger.info("人员-- udwPersonID:"+stPersonInfo.udwPersonID
|
|
|
+",szPersonName:"+Common.byteArrayToString(stPersonInfo.szPersonName)
|
|
|
+",udwGender:"+stPersonInfo.udwGender
|
|
|
+",szBirthday:"+Common.byteArrayToString(stPersonInfo.szBirthday)
|
|
|
+",szNation:"+Common.byteArrayToString(stPersonInfo.stRegionInfo.szNation)
|
|
|
+",szProvince:"+Common.byteArrayToString(stPersonInfo.stRegionInfo.szProvince)
|
|
|
+",szCity:"+Common.byteArrayToString(stPersonInfo.stRegionInfo.szCity));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
//关闭资源
|
|
|
bRet = NetDemo.netdevsdk.NETDEV_FindClosePersonInfoList(lpPersonFindHandle);
|
|
|
if(bRet == false)
|
|
|
{
|
|
|
logger.info("关闭人员列表资源失败:{}", NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
}
|
|
|
}
|
|
|
if(stQueryInfo.udwOffset >= stQueryResultInfo.udwTotal)
|
|
|
{
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 4.25.14 人脸识别记录
|
|
|
*/
|
|
|
public void queryPassRecord(String strBeginTime,String strEndTime,String getPersonPassAlarmSource) {
|
|
|
if(null == NetDemo.lpUserID)
|
|
|
{
|
|
|
logger.info("未登录,请先登录");
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
if(false == Common.isValidDate(strBeginTime,NetDemo.DateFormat) ||false == Common.isValidDate(strEndTime, NetDemo.DateFormat))
|
|
|
{
|
|
|
logger.info("请输入开始时间结束时间");
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
long get1=Common.date2TimeStamp(strBeginTime,NetDemo.DateFormat);
|
|
|
long get2=Common.date2TimeStamp(strEndTime, NetDemo.DateFormat);
|
|
|
if(get1>get2)
|
|
|
{
|
|
|
logger.info("开始时间不能大于结束时间");
|
|
|
return;
|
|
|
}
|
|
|
NETDEV_ALARM_LOG_COND_LIST_S stFindCond = new NETDEV_ALARM_LOG_COND_LIST_S();
|
|
|
stFindCond.dwPageRow = 16;
|
|
|
stFindCond.dwFirstRow = 0;
|
|
|
if(StringUtils.isBlank(getPersonPassAlarmSource))
|
|
|
{
|
|
|
logger.info("没有告警源");
|
|
|
stFindCond.dwCondSize = 5;
|
|
|
stFindCond.astCondition[0] = new NETDEV_QUERY_INFO_S();
|
|
|
stFindCond.astCondition[1] = new NETDEV_QUERY_INFO_S();
|
|
|
stFindCond.astCondition[2] = new NETDEV_QUERY_INFO_S();
|
|
|
stFindCond.astCondition[3] = new NETDEV_QUERY_INFO_S();
|
|
|
stFindCond.astCondition[4] = new NETDEV_QUERY_INFO_S();
|
|
|
stFindCond.astCondition[0].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_TIME;
|
|
|
stFindCond.astCondition[0].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_NO_LESS;
|
|
|
Common.stringToByteArray(String.valueOf(Common.date2TimeStamp(strBeginTime, NetDemo.DateFormat)), stFindCond.astCondition[0].szConditionData); //NETDEV_ALARM_SMART_FACE_MATCH_LIST
|
|
|
stFindCond.astCondition[1].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_TIME;
|
|
|
stFindCond.astCondition[1].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_NO_GREATER;
|
|
|
Common.stringToByteArray(String.valueOf(Common.date2TimeStamp(strEndTime, NetDemo.DateFormat)), stFindCond.astCondition[1].szConditionData); //NETDEV_ALARM_SMART_FACE_MATCH_LIST
|
|
|
stFindCond.astCondition[2].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_TIME;
|
|
|
stFindCond.astCondition[2].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_DESC_ORDER;
|
|
|
Common.stringToByteArray("", stFindCond.astCondition[2].szConditionData);
|
|
|
|
|
|
stFindCond.astCondition[3].dwQueryType = 57;
|
|
|
stFindCond.astCondition[3].dwLogicFlag = 0;
|
|
|
Common.stringToByteArray("1", stFindCond.astCondition[3].szConditionData);
|
|
|
|
|
|
stFindCond.astCondition[4].dwQueryType = 58;
|
|
|
stFindCond.astCondition[4].dwLogicFlag = 0;
|
|
|
Common.stringToByteArray("330103193303040742", stFindCond.astCondition[4].szConditionData);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
stFindCond.dwCondSize = 4;
|
|
|
stFindCond.astCondition[0] = new NETDEV_QUERY_INFO_S();
|
|
|
stFindCond.astCondition[1] = new NETDEV_QUERY_INFO_S();
|
|
|
stFindCond.astCondition[2] = new NETDEV_QUERY_INFO_S();
|
|
|
stFindCond.astCondition[3] = new NETDEV_QUERY_INFO_S();
|
|
|
stFindCond.astCondition[0].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_TIME;
|
|
|
stFindCond.astCondition[0].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_NO_LESS;
|
|
|
Common.stringToByteArray(String.valueOf(Common.date2TimeStamp(strBeginTime, NetDemo.DateFormat)), stFindCond.astCondition[0].szConditionData); //NETDEV_ALARM_SMART_FACE_MATCH_LIST
|
|
|
stFindCond.astCondition[1].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_TIME;
|
|
|
stFindCond.astCondition[1].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_NO_GREATER;
|
|
|
Common.stringToByteArray(String.valueOf(Common.date2TimeStamp(strEndTime, NetDemo.DateFormat)), stFindCond.astCondition[1].szConditionData); //NETDEV_ALARM_SMART_FACE_MATCH_LIST
|
|
|
stFindCond.astCondition[2].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_TIME;
|
|
|
stFindCond.astCondition[2].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_DESC_ORDER;
|
|
|
Common.stringToByteArray("", stFindCond.astCondition[2].szConditionData);
|
|
|
stFindCond.astCondition[3].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_ALARMSRCNAME;
|
|
|
stFindCond.astCondition[3].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_DIM_QUERY;
|
|
|
Common.stringToByteArray(getPersonPassAlarmSource, stFindCond.astCondition[3].szConditionData);
|
|
|
}
|
|
|
NETDEV_SMART_ALARM_LOG_RESULT_INFO_S stResultInfo = new NETDEV_SMART_ALARM_LOG_RESULT_INFO_S();
|
|
|
boolean bRet = false;
|
|
|
while(true)
|
|
|
{
|
|
|
Pointer lpFindRecordHandlePointer = NetDemo.netdevsdk.NETDEV_FindFaceRecordDetailList(NetDemo.lpUserID, stFindCond, stResultInfo);
|
|
|
if(lpFindRecordHandlePointer != null)
|
|
|
{
|
|
|
|
|
|
while(true)
|
|
|
{
|
|
|
logger.info("人脸数据stFindCond.dwFirstRow:"+stFindCond.dwFirstRow);
|
|
|
NETDEV_FACE_RECORD_SNAPSHOT_INFO_S stRecordInfo = new NETDEV_FACE_RECORD_SNAPSHOT_INFO_S();
|
|
|
stRecordInfo.stCompareInfo = new NETDEV_FACE_ALARM_CMP_INFO_S();
|
|
|
stRecordInfo.stCompareInfo.stMemberInfo = new NETDEV_FACE_MEMBER_INFO_S();
|
|
|
stRecordInfo.stCompareInfo.stMemberInfo.stMemberRegionInfo = new NETDEV_FACE_MEMBER_REGION_INFO_S();
|
|
|
stRecordInfo.stCompareInfo.stMemberInfo.stMemberIDInfo = new NETDEV_FACE_MEMBER_ID_INFO_S();
|
|
|
stRecordInfo.stCompareInfo.stMemberInfo.stMemberImageInfo = new NETDEV_FILE_INFO_S();
|
|
|
stRecordInfo.stCompareInfo.stMemberInfo.stMemberImageInfo.pcData = new Memory(Common.NETDEMO_PICTURE_SIZE);
|
|
|
stRecordInfo.stCompareInfo.stMemberInfo.stMemberImageInfo.udwSize = Common.NETDEMO_PICTURE_SIZE;
|
|
|
stRecordInfo.stCompareInfo.stMemberInfo.stMemberSemiInfo = new NETDEV_FILE_INFO_S();
|
|
|
stRecordInfo.stCompareInfo.stMemberInfo.stMemberSemiInfo.pcData = new Memory(Common.NETDEMO_PICTURE_SIZE);
|
|
|
stRecordInfo.stCompareInfo.stMemberInfo.stMemberSemiInfo.udwSize = Common.NETDEMO_PICTURE_SIZE;
|
|
|
stRecordInfo.stCompareInfo.stSnapshotImage = new NETDEV_FACE_ALARM_SNAP_IMAGE_S();
|
|
|
stRecordInfo.stCompareInfo.stSnapshotImage.stBigImage = new NETDEV_FILE_INFO_S();
|
|
|
stRecordInfo.stCompareInfo.stSnapshotImage.stBigImage.pcData = new Memory(Common.NETDEMO_PICTURE_SIZE);
|
|
|
stRecordInfo.stCompareInfo.stSnapshotImage.stBigImage.udwSize = Common.NETDEMO_PICTURE_SIZE;
|
|
|
stRecordInfo.stCompareInfo.stSnapshotImage.stSmallImage = new NETDEV_FILE_INFO_S();
|
|
|
stRecordInfo.stCompareInfo.stSnapshotImage.stSmallImage.pcData = new Memory(Common.NETDEMO_PICTURE_SIZE);
|
|
|
stRecordInfo.stCompareInfo.stSnapshotImage.stSmallImage.udwSize = Common.NETDEMO_PICTURE_SIZE;
|
|
|
stRecordInfo.stCompareInfo.stSnapshotImage.stArea = new NETDEV_FACE_ALARM_IMAGE_AREA_S();
|
|
|
bRet = NetDemo.netdevsdk.NETDEV_FindNextFaceRecordDetail(lpFindRecordHandlePointer, stRecordInfo);
|
|
|
if(bRet == true)
|
|
|
{
|
|
|
logger.info("szMemberName="+Common.byteArrayToString(stRecordInfo.stCompareInfo.stMemberInfo.szMemberName));
|
|
|
String strTime = Common.getDate();
|
|
|
String strFileNameBig = NetDemo.strPicturePath + "_" + "PassTime_"+ stRecordInfo.udwPassTime + "_" + "_" + strTime +"BigImage.jpg";
|
|
|
String strFileNameSmall = NetDemo.strPicturePath + "_" + "PassTime_"+ stRecordInfo.udwPassTime + "_" + strTime +"SmallImage.jpg";
|
|
|
Common.savePicture(stRecordInfo.stCompareInfo.stSnapshotImage.stSmallImage.pcData, stRecordInfo.stCompareInfo.stSnapshotImage.stSmallImage.udwSize, strFileNameSmall);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
bRet = NetDemo.netdevsdk.NETDEV_FindCloseFaceRecordDetail(lpFindRecordHandlePointer);
|
|
|
if(bRet != true)
|
|
|
{
|
|
|
logger.info("关闭人脸记录详情失败:{}", NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
return;
|
|
|
}
|
|
|
if(stResultInfo.udwTotal <= stFindCond.dwFirstRow)
|
|
|
{
|
|
|
break;
|
|
|
}
|
|
|
stFindCond.dwFirstRow += stFindCond.dwPageRow;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
String strPicPath = System.getProperty("user.dir").replaceAll("%20"," ") +File.separator +"Picture";
|
|
|
logger.info("查询结束.路径:"+strPicPath);
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 告警记录 //数据量较大,建议采用分页形式展示
|
|
|
* @param strBeginTime
|
|
|
*/
|
|
|
public static void queryAlarmRecord(String strBeginTime,String strEndTime,Integer monitorType) {
|
|
|
if(null == NetDemo.lpUserID)
|
|
|
{
|
|
|
logger.info("未登录,请先登录");
|
|
|
return;
|
|
|
}
|
|
|
if(false == Common.isValidDate(strBeginTime, NetDemo.DateFormat) ||false == Common.isValidDate(strEndTime,NetDemo.DateFormat))
|
|
|
{
|
|
|
logger.info("Please check that the time format is correct.");
|
|
|
return;
|
|
|
}
|
|
|
long get1=Common.date2TimeStamp(strBeginTime,NetDemo.DateFormat);
|
|
|
long get2=Common.date2TimeStamp(strEndTime, NetDemo.DateFormat);
|
|
|
if(get1>get2) {
|
|
|
logger.info(" Start time can not more than end time");
|
|
|
return;
|
|
|
}
|
|
|
NETDEV_ALARM_LOG_COND_LIST_S stFindCond = new NETDEV_ALARM_LOG_COND_LIST_S();
|
|
|
stFindCond.dwPageRow = 16;
|
|
|
stFindCond.dwFirstRow = 0;
|
|
|
stFindCond.dwCondSize = 4;
|
|
|
stFindCond.astCondition[0] = new NETDEV_QUERY_INFO_S();
|
|
|
stFindCond.astCondition[1] = new NETDEV_QUERY_INFO_S();
|
|
|
stFindCond.astCondition[2] = new NETDEV_QUERY_INFO_S();
|
|
|
stFindCond.astCondition[3] = new NETDEV_QUERY_INFO_S();
|
|
|
stFindCond.astCondition[0].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_ALARMTYPE;
|
|
|
stFindCond.astCondition[0].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_EQUAL;
|
|
|
if(monitorType == 0)
|
|
|
{
|
|
|
Common.stringToByteArray("1018", stFindCond.astCondition[0].szConditionData); //NETDEV_ALARM_SMART_FACE_MATCH_LIST
|
|
|
}
|
|
|
else if(monitorType == 1)
|
|
|
{
|
|
|
Common.stringToByteArray("1020", stFindCond.astCondition[0].szConditionData); //NETDEV_ALARM_SMART_FACE_MISMATCH_LIST
|
|
|
}
|
|
|
stFindCond.astCondition[1].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_TIME;
|
|
|
stFindCond.astCondition[1].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_NO_LESS;
|
|
|
Common.stringToByteArray(String.valueOf(Common.date2TimeStamp(strBeginTime, NetDemo.DateFormat)), stFindCond.astCondition[1].szConditionData);
|
|
|
|
|
|
stFindCond.astCondition[2].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_TIME;
|
|
|
stFindCond.astCondition[2].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_NO_GREATER;
|
|
|
Common.stringToByteArray(String.valueOf(Common.date2TimeStamp(strEndTime, NetDemo.DateFormat)), stFindCond.astCondition[2].szConditionData);
|
|
|
|
|
|
stFindCond.astCondition[3].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_TIME;
|
|
|
stFindCond.astCondition[3].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_DESC_ORDER;
|
|
|
Common.stringToByteArray("", stFindCond.astCondition[3].szConditionData); //NETDEV_ALARM_SMART_FACE_MATCH_LIST
|
|
|
|
|
|
NETDEV_SMART_ALARM_LOG_RESULT_INFO_S stResultInfo = new NETDEV_SMART_ALARM_LOG_RESULT_INFO_S();
|
|
|
boolean bRet = false;
|
|
|
while(true)
|
|
|
{
|
|
|
logger.info("告警记录1");
|
|
|
Pointer lpFindRecordHandlePointer = NetDemo.netdevsdk.NETDEV_FindFaceRecordDetailList(NetDemo.lpUserID, stFindCond, stResultInfo);
|
|
|
if(lpFindRecordHandlePointer != null)
|
|
|
{
|
|
|
while(true)
|
|
|
{
|
|
|
logger.info("人脸数据1");
|
|
|
NETDEV_FACE_RECORD_SNAPSHOT_INFO_S stRecordInfo = new NETDEV_FACE_RECORD_SNAPSHOT_INFO_S();
|
|
|
stRecordInfo.stCompareInfo = new NETDEV_FACE_ALARM_CMP_INFO_S();
|
|
|
stRecordInfo.stCompareInfo.stMemberInfo = new NETDEV_FACE_MEMBER_INFO_S();
|
|
|
stRecordInfo.stCompareInfo.stMemberInfo.stMemberRegionInfo = new NETDEV_FACE_MEMBER_REGION_INFO_S();
|
|
|
stRecordInfo.stCompareInfo.stMemberInfo.stMemberIDInfo = new NETDEV_FACE_MEMBER_ID_INFO_S();
|
|
|
stRecordInfo.stCompareInfo.stMemberInfo.stMemberImageInfo = new NETDEV_FILE_INFO_S();
|
|
|
stRecordInfo.stCompareInfo.stMemberInfo.stMemberImageInfo.pcData = new Memory(Common.NETDEMO_PICTURE_SIZE);
|
|
|
stRecordInfo.stCompareInfo.stMemberInfo.stMemberImageInfo.udwSize = Common.NETDEMO_PICTURE_SIZE;
|
|
|
stRecordInfo.stCompareInfo.stMemberInfo.stMemberSemiInfo = new NETDEV_FILE_INFO_S();
|
|
|
stRecordInfo.stCompareInfo.stMemberInfo.stMemberSemiInfo.pcData = new Memory(Common.NETDEMO_PICTURE_SIZE);
|
|
|
stRecordInfo.stCompareInfo.stMemberInfo.stMemberSemiInfo.udwSize = Common.NETDEMO_PICTURE_SIZE;
|
|
|
|
|
|
stRecordInfo.stCompareInfo.stSnapshotImage = new NETDEV_FACE_ALARM_SNAP_IMAGE_S();
|
|
|
stRecordInfo.stCompareInfo.stSnapshotImage.stBigImage = new NETDEV_FILE_INFO_S();
|
|
|
stRecordInfo.stCompareInfo.stSnapshotImage.stBigImage.pcData = new Memory(Common.NETDEMO_PICTURE_SIZE);
|
|
|
stRecordInfo.stCompareInfo.stSnapshotImage.stBigImage.udwSize = Common.NETDEMO_PICTURE_SIZE;
|
|
|
stRecordInfo.stCompareInfo.stSnapshotImage.stSmallImage = new NETDEV_FILE_INFO_S();
|
|
|
stRecordInfo.stCompareInfo.stSnapshotImage.stSmallImage.pcData = new Memory(Common.NETDEMO_PICTURE_SIZE);
|
|
|
stRecordInfo.stCompareInfo.stSnapshotImage.stSmallImage.udwSize = Common.NETDEMO_PICTURE_SIZE;
|
|
|
stRecordInfo.stCompareInfo.stSnapshotImage.stArea = new NETDEV_FACE_ALARM_IMAGE_AREA_S();
|
|
|
|
|
|
bRet = NetDemo.netdevsdk.NETDEV_FindNextFaceRecordDetail(lpFindRecordHandlePointer, stRecordInfo);
|
|
|
if(bRet == true)
|
|
|
{
|
|
|
String strTime = Common.getDate();
|
|
|
// if(NetDemo.jComboBoxDeviceType.getSelectedIndex() == 1)
|
|
|
//package com.yihu.jw.care.netdevsdk;
|
|
|
//
|
|
|
//import com.alibaba.fastjson.JSONObject;
|
|
|
//import com.sun.jna.Memory;
|
|
|
//import com.sun.jna.Pointer;
|
|
|
//import com.sun.jna.Structure;
|
|
|
//import com.yihu.jw.care.dao.face.BaseDeviceFaceRecordDao;
|
|
|
//import com.yihu.jw.care.dao.face.BaseDevicePatientFaceDao;
|
|
|
//import com.yihu.jw.care.netdevsdk.lib.NetDEVSDKLib;
|
|
|
//import com.yihu.jw.care.netdevsdk.lib.NetDEVSDKLib.*;
|
|
|
//import com.yihu.jw.care.netdevsdk.util.Common;
|
|
|
//import com.yihu.jw.entity.base.patient.BasePatientDO;
|
|
|
//import com.yihu.jw.entity.care.device.BaseDeviceFaceRecordDO;
|
|
|
//import com.yihu.jw.entity.care.device.BaseDevicePatientFaceDO;
|
|
|
//import com.yihu.jw.patient.dao.BasePatientDao;
|
|
|
//import com.yihu.jw.util.date.DateUtil;
|
|
|
//import org.apache.commons.lang.StringUtils;
|
|
|
//import org.slf4j.Logger;
|
|
|
//import org.slf4j.LoggerFactory;
|
|
|
//import org.springframework.beans.factory.annotation.Autowired;
|
|
|
//import org.springframework.stereotype.Service;
|
|
|
//
|
|
|
//import java.io.File;
|
|
|
//import java.io.FileOutputStream;
|
|
|
//import java.io.IOException;
|
|
|
//import java.util.Date;
|
|
|
//import java.util.List;
|
|
|
//import java.util.Vector;
|
|
|
//
|
|
|
///**
|
|
|
// * 宇视人脸摄像头sdk
|
|
|
// * Created by yeshijie on 2022/5/19.
|
|
|
// */
|
|
|
//@Service
|
|
|
//public class NetDevSdkService {
|
|
|
//
|
|
|
// @Autowired
|
|
|
// private BaseDevicePatientFaceDao devicePatientFaceDao;
|
|
|
// @Autowired
|
|
|
// private BaseDeviceFaceRecordDao faceRecordDao;
|
|
|
// @Autowired
|
|
|
// private BasePatientDao patientDao;
|
|
|
//
|
|
|
// private static final Logger logger = LoggerFactory.getLogger(NetDevSdkService.class);
|
|
|
//
|
|
|
// // http://zhyzh.gongshu.gov.cn:3001/ 开vpn后可以本地调试
|
|
|
// //IP:10.18.50.18 账号admin 密码Admin12345@ HTTP端口80 HTTPS端口 443 RTSP端口 554
|
|
|
// private static final int dwPort = 80;//端口号 443
|
|
|
//// private static final int dwPort = 3001;//端口号 443
|
|
|
// private static final String strUserName = "admin";//用户名
|
|
|
// private static final String strPassword = "Admin12345@";//密码
|
|
|
//// private static final String strIPAddr = "zhyzh.gongshu.gov.cn";//ip地址
|
|
|
// private static final String strIPAddr = "10.18.50.18";//ip地址
|
|
|
// private static final Integer dwLoginProto = 1; /* 登录协议 0:onvif 1:私有*/
|
|
|
// private static final Integer dwDeviceType = 1; /* 设备类型 IPC/NVR */
|
|
|
// private static final String baseFaceImg = "https://zhyzh.gongshu.gov.cn/face/";
|
|
|
//
|
|
|
// public void init(){
|
|
|
// initSDK();
|
|
|
// initLogin();
|
|
|
// }
|
|
|
//
|
|
|
// /**
|
|
|
// * 初始化sdk
|
|
|
// */
|
|
|
// private void initSDK(){
|
|
|
// String strLogPath = "./sdklog/";
|
|
|
// boolean bRet = NetDemo.netdevsdk.NETDEV_SetLogPath(strLogPath);
|
|
|
// if(false == bRet){
|
|
|
// logger.info("日志路径设置失败:"+ NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
// }
|
|
|
//
|
|
|
// bRet = NetDemo.netdevsdk.NETDEV_Init();
|
|
|
// if(false == bRet){
|
|
|
// logger.info("sdk初始化失败:"+NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
// return;
|
|
|
// }
|
|
|
//
|
|
|
// try {
|
|
|
// Common.updateStructureByReferenceMethod = Structure.class.getDeclaredMethod("updateStructureByReference", Class.class, Structure.class, Pointer.class);
|
|
|
// Common.updateStructureByReferenceMethod.setAccessible(true);
|
|
|
// } catch (Exception e) {
|
|
|
// throw new RuntimeException(e);
|
|
|
// }
|
|
|
//
|
|
|
// File file=new File(NetDemo.strPicturePath);
|
|
|
// if(!file.exists()){
|
|
|
// file.mkdir();
|
|
|
// }
|
|
|
// }
|
|
|
//
|
|
|
// /**
|
|
|
// * SDK清理
|
|
|
// */
|
|
|
// private void cleanupSDK(){
|
|
|
// NetDemo.netdevsdk.NETDEV_Cleanup();
|
|
|
// }
|
|
|
//
|
|
|
// /**
|
|
|
// * 登录
|
|
|
// */
|
|
|
// public void initLogin(){
|
|
|
// NETDEV_DEVICE_LOGIN_INFO_S stDevLoginInfo = new NETDEV_DEVICE_LOGIN_INFO_S();
|
|
|
// System.arraycopy(strUserName.getBytes(), 0, stDevLoginInfo.szUserName, 0, strUserName.getBytes().length);
|
|
|
// System.arraycopy(strPassword.getBytes(), 0, stDevLoginInfo.szPassword, 0, strPassword.getBytes().length);
|
|
|
// System.arraycopy(strIPAddr.getBytes(), 0, stDevLoginInfo.szIPAddr, 0, strIPAddr.getBytes().length);
|
|
|
// stDevLoginInfo.dwPort = dwPort;
|
|
|
// stDevLoginInfo.dwLoginProto = dwLoginProto;
|
|
|
// NETDEV_SELOG_INFO_S stSELogInfo = new NETDEV_SELOG_INFO_S();
|
|
|
//
|
|
|
// NetDemo.lpUserID = NetDemo.netdevsdk.NETDEV_Login_V30(stDevLoginInfo, stSELogInfo);
|
|
|
// if(NetDemo.lpUserID!=null){
|
|
|
// //4.25.5 注册人脸抓拍上报回调函数
|
|
|
// NetDemo.netdevsdk.NETDEV_SetFaceSnapshotCallBack(NetDemo.lpUserID, cbFaceSnapshotCallBack, null);
|
|
|
// }else{
|
|
|
// logger.info("登录sdk失败,error code"+NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
// return;
|
|
|
// }
|
|
|
//
|
|
|
// //获取设备信息
|
|
|
// NetDemo.pstDeviceInfo = new NETDEV_DEVICE_BASE_INFO_S();
|
|
|
// NetDemo.pstDeviceInfo.write();
|
|
|
// boolean bRet = NetDemo.netdevsdk.NETDEV_GetDeviceBaseInfo(NetDemo.lpUserID,NetDemo.pstDeviceInfo);
|
|
|
// if(bRet != true){
|
|
|
// logger.info("获取设备信息失败:" + NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
// return;
|
|
|
// }
|
|
|
// NetDemo.pstDeviceInfo.read();
|
|
|
//
|
|
|
// }
|
|
|
//
|
|
|
// /**
|
|
|
// * 获取设备信息
|
|
|
// * @return
|
|
|
// */
|
|
|
// public JSONObject pstDeviceInfo(){
|
|
|
// JSONObject jsonObject = new JSONObject();
|
|
|
// if(NetDemo.pstDeviceInfo==null){
|
|
|
// logger.info("请先登录设备");
|
|
|
// return null;
|
|
|
// }
|
|
|
//
|
|
|
// jsonObject.put("dwChlID",NetDemo.pstDeviceInfo.dwChlID);//视频输入通道号 Video input channel ID
|
|
|
// jsonObject.put("dwDeviceType",NetDemo.pstDeviceInfo.dwDeviceType);//设备类型
|
|
|
// jsonObject.put("dwDevCode",NetDemo.pstDeviceInfo.dwDevCode);//设备编号
|
|
|
// jsonObject.put("dwCurrentLang",NetDemo.pstDeviceInfo.dwCurrentLang);//设备当前语言 参见枚举#NETDEV_LANG_TYPE_E Current language NETDEV_LANG_TYPE_E*
|
|
|
// jsonObject.put("stBuildDate",NetDemo.pstDeviceInfo.stBuildDate.dwYear
|
|
|
// +"-"+NetDemo.pstDeviceInfo.stBuildDate.dwMonth
|
|
|
// +"-"+NetDemo.pstDeviceInfo.stBuildDate.dwDay
|
|
|
// +" "+NetDemo.pstDeviceInfo.stBuildDate.dwHour
|
|
|
// +":"+NetDemo.pstDeviceInfo.stBuildDate.dwMinute);//发布时间
|
|
|
// jsonObject.put("szSerialNum",Common.byteArrayToString(NetDemo.pstDeviceInfo.szSerialNum));//设备序列号
|
|
|
// jsonObject.put("szMacAddress",Common.byteArrayToString(NetDemo.pstDeviceInfo.szMacAddress));//IPv4的Mac地址
|
|
|
// jsonObject.put("szDevName",Common.byteArrayToString(NetDemo.pstDeviceInfo.szDevName));//设备名称
|
|
|
// jsonObject.put("szDevModel",Common.byteArrayToString(NetDemo.pstDeviceInfo.szDevModel));//设备型号
|
|
|
// jsonObject.put("szVIIDVersion",Common.byteArrayToString(NetDemo.pstDeviceInfo.szVIIDVersion));//视图库组件版本号
|
|
|
// jsonObject.put("szSoftwareVersion",Common.byteArrayToString(NetDemo.pstDeviceInfo.szSoftwareVersion));//内部软件版本
|
|
|
// jsonObject.put("szFirmwareVersion",Common.byteArrayToString(NetDemo.pstDeviceInfo.szFirmwareVersion));//软件版本号
|
|
|
// jsonObject.put("szHardewareID",Common.byteArrayToString(NetDemo.pstDeviceInfo.szHardewareID));//硬件标识
|
|
|
// jsonObject.put("szUbootVersion",Common.byteArrayToString(NetDemo.pstDeviceInfo.szUbootVersion));//UBOOT引导版本
|
|
|
// jsonObject.put("szManufacturer",Common.byteArrayToString(NetDemo.pstDeviceInfo.szManufacturer));//厂商名称
|
|
|
// jsonObject.put("szProtoName",Common.byteArrayToString(NetDemo.pstDeviceInfo.szProtoName));//设备原型机名称
|
|
|
//
|
|
|
// jsonObject.put("dwChlID",NetDemo.pstDeviceInfo.dwChlID);//
|
|
|
// return jsonObject;
|
|
|
// }
|
|
|
//
|
|
|
// /**
|
|
|
// * 设备搜索回调
|
|
|
// */
|
|
|
// public void discoveryDevice(){
|
|
|
// boolean flag1 = NetDemo.netdevsdk.NETDEV_SetDiscoveryCallBack(cbDiscoveryCallBack, null);
|
|
|
// boolean flag2 = NetDemo.netdevsdk.NETDEV_Discovery("0.0.0.0", "0.0.0.0");
|
|
|
// logger.info("flag1:"+flag1+",flag2:"+flag2);
|
|
|
// }
|
|
|
//
|
|
|
// /**
|
|
|
// * 订阅告警信息
|
|
|
// */
|
|
|
// public void SubscribeAlarm() {
|
|
|
// if(null == NetDemo.lpUserID)
|
|
|
// {
|
|
|
// logger.info("未登录,请先登录");
|
|
|
// return;
|
|
|
// }
|
|
|
// boolean bRet = NetDemo.netdevsdk.NETDEV_SetAlarmCallBack_V30(NetDemo.lpUserID, cbAlarmMessCallBack, null);
|
|
|
// if(bRet) {
|
|
|
// logger.info("订阅告警信息成功");
|
|
|
// }else {
|
|
|
// logger.info("订阅告警信息失败,错误码"+ NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
// }
|
|
|
// }
|
|
|
//
|
|
|
// /**
|
|
|
// * 取消订阅告警信息
|
|
|
// */
|
|
|
// public void UnSubscribeAlarm() {
|
|
|
// if(null == NetDemo.lpUserID)
|
|
|
// {
|
|
|
// logger.info("未登录,请先登录");
|
|
|
// return;
|
|
|
// }
|
|
|
// boolean bRet = NetDemo.netdevsdk.NETDEV_SetAlarmCallBack_V30(NetDemo.lpUserID, null, null);
|
|
|
// if(bRet==false) {
|
|
|
// logger.info("取消订阅告警信息失败,错误码"+ NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
// return;
|
|
|
// }else {
|
|
|
// logger.info("取消订阅告警信息成功");
|
|
|
// }
|
|
|
// }
|
|
|
//
|
|
|
// /**
|
|
|
// * 4.25.7 注册人脸报警消息回调函数
|
|
|
// */
|
|
|
// public void registerPersonAlarm() {
|
|
|
// if(null == NetDemo.lpUserID)
|
|
|
// {
|
|
|
// logger.info("未登录,请先登录");
|
|
|
// return;
|
|
|
// }
|
|
|
// boolean bRet = NetDemo.netdevsdk.NETDEV_SetPersonAlarmCallBack(NetDemo.lpUserID, personAlarmMessCB, NetDemo.lpUserID);
|
|
|
// if(false == bRet)
|
|
|
// {
|
|
|
// logger.info("设置人脸报警消息回调方法失败,错误码"+NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
// return;
|
|
|
// }
|
|
|
//
|
|
|
// NETDEV_LAPI_SUB_INFO_S stSubInfo = new NETDEV_LAPI_SUB_INFO_S();
|
|
|
// stSubInfo.udwType = 16;
|
|
|
// stSubInfo.udwLibIDNum = 0xffff;
|
|
|
// NETDEV_SUBSCRIBE_SUCC_INFO_S stSubSuccInfo = new NETDEV_SUBSCRIBE_SUCC_INFO_S();
|
|
|
// bRet = NetDemo.netdevsdk.NETDEV_SubscibeLapiAlarm(NetDemo.lpUserID, stSubInfo, stSubSuccInfo);
|
|
|
// if(false == bRet){
|
|
|
// logger.info("注册人脸报警消息失败:{}", NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
// return;
|
|
|
// }else {
|
|
|
// logger.info("注册人脸报警消息");
|
|
|
// }
|
|
|
// NetDemo.dwPersonRecognizeMointerID = stSubSuccInfo.udwID;
|
|
|
// }
|
|
|
// /**
|
|
|
// * 取消注册人脸报警消息回调函数
|
|
|
// */
|
|
|
// public static void cancelRegisterPersonAlarm() {
|
|
|
// if(null == NetDemo.lpUserID)
|
|
|
// {
|
|
|
// logger.info("未登录,请先登录");
|
|
|
// return;
|
|
|
// }
|
|
|
// boolean bRet = NetDemo.netdevsdk.NETDEV_UnSubLapiAlarm(NetDemo.lpUserID, NetDemo.dwPersonRecognizeMointerID);
|
|
|
// if(false == bRet)
|
|
|
// {
|
|
|
// logger.info("取消注册人脸报警消息失败:{}", NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
// return;
|
|
|
// }
|
|
|
// else
|
|
|
// {
|
|
|
// logger.info("取消成功");
|
|
|
// }
|
|
|
// NetDemo.dwPersonRecognizeMointerID = -1;
|
|
|
// }
|
|
|
//
|
|
|
// /**
|
|
|
// * 同步人脸数据
|
|
|
// */
|
|
|
// public void synPatientFaceRecords(){
|
|
|
// List<BaseDevicePatientFaceDO> list = devicePatientFaceDao.findListByType(1);
|
|
|
// for (BaseDevicePatientFaceDO faceDO:list){
|
|
|
// try {
|
|
|
// sysPatientFaceRecord(faceDO);
|
|
|
// }catch (Exception e){
|
|
|
// e.printStackTrace();
|
|
|
// }
|
|
|
// }
|
|
|
// }
|
|
|
//
|
|
|
// public String sysPatientFaceRecord(BaseDevicePatientFaceDO faceDO){
|
|
|
// String endTime = "";
|
|
|
// String idcard = faceDO.getIdcard();
|
|
|
// String patient = faceDO.getPatient();
|
|
|
// String name = faceDO.getName();
|
|
|
// int minus = 30;
|
|
|
// if(null == NetDemo.lpUserID){
|
|
|
// return "未登录,请先登录";
|
|
|
// }
|
|
|
// if (StringUtils.isBlank(idcard)){
|
|
|
// return "身份证不能为空";
|
|
|
// }
|
|
|
//
|
|
|
// if(StringUtils.isNotBlank(faceDO.getSynTime())&&faceDO.getSynTime().compareTo(DateUtil.getNextMinute(DateUtil.getStringDate(), -minus))>0){
|
|
|
// return "同步时间必须晚于当前时间30分钟";
|
|
|
// }
|
|
|
//
|
|
|
// do {
|
|
|
// String startTime = faceDO.getSynTime();
|
|
|
// if(StringUtils.isBlank(startTime)){
|
|
|
// //第一次取当前时间的前30分钟数据
|
|
|
// endTime = DateUtil.getStringDate();
|
|
|
// startTime = DateUtil.getNextMinute(endTime, -minus);
|
|
|
// }else{
|
|
|
// endTime = DateUtil.getNextMinute(startTime, minus);//采集30分钟后的数据
|
|
|
// }
|
|
|
// logger.info(name+",startTime="+startTime+",endTime="+endTime);
|
|
|
// NETDEV_ALARM_LOG_COND_LIST_S stFindCond = new NETDEV_ALARM_LOG_COND_LIST_S();
|
|
|
// stFindCond.dwPageRow = 5;
|
|
|
// stFindCond.dwFirstRow = 0;
|
|
|
//
|
|
|
// stFindCond.dwCondSize = 5;
|
|
|
// stFindCond.astCondition[0] = new NETDEV_QUERY_INFO_S();
|
|
|
// stFindCond.astCondition[1] = new NETDEV_QUERY_INFO_S();
|
|
|
// stFindCond.astCondition[2] = new NETDEV_QUERY_INFO_S();
|
|
|
// stFindCond.astCondition[3] = new NETDEV_QUERY_INFO_S();
|
|
|
// stFindCond.astCondition[4] = new NETDEV_QUERY_INFO_S();
|
|
|
// stFindCond.astCondition[0].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_TIME;
|
|
|
// stFindCond.astCondition[0].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_GREATER;
|
|
|
// Common.stringToByteArray(String.valueOf(Common.date2TimeStamp(startTime, NetDemo.DateFormat)), stFindCond.astCondition[0].szConditionData); //NETDEV_ALARM_SMART_FACE_MATCH_LIST
|
|
|
// stFindCond.astCondition[1].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_TIME;
|
|
|
// stFindCond.astCondition[1].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_NO_GREATER;
|
|
|
// Common.stringToByteArray(String.valueOf(Common.date2TimeStamp(endTime, NetDemo.DateFormat)), stFindCond.astCondition[1].szConditionData); //NETDEV_ALARM_SMART_FACE_MATCH_LIST
|
|
|
// stFindCond.astCondition[2].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_TIME;
|
|
|
// stFindCond.astCondition[2].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_DESC_ORDER;
|
|
|
// Common.stringToByteArray("", stFindCond.astCondition[2].szConditionData);
|
|
|
//
|
|
|
// stFindCond.astCondition[3].dwQueryType = 57;
|
|
|
// stFindCond.astCondition[3].dwLogicFlag = 0;
|
|
|
// //1表示匹配成功
|
|
|
// Common.stringToByteArray("1", stFindCond.astCondition[3].szConditionData);
|
|
|
//
|
|
|
// stFindCond.astCondition[4].dwQueryType = 58;
|
|
|
// stFindCond.astCondition[4].dwLogicFlag = 0;
|
|
|
// Common.stringToByteArray(idcard, stFindCond.astCondition[4].szConditionData);
|
|
|
//
|
|
|
//
|
|
|
// NETDEV_SMART_ALARM_LOG_RESULT_INFO_S stResultInfo = new NETDEV_SMART_ALARM_LOG_RESULT_INFO_S();
|
|
|
// boolean bRet = false;
|
|
|
// while(true)
|
|
|
// {
|
|
|
// Pointer lpFindRecordHandlePointer = NetDemo.netdevsdk.NETDEV_FindFaceRecordDetailList(NetDemo.lpUserID, stFindCond, stResultInfo);
|
|
|
// logger.info("告警记录总数udwTotal:"+stResultInfo.udwTotal);
|
|
|
// logger.info("此次返回告警记录个数udwNum:"+stResultInfo.udwNum);
|
|
|
// if(lpFindRecordHandlePointer != null)
|
|
|
// {
|
|
|
// while(true)
|
|
|
// {
|
|
|
// logger.info("人脸数据stFindCond.dwFirstRow:"+stFindCond.dwFirstRow);
|
|
|
// NETDEV_FACE_RECORD_SNAPSHOT_INFO_S stRecordInfo = new NETDEV_FACE_RECORD_SNAPSHOT_INFO_S();
|
|
|
// stRecordInfo.stCompareInfo = new NETDEV_FACE_ALARM_CMP_INFO_S();
|
|
|
// stRecordInfo.stCompareInfo.stMemberInfo = new NETDEV_FACE_MEMBER_INFO_S();
|
|
|
// stRecordInfo.stCompareInfo.stMemberInfo.stMemberRegionInfo = new NETDEV_FACE_MEMBER_REGION_INFO_S();
|
|
|
// stRecordInfo.stCompareInfo.stMemberInfo.stMemberIDInfo = new NETDEV_FACE_MEMBER_ID_INFO_S();
|
|
|
// stRecordInfo.stCompareInfo.stMemberInfo.stMemberImageInfo = new NETDEV_FILE_INFO_S();
|
|
|
// stRecordInfo.stCompareInfo.stMemberInfo.stMemberImageInfo.pcData = new Memory(Common.NETDEMO_PICTURE_SIZE);
|
|
|
// stRecordInfo.stCompareInfo.stMemberInfo.stMemberImageInfo.udwSize = Common.NETDEMO_PICTURE_SIZE;
|
|
|
// stRecordInfo.stCompareInfo.stMemberInfo.stMemberSemiInfo = new NETDEV_FILE_INFO_S();
|
|
|
// stRecordInfo.stCompareInfo.stMemberInfo.stMemberSemiInfo.pcData = new Memory(Common.NETDEMO_PICTURE_SIZE);
|
|
|
// stRecordInfo.stCompareInfo.stMemberInfo.stMemberSemiInfo.udwSize = Common.NETDEMO_PICTURE_SIZE;
|
|
|
// stRecordInfo.stCompareInfo.stSnapshotImage = new NETDEV_FACE_ALARM_SNAP_IMAGE_S();
|
|
|
// stRecordInfo.stCompareInfo.stSnapshotImage.stBigImage = new NETDEV_FILE_INFO_S();
|
|
|
// stRecordInfo.stCompareInfo.stSnapshotImage.stBigImage.pcData = new Memory(Common.NETDEMO_PICTURE_SIZE);
|
|
|
// stRecordInfo.stCompareInfo.stSnapshotImage.stBigImage.udwSize = Common.NETDEMO_PICTURE_SIZE;
|
|
|
// stRecordInfo.stCompareInfo.stSnapshotImage.stSmallImage = new NETDEV_FILE_INFO_S();
|
|
|
// stRecordInfo.stCompareInfo.stSnapshotImage.stSmallImage.pcData = new Memory(Common.NETDEMO_PICTURE_SIZE);
|
|
|
// stRecordInfo.stCompareInfo.stSnapshotImage.stSmallImage.udwSize = Common.NETDEMO_PICTURE_SIZE;
|
|
|
// stRecordInfo.stCompareInfo.stSnapshotImage.stArea = new NETDEV_FACE_ALARM_IMAGE_AREA_S();
|
|
|
// stRecordInfo.stCompareInfo.pstPersonInfo = new Memory(Common.NETDEMO_PICTURE_SIZE);
|
|
|
// bRet = NetDemo.netdevsdk.NETDEV_FindNextFaceRecordDetail(lpFindRecordHandlePointer, stRecordInfo);
|
|
|
// if(bRet == true)
|
|
|
// {
|
|
|
// String passTime = Common.timeStamp2Date(String.valueOf(stRecordInfo.udwPassTime),NetDemo.DateFormat);
|
|
|
// String strTime = Common.getDate();
|
|
|
// //nvr 没有大图 String strFileNameBig = NetDemo.strPicturePath + "_" + "PassTime_"+ stRecordInfo.udwPassTime + "_" + "_" + strTime +"BigImage.jpg";
|
|
|
// String imgName = "PassTime_"+ stRecordInfo.udwPassTime + "_" + strTime +"SmallImage.jpg";
|
|
|
// String strFileNameSmall = NetDemo.strPicturePath + imgName;
|
|
|
// Common.savePicture(stRecordInfo.stCompareInfo.stSnapshotImage.stSmallImage.pcData, stRecordInfo.stCompareInfo.stSnapshotImage.stSmallImage.udwSize, strFileNameSmall);
|
|
|
// BaseDeviceFaceRecordDO faceRecordDO = new BaseDeviceFaceRecordDO();
|
|
|
// faceRecordDO.setPatient(patient);
|
|
|
// faceRecordDO.setName(name);
|
|
|
// faceRecordDO.setPassTime(passTime);
|
|
|
// faceRecordDO.setCreateTime(new Date());
|
|
|
// faceRecordDO.setImg(baseFaceImg+imgName);
|
|
|
// faceRecordDao.save(faceRecordDO);
|
|
|
// }
|
|
|
// else
|
|
|
// {
|
|
|
// break;
|
|
|
// }
|
|
|
// }
|
|
|
// bRet = NetDemo.netdevsdk.NETDEV_FindCloseFaceRecordDetail(lpFindRecordHandlePointer);
|
|
|
// if(bRet != true)
|
|
|
// {
|
|
|
// logger.info("关闭人脸记录详情失败:{}", NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
// }
|
|
|
// if(stResultInfo.udwTotal <= stFindCond.dwFirstRow)
|
|
|
// {
|
|
|
// break;
|
|
|
// }
|
|
|
// stFindCond.dwFirstRow += stFindCond.dwPageRow;
|
|
|
// }
|
|
|
// else
|
|
|
// {
|
|
|
// logger.info("查询结束");
|
|
|
// break;
|
|
|
// }
|
|
|
// }
|
|
|
// faceDO.setSynTime(endTime);
|
|
|
// devicePatientFaceDao.save(faceDO);
|
|
|
// }while (endTime.compareTo(DateUtil.getNextMinute(DateUtil.getStringDate(), -minus))<0);
|
|
|
// return null;
|
|
|
// }
|
|
|
//
|
|
|
// /**
|
|
|
// * 更新人脸库人员数据
|
|
|
// */
|
|
|
// public String updPatientFace(){
|
|
|
// if(null == NetDemo.lpUserID){
|
|
|
// return "未登录,请先登录";
|
|
|
// }
|
|
|
//
|
|
|
// Pointer pPersonLibHandle = NetDemo.netdevsdk.NETDEV_FindPersonLibList(NetDemo.lpUserID);
|
|
|
// if(null == pPersonLibHandle){
|
|
|
// return "获取人员库列表失败, "+NetDemo.netdevsdk.NETDEV_GetLastError();
|
|
|
// }
|
|
|
// else
|
|
|
// {
|
|
|
// boolean bRet = false;
|
|
|
// while(true)
|
|
|
// {
|
|
|
// NETDEV_LIB_INFO_S stPersonLibInfo = new NETDEV_LIB_INFO_S();
|
|
|
// bRet = NetDemo.netdevsdk.NETDEV_FindNextPersonLibInfo(pPersonLibHandle, stPersonLibInfo);
|
|
|
// if(false == bRet)
|
|
|
// {
|
|
|
// logger.info("获取下一个人员库列表失败:{}", NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
// break;
|
|
|
// }
|
|
|
// String szName = Common.byteArrayToString(stPersonLibInfo.szName);
|
|
|
// NetDemo.mapPersonLib.put(szName, stPersonLibInfo);
|
|
|
// logger.info("人脸信息--szName:"+Common.byteArrayToString(stPersonLibInfo.szName));
|
|
|
// }
|
|
|
// //关闭资源
|
|
|
// bRet = NetDemo.netdevsdk.NETDEV_FindClosePersonLibList(pPersonLibHandle);
|
|
|
// if(false == bRet)
|
|
|
// {
|
|
|
// return "关闭人脸库资源失败:"+ NetDemo.netdevsdk.NETDEV_GetLastError();
|
|
|
// }
|
|
|
// }
|
|
|
//
|
|
|
// if(NetDemo.mapPersonLib.size()==0){
|
|
|
// return "人员库不存在";
|
|
|
// }
|
|
|
//
|
|
|
// for (NETDEV_LIB_INFO_S stPersonLibInfo: NetDemo.mapPersonLib.values()){
|
|
|
// NETDEV_PERSON_QUERY_INFO_S stQueryInfo = new NETDEV_PERSON_QUERY_INFO_S();
|
|
|
// stQueryInfo.udwNum = 0;
|
|
|
// stQueryInfo.udwOffset = 0;
|
|
|
// stQueryInfo.udwLimit = 16;
|
|
|
// NETDEV_BATCH_OPERATE_BASIC_S stQueryResultInfo = new NETDEV_BATCH_OPERATE_BASIC_S();
|
|
|
// boolean bRet = false;
|
|
|
// while(true)
|
|
|
// {
|
|
|
// Pointer lpPersonFindHandle = NetDemo.netdevsdk.NETDEV_FindPersonInfoList(NetDemo.lpUserID, stPersonLibInfo.udwID, stQueryInfo, stQueryResultInfo);
|
|
|
// if(lpPersonFindHandle == null || stQueryResultInfo.udwTotal == 0)
|
|
|
// {
|
|
|
// logger.info("获取人员列表失败:{}", NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
// break;
|
|
|
// }
|
|
|
// else
|
|
|
// {
|
|
|
// stQueryInfo.udwOffset += stQueryInfo.udwLimit;
|
|
|
// while(true)
|
|
|
// {
|
|
|
// NETDEV_PERSON_INFO_S stPersonInfo = new NETDEV_PERSON_INFO_S();
|
|
|
// stPersonInfo.stRegionInfo = new NETDEV_REGION_INFO_S();
|
|
|
//
|
|
|
// stPersonInfo.stImageInfo[0] = new NETDEV_IMAGE_INFO_S();
|
|
|
// stPersonInfo.stImageInfo[0].stFileInfo = new NETDEV_FILE_INFO_S();
|
|
|
// stPersonInfo.stImageInfo[0].stFileInfo.udwSize = 1048576;
|
|
|
// stPersonInfo.stImageInfo[0].stFileInfo.pcData = new Memory(stPersonInfo.stImageInfo[0].stFileInfo.udwSize);
|
|
|
// stPersonInfo.write();
|
|
|
// bRet = NetDemo.netdevsdk.NETDEV_FindNextPersonInfo(lpPersonFindHandle, stPersonInfo);
|
|
|
// if(bRet != true)
|
|
|
// {
|
|
|
// break;
|
|
|
// }
|
|
|
// else
|
|
|
// {
|
|
|
// String udwPersonID = stPersonInfo.udwPersonID+"";
|
|
|
// String szPersonName = Common.byteArrayToString(stPersonInfo.szPersonName);
|
|
|
// if(stPersonInfo.udwIdentificationNum > 0){
|
|
|
// String szNumber = Common.byteArrayToString(stPersonInfo.stIdentificationInfo[0].szNumber);
|
|
|
// BaseDevicePatientFaceDO faceDO = devicePatientFaceDao.findByIdcard(szNumber);
|
|
|
// if(faceDO == null){
|
|
|
// BasePatientDO patientDO = patientDao.findByIdcard(szNumber);
|
|
|
// if(patientDO!=null){
|
|
|
// faceDO = new BaseDevicePatientFaceDO();
|
|
|
// faceDO.setFaceId(udwPersonID);
|
|
|
// faceDO.setIdcard(szNumber);
|
|
|
// faceDO.setType(1);
|
|
|
// faceDO.setName(szPersonName);
|
|
|
// faceDO.setCreateTime(new Date());
|
|
|
// faceDO.setPatient(patientDO.getId());
|
|
|
// devicePatientFaceDao.save(faceDO);
|
|
|
// }
|
|
|
// }
|
|
|
// }else{
|
|
|
// logger.info("人员没有身份证-- udwPersonID:"+udwPersonID
|
|
|
// +",szPersonName:"+szPersonName);
|
|
|
// }
|
|
|
// }
|
|
|
// }
|
|
|
// //关闭资源
|
|
|
// bRet = NetDemo.netdevsdk.NETDEV_FindClosePersonInfoList(lpPersonFindHandle);
|
|
|
// if(bRet == false)
|
|
|
// {
|
|
|
// logger.info("关闭人员列表资源失败:{}", NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
// }
|
|
|
// }
|
|
|
// if(stQueryInfo.udwOffset >= stQueryResultInfo.udwTotal)
|
|
|
// {
|
|
|
// break;
|
|
|
// }
|
|
|
// }
|
|
|
// }
|
|
|
//
|
|
|
// return null;
|
|
|
// }
|
|
|
//
|
|
|
// /**
|
|
|
// * 查找人员库
|
|
|
// */
|
|
|
// public void findPersonLib() {
|
|
|
// if(null == NetDemo.lpUserID)
|
|
|
// {
|
|
|
// logger.info("未登录,请先登录");
|
|
|
// return;
|
|
|
// }
|
|
|
// boolean bRet = false;
|
|
|
//
|
|
|
// Pointer pPersonLibHandle = NetDemo.netdevsdk.NETDEV_FindPersonLibList(NetDemo.lpUserID);
|
|
|
// if(null == pPersonLibHandle)
|
|
|
// {
|
|
|
// logger.info("获取人员库列表失败{}", NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
// return;
|
|
|
// }
|
|
|
// else
|
|
|
// {
|
|
|
// while(true)
|
|
|
// {
|
|
|
// NETDEV_LIB_INFO_S stPersonLibInfo = new NETDEV_LIB_INFO_S();
|
|
|
// bRet = NetDemo.netdevsdk.NETDEV_FindNextPersonLibInfo(pPersonLibHandle, stPersonLibInfo);
|
|
|
// if(false == bRet)
|
|
|
// {
|
|
|
// logger.info("获取下一个人员库列表失败:{}", NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
// break;
|
|
|
// }
|
|
|
// NetDemo.mapPersonLib.put(Common.byteArrayToString(stPersonLibInfo.szName), stPersonLibInfo);
|
|
|
// logger.info("人脸信息--szName:"+Common.byteArrayToString(stPersonLibInfo.szName)
|
|
|
// +",udwID:"+stPersonLibInfo.udwID
|
|
|
// +",udwType:"+stPersonLibInfo.udwType
|
|
|
// +",udwPersonNum:"+stPersonLibInfo.udwPersonNum
|
|
|
// +",udwFaceNum:"+stPersonLibInfo.udwFaceNum
|
|
|
// +",udwMemberNum:"+stPersonLibInfo.udwMemberNum
|
|
|
// +",udwLastChange:"+stPersonLibInfo.udwLastChange
|
|
|
// +",szBelongIndex:"+Common.byteArrayToString(stPersonLibInfo.szBelongIndex)
|
|
|
// +",bIsMonitored:"+stPersonLibInfo.bIsMonitored
|
|
|
// +",byRes:"+Common.byteArrayToString(stPersonLibInfo.byRes));
|
|
|
//
|
|
|
// }
|
|
|
// //关闭资源
|
|
|
// bRet = NetDemo.netdevsdk.NETDEV_FindClosePersonLibList(pPersonLibHandle);
|
|
|
// if(false == bRet)
|
|
|
// {
|
|
|
// logger.info("关闭人脸库资源失败:{}", NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
// return;
|
|
|
// }
|
|
|
// }
|
|
|
// }
|
|
|
//
|
|
|
// /**
|
|
|
// * 查找人员(必须先查找人员库)
|
|
|
// * @param szName
|
|
|
// */
|
|
|
// public void findPerson(String szName) {
|
|
|
// if(null == NetDemo.lpUserID){
|
|
|
// logger.info("未登录,请先登录");
|
|
|
// return;
|
|
|
// }
|
|
|
// if(NetDemo.mapPersonLib.size()==0)
|
|
|
// {
|
|
|
// logger.info("请先查找人员库");
|
|
|
// return;
|
|
|
// }
|
|
|
// if(StringUtils.isBlank(szName))
|
|
|
// {
|
|
|
// logger.info("请输入查找的人员库名称");
|
|
|
// return;
|
|
|
// }
|
|
|
//
|
|
|
// NETDEV_LIB_INFO_S stPersonLibInfo = NetDemo.mapPersonLib.get(szName);
|
|
|
// NETDEV_PERSON_QUERY_INFO_S stQueryInfo = new NETDEV_PERSON_QUERY_INFO_S();
|
|
|
// stQueryInfo.udwNum = 0;
|
|
|
// stQueryInfo.udwOffset = 0;
|
|
|
// stQueryInfo.udwLimit = 16;
|
|
|
// NETDEV_BATCH_OPERATE_BASIC_S stQueryResultInfo = new NETDEV_BATCH_OPERATE_BASIC_S();
|
|
|
// boolean bRet = false;
|
|
|
// NetDemo.mapPersonInfo.clear();
|
|
|
// while(true)
|
|
|
// {
|
|
|
// Pointer lpPersonFindHandle = NetDemo.netdevsdk.NETDEV_FindPersonInfoList(NetDemo.lpUserID, stPersonLibInfo.udwID, stQueryInfo, stQueryResultInfo);
|
|
|
// if(lpPersonFindHandle == null || stQueryResultInfo.udwTotal == 0)
|
|
|
// {
|
|
|
// logger.info("获取人员列表失败:{}", NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
// break;
|
|
|
// }
|
|
|
// else
|
|
|
// {
|
|
|
// stQueryInfo.udwOffset += stQueryInfo.udwLimit;
|
|
|
// while(true)
|
|
|
// {
|
|
|
// NETDEV_PERSON_INFO_S stPersonInfo = new NETDEV_PERSON_INFO_S();
|
|
|
// stPersonInfo.stRegionInfo = new NETDEV_REGION_INFO_S();
|
|
|
//
|
|
|
// stPersonInfo.stImageInfo[0] = new NETDEV_IMAGE_INFO_S();
|
|
|
// stPersonInfo.stImageInfo[0].stFileInfo = new NETDEV_FILE_INFO_S();
|
|
|
// stPersonInfo.stImageInfo[0].stFileInfo.udwSize = 1048576;
|
|
|
// stPersonInfo.stImageInfo[0].stFileInfo.pcData = new Memory(stPersonInfo.stImageInfo[0].stFileInfo.udwSize);
|
|
|
// stPersonInfo.write();
|
|
|
// bRet = NetDemo.netdevsdk.NETDEV_FindNextPersonInfo(lpPersonFindHandle, stPersonInfo);
|
|
|
// if(bRet != true)
|
|
|
// {
|
|
|
// break;
|
|
|
// }
|
|
|
// else
|
|
|
// {
|
|
|
// NetDemo.mapPersonInfo.put(String.valueOf(stPersonInfo.udwPersonID), stPersonInfo);
|
|
|
// Vector<String> PersonLibVector = new Vector<String>();
|
|
|
// PersonLibVector.add(String.valueOf(stPersonInfo.udwPersonID));
|
|
|
// PersonLibVector.add(Common.byteArrayToString(stPersonInfo.szPersonName));
|
|
|
//
|
|
|
// if(stPersonInfo.udwGender == NETDEV_GENDER_TYPE_E.NETDEV_GENDER_TYPE_MAN)
|
|
|
// {
|
|
|
// PersonLibVector.add("man");
|
|
|
// }
|
|
|
// else if(stPersonInfo.udwGender == NETDEV_GENDER_TYPE_E.NETDEV_GENDER_TYPE_WOMAN)
|
|
|
// {
|
|
|
String strFileNameBig = NetDemo.strPicturePath + strTime +"BigImage.jpg";
|
|
|
NETDEV_FILE_INFO_S stFileInfo = new NETDEV_FILE_INFO_S();
|
|
|
stFileInfo.pcData = new Memory(Common.NETDEMO_PICTURE_SIZE);
|
|
|
stFileInfo.udwSize = Common.NETDEMO_PICTURE_SIZE;
|
|
|
bRet = NetDemo.netdevsdk.NETDEV_GetFaceRecordImageInfo(NetDemo.lpUserID, stRecordInfo.udwRecordID, 0, stFileInfo);
|
|
|
if(bRet == true)
|
|
|
{
|
|
|
Common.savePicture(stFileInfo.pcData, stFileInfo.udwSize, strFileNameBig);
|
|
|
}else {
|
|
|
System.out.printf("Get picture failed failed,error code"+NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
}
|
|
|
// PersonLibVector.add("woman");
|
|
|
// }
|
|
|
String strFileNameSmall = NetDemo.strPicturePath + strTime +"SmallImage.jpg";
|
|
|
Common.savePicture(stRecordInfo.stCompareInfo.stSnapshotImage.stSmallImage.pcData, stRecordInfo.stCompareInfo.stSnapshotImage.stSmallImage.udwSize, strFileNameSmall);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
bRet = NetDemo.netdevsdk.NETDEV_FindCloseFaceRecordDetail(lpFindRecordHandlePointer);
|
|
|
if(bRet != true)
|
|
|
{
|
|
|
logger.info("NETDEV_FindCloseFaceRecordDetail failed:"+NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
return;
|
|
|
}
|
|
|
if(stFindCond.dwFirstRow >= stResultInfo.udwTotal)
|
|
|
{
|
|
|
break;
|
|
|
}
|
|
|
stFindCond.dwFirstRow += stFindCond.dwPageRow;
|
|
|
}
|
|
|
else
|
|
|
{ String strPicPath = System.getProperty("user.dir").replaceAll("%20"," ") + File.separator +"Picture";
|
|
|
logger.info("Query ended.The path:"+strPicPath);
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 门禁查询出入记录 对接设备没有门禁记录
|
|
|
*/
|
|
|
public void searchAccessRecords(String startTime,String endTime,String persionId) {
|
|
|
if(null == NetDemo.lpUserID)
|
|
|
{
|
|
|
logger.info("未登录,请先登录");
|
|
|
return;
|
|
|
}
|
|
|
NETDEV_ALARM_LOG_COND_LIST_S pstFindCond=new NETDEV_ALARM_LOG_COND_LIST_S();
|
|
|
pstFindCond.dwPageRow=8;
|
|
|
pstFindCond.dwFirstRow=0;
|
|
|
pstFindCond.dwCondSize=3;
|
|
|
pstFindCond.astCondition[0]=new NETDEV_QUERY_INFO_S();
|
|
|
pstFindCond.astCondition[0].dwQueryType=4;
|
|
|
pstFindCond.astCondition[0].dwLogicFlag=3;
|
|
|
long get1=Common.date2TimeStamp(startTime, NetDemo.DateFormat);
|
|
|
String getStartTime=Long.toString(get1);
|
|
|
Common.stringToByteArray(getStartTime, pstFindCond.astCondition[0].szConditionData);
|
|
|
pstFindCond.astCondition[1]=new NETDEV_QUERY_INFO_S();
|
|
|
pstFindCond.astCondition[1].dwQueryType=4;
|
|
|
pstFindCond.astCondition[1].dwLogicFlag=4;
|
|
|
long get2=Common.date2TimeStamp(endTime, NetDemo.DateFormat);
|
|
|
if(get1>get2)
|
|
|
{
|
|
|
logger.info("开始时间不能大于结束时间");
|
|
|
return;
|
|
|
}
|
|
|
String getendtTime=Long.toString(get2);
|
|
|
Common.stringToByteArray(getendtTime, pstFindCond.astCondition[1].szConditionData);
|
|
|
pstFindCond.astCondition[2]=new NETDEV_QUERY_INFO_S();
|
|
|
pstFindCond.astCondition[2].dwQueryType=4;
|
|
|
pstFindCond.astCondition[2].dwLogicFlag=9;
|
|
|
Common.stringToByteArray(getendtTime, pstFindCond.astCondition[2].szConditionData);
|
|
|
|
|
|
logger.info("pstFindCond.astCondition.length:"+ pstFindCond.astCondition.length);
|
|
|
// if(StringUtils.isNotBlank(persionId)){
|
|
|
// //人员id
|
|
|
// pstFindCond.astCondition[3]=new NETDEV_QUERY_INFO_S();
|
|
|
// pstFindCond.astCondition[3].dwQueryType=79;
|
|
|
// pstFindCond.astCondition[3].dwLogicFlag=0;
|
|
|
// Common.stringToByteArray(persionId, pstFindCond.astCondition[3].szConditionData);
|
|
|
// else
|
|
|
// {
|
|
|
// PersonLibVector.add("unknow");
|
|
|
// }
|
|
|
//
|
|
|
// PersonLibVector.add(Common.byteArrayToString(stPersonInfo.szBirthday));
|
|
|
//
|
|
|
// PersonLibVector.add(Common.byteArrayToString(stPersonInfo.stRegionInfo.szNation));
|
|
|
// PersonLibVector.add(Common.byteArrayToString(stPersonInfo.stRegionInfo.szProvince));
|
|
|
// PersonLibVector.add(Common.byteArrayToString(stPersonInfo.stRegionInfo.szCity));
|
|
|
//
|
|
|
// if(stPersonInfo.udwIdentificationNum > 0)
|
|
|
// {
|
|
|
// if(stPersonInfo.stIdentificationInfo[0].udwType == NETDEV_ID_TYPE_E.NETDEV_CERTIFICATE_TYPE_ID)
|
|
|
// {
|
|
|
// PersonLibVector.add("Identity card");
|
|
|
// }
|
|
|
// else if(stPersonInfo.stIdentificationInfo[0].udwType == NETDEV_ID_TYPE_E.NETDEV_CERTIFICATE_TYPE_PASSPORT)
|
|
|
// {
|
|
|
// PersonLibVector.add("Passport");
|
|
|
// }
|
|
|
// else if(stPersonInfo.stIdentificationInfo[0].udwType == NETDEV_ID_TYPE_E.NETDEV_CERTIFICATE_TYPE_DRIVING_LICENSE)
|
|
|
// {
|
|
|
// PersonLibVector.add("Driving license");
|
|
|
// }
|
|
|
// else
|
|
|
// {
|
|
|
// PersonLibVector.add("other");
|
|
|
// }
|
|
|
// PersonLibVector.add(Common.byteArrayToString(stPersonInfo.stIdentificationInfo[0].szNumber));
|
|
|
// }
|
|
|
//
|
|
|
// if(stPersonInfo.udwIdentificationNum > 0){
|
|
|
// logger.info("人员-- udwPersonID:"+stPersonInfo.udwPersonID
|
|
|
// +",szPersonName:"+Common.byteArrayToString(stPersonInfo.szPersonName)
|
|
|
// +",udwGender:"+stPersonInfo.udwGender
|
|
|
// +",szBirthday:"+Common.byteArrayToString(stPersonInfo.szBirthday)
|
|
|
// +",szNation:"+Common.byteArrayToString(stPersonInfo.stRegionInfo.szNation)
|
|
|
// +",szProvince:"+Common.byteArrayToString(stPersonInfo.stRegionInfo.szProvince)
|
|
|
// +",szCity:"+Common.byteArrayToString(stPersonInfo.stRegionInfo.szCity)
|
|
|
// +",udwType:"+stPersonInfo.stIdentificationInfo[0].udwType
|
|
|
// +",szNumber:"+Common.byteArrayToString(stPersonInfo.stIdentificationInfo[0].szNumber));
|
|
|
// }else{
|
|
|
// logger.info("人员-- udwPersonID:"+stPersonInfo.udwPersonID
|
|
|
// +",szPersonName:"+Common.byteArrayToString(stPersonInfo.szPersonName)
|
|
|
// +",udwGender:"+stPersonInfo.udwGender
|
|
|
// +",szBirthday:"+Common.byteArrayToString(stPersonInfo.szBirthday)
|
|
|
// +",szNation:"+Common.byteArrayToString(stPersonInfo.stRegionInfo.szNation)
|
|
|
// +",szProvince:"+Common.byteArrayToString(stPersonInfo.stRegionInfo.szProvince)
|
|
|
// +",szCity:"+Common.byteArrayToString(stPersonInfo.stRegionInfo.szCity));
|
|
|
// }
|
|
|
// }
|
|
|
// }
|
|
|
// //关闭资源
|
|
|
// bRet = NetDemo.netdevsdk.NETDEV_FindClosePersonInfoList(lpPersonFindHandle);
|
|
|
// if(bRet == false)
|
|
|
// {
|
|
|
// logger.info("关闭人员列表资源失败:{}", NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
// }
|
|
|
// }
|
|
|
// if(stQueryInfo.udwOffset >= stQueryResultInfo.udwTotal)
|
|
|
// {
|
|
|
// break;
|
|
|
// }
|
|
|
// }
|
|
|
// }
|
|
|
//
|
|
|
// /**
|
|
|
// * 4.25.14 人脸识别记录
|
|
|
// */
|
|
|
// public void queryPassRecord(String strBeginTime,String strEndTime,String getPersonPassAlarmSource) {
|
|
|
// if(null == NetDemo.lpUserID)
|
|
|
// {
|
|
|
// logger.info("未登录,请先登录");
|
|
|
// return;
|
|
|
// }
|
|
|
//
|
|
|
// if(false == Common.isValidDate(strBeginTime,NetDemo.DateFormat) ||false == Common.isValidDate(strEndTime, NetDemo.DateFormat))
|
|
|
// {
|
|
|
// logger.info("请输入开始时间结束时间");
|
|
|
// return;
|
|
|
// }
|
|
|
//
|
|
|
// long get1=Common.date2TimeStamp(strBeginTime,NetDemo.DateFormat);
|
|
|
// long get2=Common.date2TimeStamp(strEndTime, NetDemo.DateFormat);
|
|
|
// if(get1>get2)
|
|
|
// {
|
|
|
// logger.info("开始时间不能大于结束时间");
|
|
|
// return;
|
|
|
// }
|
|
|
// NETDEV_ALARM_LOG_COND_LIST_S stFindCond = new NETDEV_ALARM_LOG_COND_LIST_S();
|
|
|
// stFindCond.dwPageRow = 16;
|
|
|
// stFindCond.dwFirstRow = 0;
|
|
|
// if(StringUtils.isBlank(getPersonPassAlarmSource))
|
|
|
// {
|
|
|
// logger.info("没有告警源");
|
|
|
// stFindCond.dwCondSize = 5;
|
|
|
// stFindCond.astCondition[0] = new NETDEV_QUERY_INFO_S();
|
|
|
// stFindCond.astCondition[1] = new NETDEV_QUERY_INFO_S();
|
|
|
// stFindCond.astCondition[2] = new NETDEV_QUERY_INFO_S();
|
|
|
// stFindCond.astCondition[3] = new NETDEV_QUERY_INFO_S();
|
|
|
// stFindCond.astCondition[4] = new NETDEV_QUERY_INFO_S();
|
|
|
// stFindCond.astCondition[0].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_TIME;
|
|
|
// stFindCond.astCondition[0].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_NO_LESS;
|
|
|
// Common.stringToByteArray(String.valueOf(Common.date2TimeStamp(strBeginTime, NetDemo.DateFormat)), stFindCond.astCondition[0].szConditionData); //NETDEV_ALARM_SMART_FACE_MATCH_LIST
|
|
|
// stFindCond.astCondition[1].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_TIME;
|
|
|
// stFindCond.astCondition[1].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_NO_GREATER;
|
|
|
// Common.stringToByteArray(String.valueOf(Common.date2TimeStamp(strEndTime, NetDemo.DateFormat)), stFindCond.astCondition[1].szConditionData); //NETDEV_ALARM_SMART_FACE_MATCH_LIST
|
|
|
// stFindCond.astCondition[2].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_TIME;
|
|
|
// stFindCond.astCondition[2].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_DESC_ORDER;
|
|
|
// Common.stringToByteArray("", stFindCond.astCondition[2].szConditionData);
|
|
|
//
|
|
|
// stFindCond.astCondition[3].dwQueryType = 57;
|
|
|
// stFindCond.astCondition[3].dwLogicFlag = 0;
|
|
|
// Common.stringToByteArray("1", stFindCond.astCondition[3].szConditionData);
|
|
|
//
|
|
|
// stFindCond.astCondition[4].dwQueryType = 58;
|
|
|
// stFindCond.astCondition[4].dwLogicFlag = 0;
|
|
|
// Common.stringToByteArray("330103193303040742", stFindCond.astCondition[4].szConditionData);
|
|
|
// }
|
|
|
// else
|
|
|
// {
|
|
|
// stFindCond.dwCondSize = 4;
|
|
|
// stFindCond.astCondition[0] = new NETDEV_QUERY_INFO_S();
|
|
|
// stFindCond.astCondition[1] = new NETDEV_QUERY_INFO_S();
|
|
|
// stFindCond.astCondition[2] = new NETDEV_QUERY_INFO_S();
|
|
|
// stFindCond.astCondition[3] = new NETDEV_QUERY_INFO_S();
|
|
|
// stFindCond.astCondition[0].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_TIME;
|
|
|
// stFindCond.astCondition[0].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_NO_LESS;
|
|
|
// Common.stringToByteArray(String.valueOf(Common.date2TimeStamp(strBeginTime, NetDemo.DateFormat)), stFindCond.astCondition[0].szConditionData); //NETDEV_ALARM_SMART_FACE_MATCH_LIST
|
|
|
// stFindCond.astCondition[1].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_TIME;
|
|
|
// stFindCond.astCondition[1].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_NO_GREATER;
|
|
|
// Common.stringToByteArray(String.valueOf(Common.date2TimeStamp(strEndTime, NetDemo.DateFormat)), stFindCond.astCondition[1].szConditionData); //NETDEV_ALARM_SMART_FACE_MATCH_LIST
|
|
|
// stFindCond.astCondition[2].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_TIME;
|
|
|
// stFindCond.astCondition[2].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_DESC_ORDER;
|
|
|
// Common.stringToByteArray("", stFindCond.astCondition[2].szConditionData);
|
|
|
// stFindCond.astCondition[3].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_ALARMSRCNAME;
|
|
|
// stFindCond.astCondition[3].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_DIM_QUERY;
|
|
|
// Common.stringToByteArray(getPersonPassAlarmSource, stFindCond.astCondition[3].szConditionData);
|
|
|
// }
|
|
|
// NETDEV_SMART_ALARM_LOG_RESULT_INFO_S stResultInfo = new NETDEV_SMART_ALARM_LOG_RESULT_INFO_S();
|
|
|
// boolean bRet = false;
|
|
|
// while(true)
|
|
|
// {
|
|
|
// Pointer lpFindRecordHandlePointer = NetDemo.netdevsdk.NETDEV_FindFaceRecordDetailList(NetDemo.lpUserID, stFindCond, stResultInfo);
|
|
|
// if(lpFindRecordHandlePointer != null)
|
|
|
// {
|
|
|
//
|
|
|
// while(true)
|
|
|
// {
|
|
|
// logger.info("人脸数据stFindCond.dwFirstRow:"+stFindCond.dwFirstRow);
|
|
|
// NETDEV_FACE_RECORD_SNAPSHOT_INFO_S stRecordInfo = new NETDEV_FACE_RECORD_SNAPSHOT_INFO_S();
|
|
|
// stRecordInfo.stCompareInfo = new NETDEV_FACE_ALARM_CMP_INFO_S();
|
|
|
// stRecordInfo.stCompareInfo.stMemberInfo = new NETDEV_FACE_MEMBER_INFO_S();
|
|
|
// stRecordInfo.stCompareInfo.stMemberInfo.stMemberRegionInfo = new NETDEV_FACE_MEMBER_REGION_INFO_S();
|
|
|
// stRecordInfo.stCompareInfo.stMemberInfo.stMemberIDInfo = new NETDEV_FACE_MEMBER_ID_INFO_S();
|
|
|
// stRecordInfo.stCompareInfo.stMemberInfo.stMemberImageInfo = new NETDEV_FILE_INFO_S();
|
|
|
// stRecordInfo.stCompareInfo.stMemberInfo.stMemberImageInfo.pcData = new Memory(Common.NETDEMO_PICTURE_SIZE);
|
|
|
// stRecordInfo.stCompareInfo.stMemberInfo.stMemberImageInfo.udwSize = Common.NETDEMO_PICTURE_SIZE;
|
|
|
// stRecordInfo.stCompareInfo.stMemberInfo.stMemberSemiInfo = new NETDEV_FILE_INFO_S();
|
|
|
// stRecordInfo.stCompareInfo.stMemberInfo.stMemberSemiInfo.pcData = new Memory(Common.NETDEMO_PICTURE_SIZE);
|
|
|
// stRecordInfo.stCompareInfo.stMemberInfo.stMemberSemiInfo.udwSize = Common.NETDEMO_PICTURE_SIZE;
|
|
|
// stRecordInfo.stCompareInfo.stSnapshotImage = new NETDEV_FACE_ALARM_SNAP_IMAGE_S();
|
|
|
// stRecordInfo.stCompareInfo.stSnapshotImage.stBigImage = new NETDEV_FILE_INFO_S();
|
|
|
// stRecordInfo.stCompareInfo.stSnapshotImage.stBigImage.pcData = new Memory(Common.NETDEMO_PICTURE_SIZE);
|
|
|
// stRecordInfo.stCompareInfo.stSnapshotImage.stBigImage.udwSize = Common.NETDEMO_PICTURE_SIZE;
|
|
|
// stRecordInfo.stCompareInfo.stSnapshotImage.stSmallImage = new NETDEV_FILE_INFO_S();
|
|
|
// stRecordInfo.stCompareInfo.stSnapshotImage.stSmallImage.pcData = new Memory(Common.NETDEMO_PICTURE_SIZE);
|
|
|
// stRecordInfo.stCompareInfo.stSnapshotImage.stSmallImage.udwSize = Common.NETDEMO_PICTURE_SIZE;
|
|
|
// stRecordInfo.stCompareInfo.stSnapshotImage.stArea = new NETDEV_FACE_ALARM_IMAGE_AREA_S();
|
|
|
// stRecordInfo.stCompareInfo.pstPersonInfo = new Memory(Common.NETDEMO_PICTURE_SIZE);
|
|
|
// bRet = NetDemo.netdevsdk.NETDEV_FindNextFaceRecordDetail(lpFindRecordHandlePointer, stRecordInfo);
|
|
|
// if(bRet == true)
|
|
|
// {
|
|
|
// logger.info("szMemberName="+Common.byteArrayToString(stRecordInfo.stCompareInfo.stMemberInfo.szMemberName));
|
|
|
// String strTime = Common.getDate();
|
|
|
// String strFileNameBig = NetDemo.strPicturePath + "_" + "PassTime_"+ stRecordInfo.udwPassTime + "_" + "_" + strTime +"BigImage.jpg";
|
|
|
// String strFileNameSmall = NetDemo.strPicturePath + "_" + "PassTime_"+ stRecordInfo.udwPassTime + "_" + strTime +"SmallImage.jpg";
|
|
|
// Common.savePicture(stRecordInfo.stCompareInfo.stSnapshotImage.stSmallImage.pcData, stRecordInfo.stCompareInfo.stSnapshotImage.stSmallImage.udwSize, strFileNameSmall);
|
|
|
// }
|
|
|
// else
|
|
|
// {
|
|
|
// break;
|
|
|
// }
|
|
|
// }
|
|
|
// bRet = NetDemo.netdevsdk.NETDEV_FindCloseFaceRecordDetail(lpFindRecordHandlePointer);
|
|
|
// if(bRet != true)
|
|
|
// {
|
|
|
// logger.info("关闭人脸记录详情失败:{}", NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
// return;
|
|
|
// }
|
|
|
// if(stResultInfo.udwTotal <= stFindCond.dwFirstRow)
|
|
|
// {
|
|
|
// break;
|
|
|
// }
|
|
|
// stFindCond.dwFirstRow += stFindCond.dwPageRow;
|
|
|
// }
|
|
|
// else
|
|
|
// {
|
|
|
// String strPicPath = System.getProperty("user.dir").replaceAll("%20"," ") +File.separator +"Picture";
|
|
|
// logger.info("查询结束.路径:"+strPicPath);
|
|
|
// break;
|
|
|
// }
|
|
|
// }
|
|
|
// }
|
|
|
//
|
|
|
// /**
|
|
|
// * 告警记录 //数据量较大,建议采用分页形式展示
|
|
|
// * @param strBeginTime
|
|
|
// */
|
|
|
// public static void queryAlarmRecord(String strBeginTime,String strEndTime,Integer monitorType) {
|
|
|
// if(null == NetDemo.lpUserID)
|
|
|
// {
|
|
|
// logger.info("未登录,请先登录");
|
|
|
// return;
|
|
|
// }
|
|
|
// if(false == Common.isValidDate(strBeginTime, NetDemo.DateFormat) ||false == Common.isValidDate(strEndTime,NetDemo.DateFormat))
|
|
|
// {
|
|
|
// logger.info("Please check that the time format is correct.");
|
|
|
// return;
|
|
|
// }
|
|
|
// long get1=Common.date2TimeStamp(strBeginTime,NetDemo.DateFormat);
|
|
|
// long get2=Common.date2TimeStamp(strEndTime, NetDemo.DateFormat);
|
|
|
// if(get1>get2) {
|
|
|
// logger.info(" Start time can not more than end time");
|
|
|
// return;
|
|
|
// }
|
|
|
// NETDEV_ALARM_LOG_COND_LIST_S stFindCond = new NETDEV_ALARM_LOG_COND_LIST_S();
|
|
|
// stFindCond.dwPageRow = 16;
|
|
|
// stFindCond.dwFirstRow = 0;
|
|
|
// stFindCond.dwCondSize = 4;
|
|
|
// stFindCond.astCondition[0] = new NETDEV_QUERY_INFO_S();
|
|
|
// stFindCond.astCondition[1] = new NETDEV_QUERY_INFO_S();
|
|
|
// stFindCond.astCondition[2] = new NETDEV_QUERY_INFO_S();
|
|
|
// stFindCond.astCondition[3] = new NETDEV_QUERY_INFO_S();
|
|
|
// stFindCond.astCondition[0].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_ALARMTYPE;
|
|
|
// stFindCond.astCondition[0].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_EQUAL;
|
|
|
// if(monitorType == 0)
|
|
|
// {
|
|
|
// Common.stringToByteArray("1018", stFindCond.astCondition[0].szConditionData); //NETDEV_ALARM_SMART_FACE_MATCH_LIST
|
|
|
// }
|
|
|
// else if(monitorType == 1)
|
|
|
// {
|
|
|
// Common.stringToByteArray("1020", stFindCond.astCondition[0].szConditionData); //NETDEV_ALARM_SMART_FACE_MISMATCH_LIST
|
|
|
// }
|
|
|
// stFindCond.astCondition[1].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_TIME;
|
|
|
// stFindCond.astCondition[1].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_NO_LESS;
|
|
|
// Common.stringToByteArray(String.valueOf(Common.date2TimeStamp(strBeginTime, NetDemo.DateFormat)), stFindCond.astCondition[1].szConditionData);
|
|
|
//
|
|
|
// stFindCond.astCondition[2].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_TIME;
|
|
|
// stFindCond.astCondition[2].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_NO_GREATER;
|
|
|
// Common.stringToByteArray(String.valueOf(Common.date2TimeStamp(strEndTime, NetDemo.DateFormat)), stFindCond.astCondition[2].szConditionData);
|
|
|
//
|
|
|
// stFindCond.astCondition[3].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_TIME;
|
|
|
// stFindCond.astCondition[3].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_DESC_ORDER;
|
|
|
// Common.stringToByteArray("", stFindCond.astCondition[3].szConditionData); //NETDEV_ALARM_SMART_FACE_MATCH_LIST
|
|
|
//
|
|
|
// NETDEV_SMART_ALARM_LOG_RESULT_INFO_S stResultInfo = new NETDEV_SMART_ALARM_LOG_RESULT_INFO_S();
|
|
|
// boolean bRet = false;
|
|
|
// while(true)
|
|
|
// {
|
|
|
// logger.info("告警记录1");
|
|
|
// Pointer lpFindRecordHandlePointer = NetDemo.netdevsdk.NETDEV_FindFaceRecordDetailList(NetDemo.lpUserID, stFindCond, stResultInfo);
|
|
|
// if(lpFindRecordHandlePointer != null)
|
|
|
// {
|
|
|
// while(true)
|
|
|
// {
|
|
|
// logger.info("人脸数据1");
|
|
|
// NETDEV_FACE_RECORD_SNAPSHOT_INFO_S stRecordInfo = new NETDEV_FACE_RECORD_SNAPSHOT_INFO_S();
|
|
|
// stRecordInfo.stCompareInfo = new NETDEV_FACE_ALARM_CMP_INFO_S();
|
|
|
// stRecordInfo.stCompareInfo.stMemberInfo = new NETDEV_FACE_MEMBER_INFO_S();
|
|
|
// stRecordInfo.stCompareInfo.stMemberInfo.stMemberRegionInfo = new NETDEV_FACE_MEMBER_REGION_INFO_S();
|
|
|
// stRecordInfo.stCompareInfo.stMemberInfo.stMemberIDInfo = new NETDEV_FACE_MEMBER_ID_INFO_S();
|
|
|
// stRecordInfo.stCompareInfo.stMemberInfo.stMemberImageInfo = new NETDEV_FILE_INFO_S();
|
|
|
// stRecordInfo.stCompareInfo.stMemberInfo.stMemberImageInfo.pcData = new Memory(Common.NETDEMO_PICTURE_SIZE);
|
|
|
// stRecordInfo.stCompareInfo.stMemberInfo.stMemberImageInfo.udwSize = Common.NETDEMO_PICTURE_SIZE;
|
|
|
// stRecordInfo.stCompareInfo.stMemberInfo.stMemberSemiInfo = new NETDEV_FILE_INFO_S();
|
|
|
// stRecordInfo.stCompareInfo.stMemberInfo.stMemberSemiInfo.pcData = new Memory(Common.NETDEMO_PICTURE_SIZE);
|
|
|
// stRecordInfo.stCompareInfo.stMemberInfo.stMemberSemiInfo.udwSize = Common.NETDEMO_PICTURE_SIZE;
|
|
|
//
|
|
|
// stRecordInfo.stCompareInfo.stSnapshotImage = new NETDEV_FACE_ALARM_SNAP_IMAGE_S();
|
|
|
// stRecordInfo.stCompareInfo.stSnapshotImage.stBigImage = new NETDEV_FILE_INFO_S();
|
|
|
// stRecordInfo.stCompareInfo.stSnapshotImage.stBigImage.pcData = new Memory(Common.NETDEMO_PICTURE_SIZE);
|
|
|
// stRecordInfo.stCompareInfo.stSnapshotImage.stBigImage.udwSize = Common.NETDEMO_PICTURE_SIZE;
|
|
|
// stRecordInfo.stCompareInfo.stSnapshotImage.stSmallImage = new NETDEV_FILE_INFO_S();
|
|
|
// stRecordInfo.stCompareInfo.stSnapshotImage.stSmallImage.pcData = new Memory(Common.NETDEMO_PICTURE_SIZE);
|
|
|
// stRecordInfo.stCompareInfo.stSnapshotImage.stSmallImage.udwSize = Common.NETDEMO_PICTURE_SIZE;
|
|
|
// stRecordInfo.stCompareInfo.stSnapshotImage.stArea = new NETDEV_FACE_ALARM_IMAGE_AREA_S();
|
|
|
//
|
|
|
// stRecordInfo.stCompareInfo.pstPersonInfo = new Memory(Common.NETDEMO_PICTURE_SIZE);
|
|
|
//
|
|
|
// bRet = NetDemo.netdevsdk.NETDEV_FindNextFaceRecordDetail(lpFindRecordHandlePointer, stRecordInfo);
|
|
|
// if(bRet == true)
|
|
|
// {
|
|
|
// String strTime = Common.getDate();
|
|
|
//// if(NetDemo.jComboBoxDeviceType.getSelectedIndex() == 1)
|
|
|
//// {
|
|
|
// String strFileNameBig = NetDemo.strPicturePath + strTime +"BigImage.jpg";
|
|
|
// NETDEV_FILE_INFO_S stFileInfo = new NETDEV_FILE_INFO_S();
|
|
|
// stFileInfo.pcData = new Memory(Common.NETDEMO_PICTURE_SIZE);
|
|
|
// stFileInfo.udwSize = Common.NETDEMO_PICTURE_SIZE;
|
|
|
// bRet = NetDemo.netdevsdk.NETDEV_GetFaceRecordImageInfo(NetDemo.lpUserID, stRecordInfo.udwRecordID, 0, stFileInfo);
|
|
|
// if(bRet == true)
|
|
|
// {
|
|
|
// Common.savePicture(stFileInfo.pcData, stFileInfo.udwSize, strFileNameBig);
|
|
|
// }else {
|
|
|
// System.out.printf("Get picture failed failed,error code"+NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
// }
|
|
|
//// }
|
|
|
// String strFileNameSmall = NetDemo.strPicturePath + strTime +"SmallImage.jpg";
|
|
|
// Common.savePicture(stRecordInfo.stCompareInfo.stSnapshotImage.stSmallImage.pcData, stRecordInfo.stCompareInfo.stSnapshotImage.stSmallImage.udwSize, strFileNameSmall);
|
|
|
// }
|
|
|
// else
|
|
|
// {
|
|
|
// break;
|
|
|
// }
|
|
|
// }
|
|
|
// bRet = NetDemo.netdevsdk.NETDEV_FindCloseFaceRecordDetail(lpFindRecordHandlePointer);
|
|
|
// if(bRet != true)
|
|
|
// {
|
|
|
// logger.info("NETDEV_FindCloseFaceRecordDetail failed:"+NetDemo.netdevsdk.NETDEV_GetLastError());
|
|
|
// return;
|
|
|
// }
|
|
|
// if(stFindCond.dwFirstRow >= stResultInfo.udwTotal)
|
|
|
// {
|
|
|
// break;
|
|
|
// }
|
|
|
// stFindCond.dwFirstRow += stFindCond.dwPageRow;
|
|
|
// }
|
|
|
// else
|
|
|
// { String strPicPath = System.getProperty("user.dir").replaceAll("%20"," ") + File.separator +"Picture";
|
|
|
// logger.info("Query ended.The path:"+strPicPath);
|
|
|
// break;
|
|
|
// }
|
|
|
// }
|
|
|
// }
|
|
|
//
|
|
|
// /**
|
|
|
// * 门禁查询出入记录 对接设备没有门禁记录
|
|
|
// */
|
|
|
// public void searchAccessRecords(String startTime,String endTime,String persionId) {
|
|
|
// if(null == NetDemo.lpUserID)
|
|
|
// {
|
|
|
// logger.info("未登录,请先登录");
|
|
|
// return;
|
|
|
// }
|
|
|
// NETDEV_ALARM_LOG_COND_LIST_S pstFindCond=new NETDEV_ALARM_LOG_COND_LIST_S();
|
|
|
// pstFindCond.dwPageRow=8;
|
|
|
// pstFindCond.dwFirstRow=0;
|
|
|
// pstFindCond.dwCondSize=3;
|
|
|
// pstFindCond.astCondition[0]=new NETDEV_QUERY_INFO_S();
|
|
|
// pstFindCond.astCondition[0].dwQueryType=4;
|
|
|
// pstFindCond.astCondition[0].dwLogicFlag=3;
|
|
|
// long get1=Common.date2TimeStamp(startTime, NetDemo.DateFormat);
|
|
|
// String getStartTime=Long.toString(get1);
|
|
|
// Common.stringToByteArray(getStartTime, pstFindCond.astCondition[0].szConditionData);
|
|
|
// pstFindCond.astCondition[1]=new NETDEV_QUERY_INFO_S();
|
|
|
// pstFindCond.astCondition[1].dwQueryType=4;
|
|
|
// pstFindCond.astCondition[1].dwLogicFlag=4;
|
|
|
// long get2=Common.date2TimeStamp(endTime, NetDemo.DateFormat);
|
|
|
// if(get1>get2)
|
|
|
// {
|
|
|
// logger.info("开始时间不能大于结束时间");
|
|
|
// return;
|
|
|
// }
|
|
|
// String getendtTime=Long.toString(get2);
|
|
|
// Common.stringToByteArray(getendtTime, pstFindCond.astCondition[1].szConditionData);
|
|
|
// pstFindCond.astCondition[2]=new NETDEV_QUERY_INFO_S();
|
|
|
// pstFindCond.astCondition[2].dwQueryType=4;
|
|
|
// pstFindCond.astCondition[2].dwLogicFlag=9;
|
|
|
// Common.stringToByteArray(getendtTime, pstFindCond.astCondition[2].szConditionData);
|
|
|
//
|
|
|
// logger.info("pstFindCond.astCondition.length:"+ pstFindCond.astCondition.length);
|
|
|
//// if(StringUtils.isNotBlank(persionId)){
|
|
|
//// //人员id
|
|
|
//// pstFindCond.astCondition[3]=new NETDEV_QUERY_INFO_S();
|
|
|
//// pstFindCond.astCondition[3].dwQueryType=79;
|
|
|
//// pstFindCond.astCondition[3].dwLogicFlag=0;
|
|
|
//// Common.stringToByteArray(persionId, pstFindCond.astCondition[3].szConditionData);
|
|
|
//// }
|
|
|
//
|
|
|
// NETDEV_BATCH_OPERATE_BASIC_S pstResultInfo=new NETDEV_BATCH_OPERATE_BASIC_S();
|
|
|
// pstResultInfo.udwOffset=0;
|
|
|
// pstFindCond.write();
|
|
|
// pstResultInfo.write();
|
|
|
// Pointer lpFindHandle= NetDemo.netdevsdk.NETDEV_FindACSAttendanceLogList(NetDemo.lpUserID,pstFindCond,pstResultInfo);
|
|
|
// if(lpFindHandle!=null) {
|
|
|
// NETDEV_ACS_ATTENDANCE_LOG_INFO_S pstACSLogInfo=new NETDEV_ACS_ATTENDANCE_LOG_INFO_S();
|
|
|
// pstACSLogInfo.stCompareInfo=new NETDEV_COMPARE_INFO_S();
|
|
|
// pstACSLogInfo.stCompareInfo.stPersonImage=new NETDEV_FILE_INFO_S();
|
|
|
// pstACSLogInfo.stCompareInfo.stPersonImage.pcData=new Memory(1048576);
|
|
|
// pstACSLogInfo.stCompareInfo.stSnapshotImage=new NETDEV_FILE_INFO_S();
|
|
|
// pstACSLogInfo.stCompareInfo.stSnapshotImage.pcData=new Memory(1048576);
|
|
|
//
|
|
|
// logger.info("stSnapshotImage.szUrl="+Common.byteArrayToString(pstACSLogInfo.stCompareInfo.stSnapshotImage.szUrl));
|
|
|
//
|
|
|
// pstACSLogInfo.stFaceAttr=new NETDEV_FACE_ATTR_S();
|
|
|
// pstACSLogInfo.write();
|
|
|
// boolean flag = true;
|
|
|
// int i = 0;
|
|
|
// NetDemo.getRowData=new Vector();
|
|
|
// do {
|
|
|
// boolean nextAcs= NetDemo.netdevsdk.NETDEV_FindNextACSAttendanceLog(lpFindHandle,pstACSLogInfo);
|
|
|
// if(!nextAcs) {
|
|
|
// break;
|
|
|
// }
|
|
|
// pstACSLogInfo.read();
|
|
|
// pstResultInfo.read();
|
|
|
//// 分页数据
|
|
|
// try {
|
|
|
// Vector data=new Vector();
|
|
|
// data.add(i+1);
|
|
|
// String szName=Common.byteArrayToString(pstACSLogInfo.szPersonName);
|
|
|
// data.add(szName);
|
|
|
// Long getTime=pstACSLogInfo.tTimeStamp;
|
|
|
// String new1=String.valueOf(getTime);
|
|
|
// String getNewDateTime=Common.timeStamp2Date(new1, NetDemo.DateFormat);
|
|
|
// String deptName=Common.byteArrayToString(pstACSLogInfo.szDoorName);
|
|
|
//
|
|
|
// int direct=pstACSLogInfo.udwDoorDirect;
|
|
|
// String getDirect=null;
|
|
|
// if(direct==0) {
|
|
|
// getDirect="in";
|
|
|
// }else if(direct==1) {
|
|
|
// getDirect="out";
|
|
|
// }else {
|
|
|
// getDirect="unknow";
|
|
|
// }
|
|
|
//
|
|
|
// data.add(getNewDateTime);
|
|
|
// data.add(deptName);
|
|
|
// data.add(getDirect);
|
|
|
// data.add(pstACSLogInfo.stFaceAttr.fTemperature);
|
|
|
//
|
|
|
// NetDemo.getRowData.add(data);
|
|
|
//
|
|
|
// logger.info("门禁记录-- szPersonName:"+Common.byteArrayToString(pstACSLogInfo.szPersonName)
|
|
|
// +",getNewDateTime:"+getNewDateTime
|
|
|
// +",deptName:"+deptName
|
|
|
// +",getDirect:"+getDirect
|
|
|
// +",fTemperature:"+pstACSLogInfo.stFaceAttr.fTemperature
|
|
|
// );
|
|
|
// }catch(Exception eee) {
|
|
|
// }i++;
|
|
|
// }
|
|
|
// while (flag && i < 8);
|
|
|
//
|
|
|
// }
|
|
|
// else
|
|
|
// {
|
|
|
// logger.info("未找到记录");
|
|
|
// return;
|
|
|
// }
|
|
|
// NetDemo.netdevsdk.NETDEV_FindCloseACSAttendanceLogList(lpFindHandle);
|
|
|
//
|
|
|
// int pageSize=0;
|
|
|
// if(pstResultInfo.udwTotal>0) {
|
|
|
// if(pstResultInfo.udwTotal%8==0) {
|
|
|
// try {
|
|
|
// pageSize=pstResultInfo.udwTotal/8;
|
|
|
// }catch(Exception m) {
|
|
|
//
|
|
|
// }
|
|
|
// }else {
|
|
|
// try {
|
|
|
// pageSize=(pstResultInfo.udwTotal/8)+1;
|
|
|
// }catch(Exception m) {
|
|
|
//
|
|
|
// }
|
|
|
// }
|
|
|
// }else {
|
|
|
// logger.info("没数据");
|
|
|
// return;
|
|
|
// }
|
|
|
// }
|
|
|
//
|
|
|
// /***************************sdk call back**************************************/
|
|
|
//
|
|
|
// public static NETDEV_DISCOVERY_CALLBACK_PF cbDiscoveryCallBack = new NETDEV_DISCOVERY_CALLBACK_PF();
|
|
|
// public static class NETDEV_DISCOVERY_CALLBACK_PF implements NetDEVSDKLib.NETDEV_DISCOVERY_CALLBACK_PF {
|
|
|
// @Override
|
|
|
// public void invoke(NETDEV_DISCOVERY_DEVINFO_S pstDevInfo, Pointer lpUserData){
|
|
|
//
|
|
|
// Vector<String> vector = new Vector<String>();
|
|
|
// vector.add(Common.DevideTypeToString((int)pstDevInfo.enDevType));
|
|
|
// vector.add(Common.utfToString(pstDevInfo.szDevAddr));
|
|
|
// vector.add(String.valueOf(pstDevInfo.dwDevPort));
|
|
|
// vector.add(Common.utfToString(pstDevInfo.szDevMac));
|
|
|
// vector.add(Common.utfToString(pstDevInfo.szDevSerailNum));
|
|
|
// vector.add(Common.utfToString(pstDevInfo.szManuFacturer));
|
|
|
// logger.info("设备搜索回调-- enDevType:"+Common.DevideTypeToString((int)pstDevInfo.enDevType)
|
|
|
// +",szDevAddr:"+Common.utfToString(pstDevInfo.szDevAddr)
|
|
|
// +",dwDevPort:"+pstDevInfo.dwDevPort
|
|
|
// +",szDevMac:"+Common.utfToString(pstDevInfo.szDevMac)
|
|
|
// +",szDevSerailNum:"+Common.utfToString(pstDevInfo.szDevSerailNum)
|
|
|
// +",szManuFacturer:"+Common.utfToString(pstDevInfo.szManuFacturer));
|
|
|
// }
|
|
|
// }
|
|
|
//
|
|
|
// public static NETDEV_AlarmMessCallBack_PF_V30 cbAlarmMessCallBack = new NETDEV_AlarmMessCallBack_PF_V30();
|
|
|
// public static class NETDEV_AlarmMessCallBack_PF_V30 implements NetDEVSDKLib.NETDEV_AlarmMessCallBack_PF_V30{
|
|
|
// @Override
|
|
|
// public void invoke(Pointer lpUserID, NETDEV_REPORT_INFO_S pstReportInfo, Pointer lpBuf, int dwBufLen,
|
|
|
// Pointer lpUserParam) {
|
|
|
// if (NETDEV_REPORT_TYPE_E.NETDEV_REPORT_TYPE_ALARM == pstReportInfo.dwReportType) {
|
|
|
// String strTime = Common.timeStamp2Date(Long.toString(pstReportInfo.stAlarmInfo.tAlarmTimeStamp),NetDemo.DateFormat);
|
|
|
//
|
|
|
// Vector<String> vector = new Vector<String>();
|
|
|
// vector.add(strTime);
|
|
|
// String ChannelInfo = Integer.toString(pstReportInfo.stAlarmInfo.dwChannelID);
|
|
|
// String AlarmSrc = Common.utfToString(pstReportInfo.stAlarmInfo.szAlarmSrc);
|
|
|
// if (!AlarmSrc.isEmpty()) {
|
|
|
// ChannelInfo += "(";
|
|
|
// ChannelInfo += AlarmSrc;
|
|
|
// ChannelInfo += ")";
|
|
|
// }
|
|
|
// vector.add(ChannelInfo);
|
|
|
// vector.add(Common.AlarmTypeToString(pstReportInfo.stAlarmInfo.dwAlarmType));
|
|
|
// logger.info("告警信息--strTime:"+strTime+",ChannelInfo:" +ChannelInfo+ ",dwAlarmType:" + pstReportInfo.stAlarmInfo.dwAlarmType
|
|
|
// + ",dwAlarmLevel:" + pstReportInfo.stAlarmInfo.dwAlarmLevel);
|
|
|
// }
|
|
|
// else{
|
|
|
// logger.info("event_info null");
|
|
|
// }
|
|
|
// }
|
|
|
// }
|
|
|
//
|
|
|
// public static NETDEV_FaceSnapshotCallBack_PF cbFaceSnapshotCallBack = new NETDEV_FaceSnapshotCallBack_PF();
|
|
|
// public static class NETDEV_FaceSnapshotCallBack_PF implements NetDEVSDKLib.NETDEV_FaceSnapshotCallBack_PF{
|
|
|
// @Override
|
|
|
// public void invoke(Pointer lpPlayHandle, NETDEV_TMS_FACE_SNAPSHOT_PIC_INFO_S pstFaceSnapShotData, Pointer lpUserParam){
|
|
|
// logger.info(pstFaceSnapShotData.udwPicBuffLen+"");
|
|
|
//
|
|
|
// byte[] szDataBuf = new byte[pstFaceSnapShotData.udwPicBuffLen];
|
|
|
// szDataBuf = pstFaceSnapShotData.pcPicBuff.getByteArray(0, pstFaceSnapShotData.udwPicBuffLen);
|
|
|
//
|
|
|
// FileOutputStream fop = null;
|
|
|
// File file;
|
|
|
// try {
|
|
|
// file = new File("./face.jpg");
|
|
|
// fop = new FileOutputStream(file);
|
|
|
// if (!file.exists()) {
|
|
|
// file.createNewFile();
|
|
|
// }
|
|
|
// fop.write(szDataBuf);
|
|
|
// fop.flush();
|
|
|
// fop.close();
|
|
|
//
|
|
|
// logger.info("write Done");
|
|
|
// } catch (IOException e2) {
|
|
|
// e2.printStackTrace();
|
|
|
// }
|
|
|
// }
|
|
|
// }
|
|
|
//
|
|
|
// public static NETDEV_PersonAlarmMessCallBack_PF personAlarmMessCB =new NETDEV_PersonAlarmMessCallBack_PF();
|
|
|
// public static class NETDEV_PersonAlarmMessCallBack_PF implements NetDEVSDKLib.NETDEV_PersonAlarmMessCallBack_PF
|
|
|
// {
|
|
|
//
|
|
|
// @Override
|
|
|
// public void invoke(Pointer lpUserID, NETDEV_PERSON_EVENT_INFO_S pstAlarmData, Pointer lpUserData) {
|
|
|
// // TODO Auto-generated method stub
|
|
|
// String strTime = Common.getDate();
|
|
|
// logger.info("Person AlarmTime:"+ pstAlarmData.udwTimestamp);
|
|
|
// for(int i = 0; i < pstAlarmData.udwFaceInfoNum; i++)
|
|
|
// {
|
|
|
// logger.info("Person udwSimilarity:"+ pstAlarmData.stCtrlFaceInfo[i].stCompareInfo.udwSimilarity);
|
|
|
//
|
|
|
// //布控的图片
|
|
|
// if(pstAlarmData.stCtrlFaceInfo[i].stCompareInfo.stPersonInfo.udwImageNum > 0)
|
|
|
// {
|
|
|
// String strFileName = NetDemo.strPicturePath + strTime +"bukong.jpg";
|
|
|
// Common.savePicture(pstAlarmData.stCtrlFaceInfo[i].stCompareInfo.stPersonInfo.stImageInfo[0].stFileInfo.pcData, pstAlarmData.stCtrlFaceInfo[i].stCompareInfo.stPersonInfo.stImageInfo[0].stFileInfo.udwSize, strFileName);
|
|
|
// }
|
|
|
//
|
|
|
// // 大图,一体机获取的方法,ipc/NVR直接写数据 */
|
|
|
// {
|
|
|
// String strFileName = NetDemo.strPicturePath + strTime +"Person_Big.jpg";
|
|
|
// String iCmRet = Common.byteArrayToString(pstAlarmData.stCtrlFaceInfo[i].stCompareInfo.stPanoImage.szUrl);
|
|
|
// if(!iCmRet.equals(""))
|
|
|
// {
|
|
|
// Pointer pszUrl = new Memory(260);
|
|
|
// pszUrl.write(0, pstAlarmData.stCtrlFaceInfo[i].stCompareInfo.stPanoImage.szUrl, 0, 260);
|
|
|
// Pointer pszData = new Memory(pstAlarmData.stCtrlFaceInfo[i].stCompareInfo.stPanoImage.udwSize);
|
|
|
// NetDemo.netdevsdk.NETDEV_GetSystemPicture(lpUserID, pszUrl, pstAlarmData.stCtrlFaceInfo[i].stCompareInfo.stPanoImage.udwSize, pszData);
|
|
|
//
|
|
|
// Common.savePicture(pszData, pstAlarmData.stCtrlFaceInfo[i].stCompareInfo.stPanoImage.udwSize, strFileName);
|
|
|
// }
|
|
|
// else
|
|
|
// {
|
|
|
// Common.savePicture(pstAlarmData.stCtrlFaceInfo[i].stCompareInfo.stPanoImage.pcData, pstAlarmData.stCtrlFaceInfo[i].stCompareInfo.stPanoImage.udwSize, strFileName);
|
|
|
// }
|
|
|
// }
|
|
|
//
|
|
|
// //小图
|
|
|
// {
|
|
|
// String strFileName = NetDemo.strPicturePath + strTime +"Person_Small.jpg";
|
|
|
// Common.savePicture(pstAlarmData.stCtrlFaceInfo[i].stCompareInfo.stFaceImage.pcData, pstAlarmData.stCtrlFaceInfo[i].stCompareInfo.stFaceImage.udwSize, strFileName);
|
|
|
// }
|
|
|
// }
|
|
|
// }
|
|
|
|
|
|
NETDEV_BATCH_OPERATE_BASIC_S pstResultInfo=new NETDEV_BATCH_OPERATE_BASIC_S();
|
|
|
pstResultInfo.udwOffset=0;
|
|
|
pstFindCond.write();
|
|
|
pstResultInfo.write();
|
|
|
Pointer lpFindHandle= NetDemo.netdevsdk.NETDEV_FindACSAttendanceLogList(NetDemo.lpUserID,pstFindCond,pstResultInfo);
|
|
|
if(lpFindHandle!=null) {
|
|
|
NETDEV_ACS_ATTENDANCE_LOG_INFO_S pstACSLogInfo=new NETDEV_ACS_ATTENDANCE_LOG_INFO_S();
|
|
|
pstACSLogInfo.stCompareInfo=new NETDEV_COMPARE_INFO_S();
|
|
|
pstACSLogInfo.stCompareInfo.stPersonImage=new NETDEV_FILE_INFO_S();
|
|
|
pstACSLogInfo.stCompareInfo.stPersonImage.pcData=new Memory(1048576);
|
|
|
pstACSLogInfo.stCompareInfo.stSnapshotImage=new NETDEV_FILE_INFO_S();
|
|
|
pstACSLogInfo.stCompareInfo.stSnapshotImage.pcData=new Memory(1048576);
|
|
|
|
|
|
logger.info("stSnapshotImage.szUrl="+Common.byteArrayToString(pstACSLogInfo.stCompareInfo.stSnapshotImage.szUrl));
|
|
|
|
|
|
pstACSLogInfo.stFaceAttr=new NETDEV_FACE_ATTR_S();
|
|
|
pstACSLogInfo.write();
|
|
|
boolean flag = true;
|
|
|
int i = 0;
|
|
|
NetDemo.getRowData=new Vector();
|
|
|
do {
|
|
|
boolean nextAcs= NetDemo.netdevsdk.NETDEV_FindNextACSAttendanceLog(lpFindHandle,pstACSLogInfo);
|
|
|
if(!nextAcs) {
|
|
|
break;
|
|
|
}
|
|
|
pstACSLogInfo.read();
|
|
|
pstResultInfo.read();
|
|
|
// 分页数据
|
|
|
try {
|
|
|
Vector data=new Vector();
|
|
|
data.add(i+1);
|
|
|
String szName=Common.byteArrayToString(pstACSLogInfo.szPersonName);
|
|
|
data.add(szName);
|
|
|
Long getTime=pstACSLogInfo.tTimeStamp;
|
|
|
String new1=String.valueOf(getTime);
|
|
|
String getNewDateTime=Common.timeStamp2Date(new1, NetDemo.DateFormat);
|
|
|
String deptName=Common.byteArrayToString(pstACSLogInfo.szDoorName);
|
|
|
|
|
|
int direct=pstACSLogInfo.udwDoorDirect;
|
|
|
String getDirect=null;
|
|
|
if(direct==0) {
|
|
|
getDirect="in";
|
|
|
}else if(direct==1) {
|
|
|
getDirect="out";
|
|
|
}else {
|
|
|
getDirect="unknow";
|
|
|
}
|
|
|
|
|
|
data.add(getNewDateTime);
|
|
|
data.add(deptName);
|
|
|
data.add(getDirect);
|
|
|
data.add(pstACSLogInfo.stFaceAttr.fTemperature);
|
|
|
|
|
|
NetDemo.getRowData.add(data);
|
|
|
|
|
|
logger.info("门禁记录-- szPersonName:"+Common.byteArrayToString(pstACSLogInfo.szPersonName)
|
|
|
+",getNewDateTime:"+getNewDateTime
|
|
|
+",deptName:"+deptName
|
|
|
+",getDirect:"+getDirect
|
|
|
+",fTemperature:"+pstACSLogInfo.stFaceAttr.fTemperature
|
|
|
);
|
|
|
}catch(Exception eee) {
|
|
|
}i++;
|
|
|
}
|
|
|
while (flag && i < 8);
|
|
|
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
logger.info("未找到记录");
|
|
|
return;
|
|
|
}
|
|
|
NetDemo.netdevsdk.NETDEV_FindCloseACSAttendanceLogList(lpFindHandle);
|
|
|
|
|
|
int pageSize=0;
|
|
|
if(pstResultInfo.udwTotal>0) {
|
|
|
if(pstResultInfo.udwTotal%8==0) {
|
|
|
try {
|
|
|
pageSize=pstResultInfo.udwTotal/8;
|
|
|
}catch(Exception m) {
|
|
|
|
|
|
}
|
|
|
}else {
|
|
|
try {
|
|
|
pageSize=(pstResultInfo.udwTotal/8)+1;
|
|
|
}catch(Exception m) {
|
|
|
|
|
|
}
|
|
|
}
|
|
|
}else {
|
|
|
logger.info("没数据");
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/***************************sdk call back**************************************/
|
|
|
|
|
|
public static NETDEV_DISCOVERY_CALLBACK_PF cbDiscoveryCallBack = new NETDEV_DISCOVERY_CALLBACK_PF();
|
|
|
public static class NETDEV_DISCOVERY_CALLBACK_PF implements NetDEVSDKLib.NETDEV_DISCOVERY_CALLBACK_PF {
|
|
|
@Override
|
|
|
public void invoke(NETDEV_DISCOVERY_DEVINFO_S pstDevInfo, Pointer lpUserData){
|
|
|
|
|
|
Vector<String> vector = new Vector<String>();
|
|
|
vector.add(Common.DevideTypeToString((int)pstDevInfo.enDevType));
|
|
|
vector.add(Common.utfToString(pstDevInfo.szDevAddr));
|
|
|
vector.add(String.valueOf(pstDevInfo.dwDevPort));
|
|
|
vector.add(Common.utfToString(pstDevInfo.szDevMac));
|
|
|
vector.add(Common.utfToString(pstDevInfo.szDevSerailNum));
|
|
|
vector.add(Common.utfToString(pstDevInfo.szManuFacturer));
|
|
|
logger.info("设备搜索回调-- enDevType:"+Common.DevideTypeToString((int)pstDevInfo.enDevType)
|
|
|
+",szDevAddr:"+Common.utfToString(pstDevInfo.szDevAddr)
|
|
|
+",dwDevPort:"+pstDevInfo.dwDevPort
|
|
|
+",szDevMac:"+Common.utfToString(pstDevInfo.szDevMac)
|
|
|
+",szDevSerailNum:"+Common.utfToString(pstDevInfo.szDevSerailNum)
|
|
|
+",szManuFacturer:"+Common.utfToString(pstDevInfo.szManuFacturer));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public static NETDEV_AlarmMessCallBack_PF_V30 cbAlarmMessCallBack = new NETDEV_AlarmMessCallBack_PF_V30();
|
|
|
public static class NETDEV_AlarmMessCallBack_PF_V30 implements NetDEVSDKLib.NETDEV_AlarmMessCallBack_PF_V30{
|
|
|
@Override
|
|
|
public void invoke(Pointer lpUserID, NETDEV_REPORT_INFO_S pstReportInfo, Pointer lpBuf, int dwBufLen,
|
|
|
Pointer lpUserParam) {
|
|
|
if (NETDEV_REPORT_TYPE_E.NETDEV_REPORT_TYPE_ALARM == pstReportInfo.dwReportType) {
|
|
|
String strTime = Common.timeStamp2Date(Long.toString(pstReportInfo.stAlarmInfo.tAlarmTimeStamp),NetDemo.DateFormat);
|
|
|
|
|
|
Vector<String> vector = new Vector<String>();
|
|
|
vector.add(strTime);
|
|
|
String ChannelInfo = Integer.toString(pstReportInfo.stAlarmInfo.dwChannelID);
|
|
|
String AlarmSrc = Common.utfToString(pstReportInfo.stAlarmInfo.szAlarmSrc);
|
|
|
if (!AlarmSrc.isEmpty()) {
|
|
|
ChannelInfo += "(";
|
|
|
ChannelInfo += AlarmSrc;
|
|
|
ChannelInfo += ")";
|
|
|
}
|
|
|
vector.add(ChannelInfo);
|
|
|
vector.add(Common.AlarmTypeToString(pstReportInfo.stAlarmInfo.dwAlarmType));
|
|
|
logger.info("告警信息--strTime:"+strTime+",ChannelInfo:" +ChannelInfo+ ",dwAlarmType:" + pstReportInfo.stAlarmInfo.dwAlarmType
|
|
|
+ ",dwAlarmLevel:" + pstReportInfo.stAlarmInfo.dwAlarmLevel);
|
|
|
}
|
|
|
else{
|
|
|
logger.info("event_info null");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public static NETDEV_FaceSnapshotCallBack_PF cbFaceSnapshotCallBack = new NETDEV_FaceSnapshotCallBack_PF();
|
|
|
public static class NETDEV_FaceSnapshotCallBack_PF implements NetDEVSDKLib.NETDEV_FaceSnapshotCallBack_PF{
|
|
|
@Override
|
|
|
public void invoke(Pointer lpPlayHandle, NETDEV_TMS_FACE_SNAPSHOT_PIC_INFO_S pstFaceSnapShotData, Pointer lpUserParam){
|
|
|
logger.info(pstFaceSnapShotData.udwPicBuffLen+"");
|
|
|
|
|
|
byte[] szDataBuf = new byte[pstFaceSnapShotData.udwPicBuffLen];
|
|
|
szDataBuf = pstFaceSnapShotData.pcPicBuff.getByteArray(0, pstFaceSnapShotData.udwPicBuffLen);
|
|
|
|
|
|
FileOutputStream fop = null;
|
|
|
File file;
|
|
|
try {
|
|
|
file = new File("./face.jpg");
|
|
|
fop = new FileOutputStream(file);
|
|
|
if (!file.exists()) {
|
|
|
file.createNewFile();
|
|
|
}
|
|
|
fop.write(szDataBuf);
|
|
|
fop.flush();
|
|
|
fop.close();
|
|
|
|
|
|
logger.info("write Done");
|
|
|
} catch (IOException e2) {
|
|
|
e2.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public static NETDEV_PersonAlarmMessCallBack_PF personAlarmMessCB =new NETDEV_PersonAlarmMessCallBack_PF();
|
|
|
public static class NETDEV_PersonAlarmMessCallBack_PF implements NetDEVSDKLib.NETDEV_PersonAlarmMessCallBack_PF
|
|
|
{
|
|
|
|
|
|
@Override
|
|
|
public void invoke(Pointer lpUserID, NETDEV_PERSON_EVENT_INFO_S pstAlarmData, Pointer lpUserData) {
|
|
|
// TODO Auto-generated method stub
|
|
|
String strTime = Common.getDate();
|
|
|
logger.info("Person AlarmTime:"+ pstAlarmData.udwTimestamp);
|
|
|
for(int i = 0; i < pstAlarmData.udwFaceInfoNum; i++)
|
|
|
{
|
|
|
logger.info("Person udwSimilarity:"+ pstAlarmData.stCtrlFaceInfo[i].stCompareInfo.udwSimilarity);
|
|
|
|
|
|
//布控的图片
|
|
|
if(pstAlarmData.stCtrlFaceInfo[i].stCompareInfo.stPersonInfo.udwImageNum > 0)
|
|
|
{
|
|
|
String strFileName = NetDemo.strPicturePath + strTime +"bukong.jpg";
|
|
|
Common.savePicture(pstAlarmData.stCtrlFaceInfo[i].stCompareInfo.stPersonInfo.stImageInfo[0].stFileInfo.pcData, pstAlarmData.stCtrlFaceInfo[i].stCompareInfo.stPersonInfo.stImageInfo[0].stFileInfo.udwSize, strFileName);
|
|
|
}
|
|
|
|
|
|
// 大图,一体机获取的方法,ipc/NVR直接写数据 */
|
|
|
{
|
|
|
String strFileName = NetDemo.strPicturePath + strTime +"Person_Big.jpg";
|
|
|
String iCmRet = Common.byteArrayToString(pstAlarmData.stCtrlFaceInfo[i].stCompareInfo.stPanoImage.szUrl);
|
|
|
if(!iCmRet.equals(""))
|
|
|
{
|
|
|
Pointer pszUrl = new Memory(260);
|
|
|
pszUrl.write(0, pstAlarmData.stCtrlFaceInfo[i].stCompareInfo.stPanoImage.szUrl, 0, 260);
|
|
|
Pointer pszData = new Memory(pstAlarmData.stCtrlFaceInfo[i].stCompareInfo.stPanoImage.udwSize);
|
|
|
NetDemo.netdevsdk.NETDEV_GetSystemPicture(lpUserID, pszUrl, pstAlarmData.stCtrlFaceInfo[i].stCompareInfo.stPanoImage.udwSize, pszData);
|
|
|
|
|
|
Common.savePicture(pszData, pstAlarmData.stCtrlFaceInfo[i].stCompareInfo.stPanoImage.udwSize, strFileName);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
Common.savePicture(pstAlarmData.stCtrlFaceInfo[i].stCompareInfo.stPanoImage.pcData, pstAlarmData.stCtrlFaceInfo[i].stCompareInfo.stPanoImage.udwSize, strFileName);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//小图
|
|
|
{
|
|
|
String strFileName = NetDemo.strPicturePath + strTime +"Person_Small.jpg";
|
|
|
Common.savePicture(pstAlarmData.stCtrlFaceInfo[i].stCompareInfo.stFaceImage.pcData, pstAlarmData.stCtrlFaceInfo[i].stCompareInfo.stFaceImage.udwSize, strFileName);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
// }
|
|
|
//}
|