DeteMin
2020-03-31 77c62e023d2dc31200fc696158df84b3aee90ee7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
package com.basic.security.manager.impl.cblite;
 
import android.text.TextUtils;
 
import com.basic.security.manager.impl.sqlite.SlVisitorModelManager;
import com.basic.security.model.ModelAdapter;
import com.basic.security.utils.Constants;
import com.basic.security.utils.FaceId;
import com.couchbase.lite.Expression;
 
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
 
public class VisitorModelManager extends BaseManager {
 
    // 查看人员数据库中是否有此人
    public static ModelAdapter getTemPersonInPersonDb(ModelAdapter temPerson) {
        if (Constants.useCouchbase) {
            String compareResultStr = FaceId.instance.compareFeatureInDb(temPerson.getBlob("camera_image_feature"), 70);
            String personId = compareResultStr.split(",", -1)[0];
            if (!TextUtils.isEmpty(personId) && findById(personId) != null) {
                return findById(personId);
            }
 
            return temPerson;
        } else {
            return SlVisitorModelManager.getTemPersonInPersonDb(temPerson);
        }
 
    }
 
    // 获取含有特定身份的所有人员
    public static List<ModelAdapter> getIdentityPersonList(List<ModelAdapter> allPersonList, Map<String, ModelAdapter> checkedIdentityMap) {
        if (Constants.useCouchbase) {
            List<String> allPersonIDList = new ArrayList<>();
            List<ModelAdapter> personList = new ArrayList<>();
 
            // 获取符合身份的所有人员信息
            for (String ruleId : checkedIdentityMap.keySet()) {
                Expression expression = Expression.property("table").equalTo(Expression.string("person_identity"))
                        .and(Expression.property("identity_id").equalTo(Expression.string(ruleId)));
                List<ModelAdapter> list = findList(expression);
                for (ModelAdapter person : list) {
                    allPersonIDList.add(person.getString("person_id"));
                }
 
            }
 
            // 获取临时库中在人员库中的人
            for (ModelAdapter person : allPersonList) {
                String compareResultStr = FaceId.instance.compareFeatureInDb(person.getBlob("camera_image_feature"), 70);
                String personId = compareResultStr.split(",", -1)[0];
                if (!TextUtils.isEmpty(personId) && findById(personId) != null) {
                    if (allPersonIDList.contains(personId)) {
                        personList.add(person);
                    }
                }
            }
 
            return personList;
        } else {
            return SlVisitorModelManager.getIdentityPersonList(allPersonList, checkedIdentityMap);
        }
    }
 
 
    public static List<ModelAdapter> getCameraData() {
        if (Constants.useCouchbase) {
            List<ModelAdapter> cameraDataList = new ArrayList<>();
            List<String> ipList = new ArrayList<>();// 避免设备存储的MutableDocument的id改变而有重复的ip
            Expression expression = Expression.property("table").equalTo(Expression.string("base_setting"));
            List<ModelAdapter> baseSettingList = findList(expression);
            for (ModelAdapter baseSetting : baseSettingList) {
                if (!TextUtils.isEmpty(DeviceManager.getDeviceId())
                        && !TextUtils.isEmpty(DeviceManager.getDeviceIp())
                        && DeviceManager.getDeviceId().equals(baseSetting.getString("device_name_ip"))
                        && DeviceManager.getDeviceIp().equals(baseSetting.getString("server_name_ip"))) {
 
                    Expression e = Expression.property("table").equalTo(Expression.string("device"))
                            .and(Expression.property("device_id").equalTo(Expression.string(baseSetting.getString("device_id"))));
                    if (!ipList.contains(findOne(e).getString("ip"))) {
                        ipList.add(findOne(e).getString("ip"));
                        cameraDataList.add(findOne(e));
                    }
 
                }
            }
            return cameraDataList;
        } else {
            return SlVisitorModelManager.getCameraData();
        }
    }
 
}