package com.ycl.api.YS.vca.face; import com.sun.jna.Memory; import com.sun.jna.Pointer; import com.ycl.api.YS.NetDemo; import com.ycl.api.YS.util.Common; import com.ycl.api.YS.lib.NetDEVSDKLib.*; import javax.swing.*; import java.io.File; /** * @description Face recognition record query. * @introduction Support IPC/VMS. */ public class PassRecord { /** * @introduction Face recognition record query. * @description It is mainly realized by calling the interface of NETDEV_FindFaceRecordDetailList. */ public static void queryPassRecord() { if(null == NetDemo.lpUserID) { JOptionPane.showMessageDialog(null, "Please Login device first. error code"+NetDemo.netdevsdk.NETDEV_GetLastError()); return; } String strBeginTime = NetDemo.PeoplePassStartTime.getText(); String strEndTime = NetDemo.PeoplePassEndTime.getText(); String getPersonPassAlarmSource = NetDemo.jTextFieldPersonPassAlarmSource.getText(); if(false == Common.isValidDate(strBeginTime,NetDemo.DateFormat) ||false == Common.isValidDate(strEndTime, NetDemo.DateFormat)) { JOptionPane.showMessageDialog(null, "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) { JOptionPane.showMessageDialog(null, " 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; if(getPersonPassAlarmSource.equals("")||getPersonPassAlarmSource==null) { stFindCond.dwCondSize = 3; 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[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); } 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) { 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(); String strFileNameBig = NetDemo.strPicturePath + "_" + "PassTime_"+ stRecordInfo.udwPassTime + "_" + "_" + strTime +"BigImage.jpg"; if(NetDemo.jComboBoxDeviceType.getSelectedIndex() == 1) { 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,error code"+NetDemo.netdevsdk.NETDEV_GetLastError()); } } 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) { System.out.printf("NETDEV_FindCloseFaceRecordDetail failed:%d\n", 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"; JOptionPane.showMessageDialog(null, "Query ended.The path:"+strPicPath); break; } } } }