|  | @ -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);
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | }
 | 
	
		
			
				|  |  | //    }
 | 
	
		
			
				|  |  | //}
 |