From 3ca99f2b70ec9301c682e4271410b866eb4f4549 Mon Sep 17 00:00:00 2001
From: xuxiuxi <xuxiuxi@454eff88-639b-444f-9e54-f578c98de674>
Date: 星期日, 23 七月 2017 15:31:37 +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