From 1a10d546c76f474d33e23c5958c08aa0afcdae67 Mon Sep 17 00:00:00 2001 From: sujinwen <sujinwen@454eff88-639b-444f-9e54-f578c98de674> Date: 星期一, 24 七月 2017 11:46:45 +0800 Subject: [PATCH] --- VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/SurveillanceQueryItemUtil.java | 189 +++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 166 insertions(+), 23 deletions(-) diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/SurveillanceQueryItemUtil.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/SurveillanceQueryItemUtil.java index c52e764..ceccc0d 100644 --- a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/SurveillanceQueryItemUtil.java +++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/util/SurveillanceQueryItemUtil.java @@ -2,8 +2,10 @@ import java.util.ArrayList; import java.util.Date; +import java.util.HashMap; import java.util.HashSet; import java.util.List; +import java.util.Map; import java.util.Set; import cn.com.basic.face.discern.common.CommonVariables; @@ -19,26 +21,33 @@ } //鎵�鏈夌洃鎺у浘鐗� - private static List<SurveillanceQueryItem> allItems = new ArrayList<>(); + public static List<SurveillanceQueryItem> allItems = new ArrayList<>(); //璁垮閫夐」鍗$殑鍒嗙被锛堟湭娉ㄥ唽/浜哄憳绫诲瀷銆佹潵璁跨姸鎬併�佹爣绛剧姸鎬侊級 //鑰冨嫟閫夐」鍗★紙鑰冨嫟浜哄憳绫诲瀷锛氭暀甯堛�佸鐢熴�佸憳宸ワ紝鏉ヨ鐘舵�侊細绛惧埌銆佺閫�锛� //绗竴琛屾樉绀烘湭娉ㄥ唽锛岀浜岃鏄剧ず鏉ヨ - private static List<SurveillanceQueryItem> visitorTwoRows = new ArrayList<>(); + public static List<SurveillanceQueryItem> visitorTwoRows = new ArrayList<>(); //绗竴琛屾樉绀虹鍒帮紝绗簩琛屾樉绀虹閫� - private static List<SurveillanceQueryItem> attendanceTwoRows = new ArrayList<>(); - //鏈敞鍐岀殑鍒楄〃, 閫夋嫨鏃剁敤 - private static List<SurveillanceQueryItem> allUnregisterTwoRowsForSelect = new ArrayList(); + public static List<SurveillanceQueryItem> attendanceTwoRows = new ArrayList<>(); + //鏈敞鍐岀殑璁垮鍒楄〃, 閫夋嫨鏃剁敤 + public static List<SurveillanceQueryItem> allUnregisterVisitorTwoRowsForSelect = new ArrayList(); + //鏈敞鍐岀殑鑰冨嫟鍒楄〃, 閫夋嫨鏃剁敤 + public static List<SurveillanceQueryItem> allUnregisterAttenderTwoRowsForSelect = new ArrayList(); - public void addItems(List<SurveillanceQueryItem> returnItems, List<SurveillanceQueryItem> requestItems) { + public void addItems(List<SurveillanceQueryItem> returnItems, List<SurveillanceQueryItem> requestItems, String cameraInOrOut) { for ( int i = 0; i < returnItems.size(); i++) { SurveillanceQueryItem returnItem = returnItems.get(i); SurveillanceQueryItem requestItem = requestItems.get(i); - addItem(returnItem, requestItem); + addItem(returnItem, requestItem, cameraInOrOut); } removeTimeoutItemAndShow(); } - public void addItem(SurveillanceQueryItem returnItem, SurveillanceQueryItem requestItem) { + public void addItem(SurveillanceQueryItem returnItem, SurveillanceQueryItem requestItem, String cameraInOrOut) { + if (!CommonVariables.FACE_SERVER) { + RtspFaceNative.setFaceLabel(Integer.parseInt(cameraInOrOut), requestItem.getStTrackId(), returnItem.getVisitorType()==null?"":returnItem.getVisitorType().substring(0, + returnItem.getVisitorType().length() > 3 ? 3 : returnItem.getVisitorType().length() + )); + } returnItem.setCreateTime(new Date()); returnItem.setStTrackId(requestItem.getStTrackId()); returnItem.setBitmap(requestItem.getBitmap()); @@ -67,15 +76,20 @@ public List getAttendanceTwoRows() { attendanceTwoRows.clear(); for (SurveillanceQueryItem item : allItems) { - if (item.getRegisterOrCheckIn() == CommonVariables.Surveillance.VISIT_ATTENDANCE_ITEM_TYPE) { + if (item.getRegisterOrCheckIn() == CommonVariables.Surveillance.VISIT_ATTENDANCE_IN || + item.getRegisterOrCheckIn() == CommonVariables.Surveillance.VISIT_ATTENDANCE_OUT + ) { attendanceTwoRows.add(item); } } + AttendentUtil.removeDuplicateAttendanceIn(); + AttendentUtil.removeDuplicateAttendanceOut(); + AttendentUtil.sortByRow(); return attendanceTwoRows; } - public List getAllUnregisterTwoRowsForSelect(long selectedId) { - allUnregisterTwoRowsForSelect.clear(); + public List getAllUnregisterVisitorTwoRowsForSelect(long selectedId) { + allUnregisterVisitorTwoRowsForSelect.clear(); List<SurveillanceQueryItem> registerList = new ArrayList(); int countPerRow = 9; for (SurveillanceQueryItem surveillanceQueryItem : allItems) { @@ -113,22 +127,65 @@ } items.add(item); } - allUnregisterTwoRowsForSelect.addAll(items); - return allUnregisterTwoRowsForSelect; + allUnregisterVisitorTwoRowsForSelect.addAll(items); + return allUnregisterVisitorTwoRowsForSelect; + } + + public List getAllUnregisterAttenderTwoRowsForSelect(long selectedId) { + allUnregisterAttenderTwoRowsForSelect.clear(); + List<SurveillanceQueryItem> registerList = new ArrayList(); + int countPerRow = 9; + for (SurveillanceQueryItem surveillanceQueryItem : allItems) { + if (surveillanceQueryItem.getRegisterOrCheckIn() == CommonVariables.Surveillance.VISIT_REGISTER_ITEM_TYPE) { + if (registerList.size() > countPerRow*2) { + break; + } + if (surveillanceQueryItem.getIdForSelect() == selectedId) { + surveillanceQueryItem.setSurveillancePhotoSelected(true); + } else { + surveillanceQueryItem.setSurveillancePhotoSelected(false); + } + registerList.add(surveillanceQueryItem); + } + } + + SurveillanceQueryItem item; + List items = new ArrayList(); + int m = 0, n = 0; + for (int i = 0; i < countPerRow*2; i++) { + if (i % 2 == 0) { + if (m < registerList.size()) { + item = registerList.get(m); + m++; + } else { + item = VisitorUtil.getBlankItem(); + } + } else { + if (n < registerList.size() - countPerRow) { + item = registerList.get(countPerRow+n); + n++; + } else { + item = VisitorUtil.getBlankItem(); + } + } + items.add(item); + } + allUnregisterAttenderTwoRowsForSelect.addAll(items); + return allUnregisterAttenderTwoRowsForSelect; } public void removeTimeoutItemAndShow() { List itemsToRemove = new ArrayList(); - for (SurveillanceQueryItem item : allItems) { - if (item.getRegisterOrCheckIn() == CommonVariables.Surveillance.VISIT_REGISTER_ITEM_TYPE) { - Date now = new Date(); - Date createTime = item.getCreateTime(); - double minutes = (now.getTime() - createTime.getTime())*1.0 / 1000 / 60; - if (minutes >= 5) { - itemsToRemove.add(item); - } - } - } +// for (SurveillanceQueryItem item : allItems) { +// if (item.getRegisterOrCheckIn() == CommonVariables.Surveillance.VISIT_REGISTER_ITEM_TYPE) { +// Date now = new Date(); +// Date createTime = item.getCreateTime(); +// double minutes = (now.getTime() - createTime.getTime())*1.0 / 1000 / 60; +// if (minutes >= 5) { +// itemsToRemove.add(item); +// } +// } +// } allItems.removeAll(itemsToRemove); SurveillanceFragment.getInstance().get_fragment_supervisory_bottom_visitor_list_view().show(SurveillanceQueryItemUtil.getInstance().getVisitorTwoRows()); SurveillanceFragment.getInstance().get_fragment_supervisory_bottom_attendance_list_view().show(SurveillanceQueryItemUtil.getInstance().getAttendanceTwoRows()); @@ -230,6 +287,92 @@ static class AttendentUtil { + public static void removeDuplicateAttendanceIn() { + Map<String, String> registerIdMap = new HashMap<>(); + List itemsToRemove = new ArrayList(); + for (SurveillanceQueryItem item : attendanceTwoRows) { + if (item.getRegisterOrCheckIn() == CommonVariables.Surveillance.VISIT_ATTENDANCE_IN) { + String registerId = item.getRegisterId(); + if (registerIdMap.containsKey(item.getRegisterId())) { + itemsToRemove.add(item); + } else { + registerIdMap.put(registerId, registerId); + } + } + } + attendanceTwoRows.removeAll(itemsToRemove); + } + + public static void removeDuplicateAttendanceOut() { + Map<String, String> registerIdMap = new HashMap<>(); + List itemsToRemove = new ArrayList(); + for (SurveillanceQueryItem item : attendanceTwoRows) { + if (item.getRegisterOrCheckIn() == CommonVariables.Surveillance.VISIT_ATTENDANCE_OUT) { + String registerId = item.getRegisterId(); + if (registerIdMap.containsKey(item.getRegisterId())) { + itemsToRemove.add(item); + } else { + registerIdMap.put(registerId, registerId); + } + } + } + attendanceTwoRows.removeAll(itemsToRemove); + } + + public static void sortByRow() { + List<SurveillanceQueryItem> attenderInList = new ArrayList<SurveillanceQueryItem>(); + List<SurveillanceQueryItem> attenderOutList = new ArrayList<SurveillanceQueryItem>(); + int i1 = 0, j = 0; + int maxAttenderIn = 50; + int maxAttenderOut = 50; + for (SurveillanceQueryItem item : attendanceTwoRows) { + if (item.getRegisterOrCheckIn() == CommonVariables.Surveillance.VISIT_ATTENDANCE_IN) { + if (i1 < maxAttenderIn) { + attenderInList.add(item); + i1++; + } + } + if (item.getRegisterOrCheckIn() == CommonVariables.Surveillance.VISIT_ATTENDANCE_OUT) { + if (j < maxAttenderOut) { + attenderOutList.add(item); + j++; + } + } + } + + int max = attenderInList.size() > attenderOutList.size() ? attenderInList.size() : attenderOutList.size(); + + List tempList = new ArrayList(); + + int m = 0, n = 0; + for (int i = 0; i < max * 2; i++) { + SurveillanceQueryItem item; + if (i % 2 == 0) { + if (m < attenderInList.size()) { + item = attenderInList.get(m); + } else { + item = getBlankItem(); + } + m++; + } else { + if (n < attenderOutList.size()) { + item = attenderOutList.get(n); + } else { + item = getBlankItem(); + } + n++; + } + tempList.add(item); + } + attendanceTwoRows.clear(); + attendanceTwoRows.addAll(tempList); + } + + public static SurveillanceQueryItem getBlankItem() { + SurveillanceQueryItem blankItem = new SurveillanceQueryItem(); + blankItem.setRegisterOrCheckIn(CommonVariables.Surveillance.VISIT_ATTENDANCE_BLANK); + return blankItem; + } } } -- Gitblit v1.8.0