package com.basic.security.fragment;
|
|
import android.graphics.Bitmap;
|
import android.graphics.BitmapFactory;
|
import android.os.Handler;
|
import android.text.TextUtils;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.widget.AdapterView;
|
import android.widget.ArrayAdapter;
|
import android.widget.BaseAdapter;
|
import android.widget.Button;
|
import android.widget.CheckBox;
|
import android.widget.EditText;
|
import android.widget.FrameLayout;
|
import android.widget.GridView;
|
import android.widget.ImageView;
|
import android.widget.LinearLayout;
|
import android.widget.ListView;
|
import android.widget.RadioButton;
|
import android.widget.RelativeLayout;
|
import android.widget.Spinner;
|
import android.widget.TextView;
|
|
import com.basic.security.R;
|
import com.basic.security.base.BaseApplication;
|
import com.basic.security.base.BaseFragment;
|
import com.basic.security.fragment.organizationHelper.TreeAdapter;
|
import com.basic.security.fragment.organizationHelper.TreePoint;
|
import com.basic.security.fragment.organizationHelper.TreeUtils;
|
import com.basic.security.manager.IdentityManager;
|
import com.basic.security.manager.PersonIdentityManager;
|
import com.basic.security.manager.PersonManager;
|
import com.basic.security.manager.impl.cblite.TemporaryPersonManager;
|
import com.basic.security.manager.impl.cblite.VisitManager;
|
import com.basic.security.manager.impl.cblite.VisitorModelManager;
|
import com.basic.security.model.ModelAdapter;
|
import com.basic.security.utils.BasicIdUtil;
|
import com.basic.security.utils.DateUtil;
|
import com.basic.security.utils.ToastUtil;
|
import com.basic.security.utils.abslistview.CommonAdapter;
|
import com.basic.security.utils.abslistview.ViewHolder;
|
import com.basic.security.utils.yuv.pull.client.ServerUIMain;
|
import com.basic.security.utils.yuv.pull.client.ServerUIMain2;
|
import com.basic.security.utils.yuv.pull.client.ServerUIMain3;
|
import com.basic.security.utils.yuv.pull.client.SocketClient;
|
import com.basic.security.utils.yuv.pull.client.SocketClient2;
|
import com.basic.security.utils.yuv.pull.client.SocketClient3;
|
import com.basic.security.widget.hlistview.HListView;
|
|
import org.androidannotations.annotations.Click;
|
import org.androidannotations.annotations.EFragment;
|
import org.androidannotations.annotations.UiThread;
|
import org.androidannotations.annotations.ViewById;
|
|
import java.util.ArrayList;
|
import java.util.Collections;
|
import java.util.Comparator;
|
import java.util.Date;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
@EFragment(R.layout.fragment_visitor_model)
|
public class VisitorModelFragment extends BaseFragment {
|
@ViewById
|
public LinearLayout ll_image_one_check_identity, ll_temp_person_check_identity, ll_image_only_one_check_identity;
|
@ViewById
|
public Button save_person_visitor_model, delete_person, btn_temp_person_sure;
|
@ViewById
|
public GridView gv_visited_person, gv_temp_person;
|
@ViewById
|
public RelativeLayout rl_show_organization_click, rl_show_organization;
|
@ViewById
|
public ListView lv_organization;
|
public Map<String, ModelAdapter> checkedIdentityMapByPerson = new HashMap<>();
|
@ViewById
|
ImageView iv_image_one, iv_image_two, iv_space, iv_image_one_left, iv_image_one_right,
|
iv_image_two_left, iv_image_two_right, iv_register_image, iv_contact_person, iv_image_only_one;
|
@ViewById
|
TextView tv_image_one_name_top, tv_image_two_name_top, tv_image_one_name, tv_checked_identity,
|
tv_image_two_name, tv_register_time, tv_visit_time, tv_visited_person_name,
|
tv_visited_person_identity, tv_visited_person_department, tv_visited_person_phone,
|
tv_image_only_one_name_top, tv_text_checked, tv_checked_identity_only_one;
|
@ViewById
|
HListView hlv_image_one, hlv_image_two, hlv_identity;
|
@ViewById
|
RadioButton rb_all_device, rb_this_device;
|
@ViewById
|
EditText et_input_name, et_input_id_card, et_input_phone, et_visited_person, et_visited_reason, et_remark, et_register_model;
|
@ViewById
|
Spinner spinner_register_rule;
|
@ViewById
|
FrameLayout fl_image_part_one, fl_image_part_two, fl_image_only_one;
|
List<ModelAdapter> allIdentityList = new ArrayList<>();
|
String[] arr = {"允许通行", "有效时间内通行", "确认通行", "拒绝通行"};
|
private CommonAdapter identityAdapter;
|
private PartOneFaceAdapter partOneFaceAdapter;
|
private PartTwoFaceAdapter partTwoFaceAdapter;
|
private ModelAdapter checkedPerson = null;
|
private List<ModelAdapter> partOnePersonList = new ArrayList<>();
|
private List<ModelAdapter> partTwoPersonList = new ArrayList<>();
|
private String leftCameraIp, rightCameraIp;
|
private Map<String, ModelAdapter> checkedIdentityMap = new HashMap<>();
|
private TreeAdapter adapter;
|
private List<TreePoint> pointList = new ArrayList<>();
|
private HashMap<String, TreePoint> pointMap = new HashMap<>();
|
//======================
|
private Handler handler = new Handler();
|
private Runnable myRunnable = new Runnable() {
|
@Override
|
public void run() {
|
refreshPerson();
|
handler.postDelayed(this, 10000);
|
|
}
|
|
};
|
//======================
|
private int flag = -1;
|
private int oneCamera = 1;
|
private int twoCamera = 2;
|
private String register_rule = arr[0];
|
|
@Click
|
void ll_image_one_check_identity() { // 点击选择人员身份{两个视频}
|
checkedIdentityMap.clear();
|
ll_temp_person_check_identity.setVisibility(View.VISIBLE);
|
gv_temp_person.setAdapter(new IdentityAdapter());
|
flag = twoCamera;
|
}
|
|
@Click
|
void ll_image_only_one_check_identity() {// 一个视频
|
ll_image_one_check_identity();
|
flag = oneCamera;
|
}
|
|
@Click
|
void btn_temp_person_sure() {
|
ll_temp_person_check_identity.setVisibility(View.GONE);
|
if (checkedIdentityMap.size() != 0) {
|
StringBuffer sb = new StringBuffer();
|
for (ModelAdapter identity : checkedIdentityMap.values()) {
|
sb.append(identity.getString("name") + ",");
|
}
|
if (flag == twoCamera) {
|
tv_checked_identity.setText(sb.substring(0, sb.length() - 1));
|
} else if (flag == oneCamera) {
|
tv_checked_identity_only_one.setText(sb.substring(0, sb.length() - 1));
|
}
|
getPersonData();
|
}
|
|
}
|
|
public void getPersonData() {
|
BaseApplication.getApplication().executorService.execute(() -> {
|
if (flag == twoCamera) {
|
partOnePersonList = VisitorModelManager.getIdentityPersonList(partOnePersonList, checkedIdentityMap);
|
partTwoPersonList = VisitorModelManager.getIdentityPersonList(partTwoPersonList, checkedIdentityMap);
|
refreshUiThread();
|
} else if (flag == oneCamera) {
|
partTwoPersonList = VisitorModelManager.getIdentityPersonList(partTwoPersonList, checkedIdentityMap);
|
refreshPartTwoAdapter();
|
}
|
});
|
|
}
|
|
@UiThread
|
public void refreshPartTwoAdapter() {
|
if (partTwoFaceAdapter != null) {
|
partTwoFaceAdapter.notifyDataSetChanged();
|
}
|
}
|
|
@UiThread
|
public void refreshUiThread() {
|
if (partOneFaceAdapter != null) {
|
partOneFaceAdapter.notifyDataSetChanged();
|
}
|
if (partTwoFaceAdapter != null) {
|
partTwoFaceAdapter.notifyDataSetChanged();
|
}
|
}
|
|
@Click
|
void rl_show_organization_click() {
|
rl_show_organization.setVisibility(View.VISIBLE);
|
adapter = new TreeAdapter(mainActivity(), pointList, pointMap);
|
lv_organization.setAdapter(adapter);
|
initOrganizationData();
|
lv_organization.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
@Override
|
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
// adapter.onItemClick(position);
|
TreePoint treePoint = (TreePoint) adapter.getItem(position);
|
if ("1".equals(treePoint.getISLEAF())) {
|
rl_show_organization.setVisibility(View.GONE);
|
ToastUtil.show(pointList.get(position).getNNAME());
|
} else { //如果点击的是父类
|
if (treePoint.isExpand()) {
|
for (TreePoint tempPoint : pointList) {
|
if (tempPoint.getPARENTID().equals(treePoint.getID())) {
|
if ("0".equals(treePoint.getISLEAF())) {
|
tempPoint.setExpand(false);
|
}
|
}
|
}
|
treePoint.setExpand(false);
|
} else {
|
treePoint.setExpand(true);
|
}
|
}
|
adapter.notifyDataSetChanged();
|
}
|
});
|
}
|
|
private void initOrganizationData() {
|
pointList.clear();
|
int id = 1000;
|
int parentId = 0;
|
int parentId2 = 0;
|
int parentId3 = 0;
|
|
for (int i = 1; i < 3; i++) {
|
id++;
|
pointList.add(new TreePoint("" + id, "学校" + i, "" + parentId, "0", i));
|
for (int j = 1; j < 7; j++) {
|
if (j == 1) {
|
parentId2 = id;
|
}
|
id++;
|
pointList.add(new TreePoint("" + id, i + "年级" + "_" + j, "" + parentId2, "0", j));
|
for (int k = 1; k < 3; k++) {
|
if (k == 1) {
|
parentId3 = id;
|
}
|
id++;
|
pointList.add(new TreePoint("" + id, "班级" + i + "_" + j + "_" + k, "" + parentId3, "1", k));
|
|
}
|
}
|
}
|
|
//打乱集合中的数据
|
Collections.shuffle(pointList);
|
//对集合中的数据重新排序
|
updateData();
|
}
|
|
//对数据排序 深度优先
|
private void updateData() {
|
for (TreePoint treePoint : pointList) {
|
pointMap.put(treePoint.getID(), treePoint);
|
}
|
Collections.sort(pointList, new Comparator<TreePoint>() {
|
@Override
|
public int compare(TreePoint lhs, TreePoint rhs) {
|
int llevel = TreeUtils.getLevel(lhs, pointMap);
|
int rlevel = TreeUtils.getLevel(rhs, pointMap);
|
if (llevel == rlevel) {
|
if (lhs.getPARENTID().equals(rhs.getPARENTID())) { //左边小
|
return lhs.getDISPLAY_ORDER() > rhs.getDISPLAY_ORDER() ? 1 : -1;
|
} else { //如果父辈id不相等
|
//同一级别,不同父辈
|
TreePoint ltreePoint = TreeUtils.getTreePoint(lhs.getPARENTID(), pointMap);
|
TreePoint rtreePoint = TreeUtils.getTreePoint(rhs.getPARENTID(), pointMap);
|
return compare(ltreePoint, rtreePoint); //父辈
|
}
|
} else { //不同级别
|
if (llevel > rlevel) { //左边级别大 左边小
|
if (lhs.getPARENTID().equals(rhs.getID())) {
|
return 1;
|
} else {
|
TreePoint lreasonTreePoint = TreeUtils.getTreePoint(lhs.getPARENTID(), pointMap);
|
return compare(lreasonTreePoint, rhs);
|
}
|
} else { //右边级别大 右边小
|
if (rhs.getPARENTID().equals(lhs.getID())) {
|
return -1;
|
}
|
TreePoint rreasonTreePoint = TreeUtils.getTreePoint(rhs.getPARENTID(), pointMap);
|
return compare(lhs, rreasonTreePoint);
|
}
|
}
|
}
|
});
|
adapter.notifyDataSetChanged();
|
}
|
|
@Click
|
void save_person_visitor_model() {
|
if (checkedPerson == null) {
|
return;
|
}
|
if ("temporary_person".equals(checkedPerson.getString("table"))) {
|
byte[] camera_image_path = checkedPerson.getBlob("camera_image_path");
|
byte[] camera_image_feature = checkedPerson.getBlob("camera_image_feature");
|
checkedPerson = new ModelAdapter(BasicIdUtil.getPersonId());
|
checkedPerson.setString("table", "person");
|
saveBlob(checkedPerson, "camera_image_path", camera_image_path);
|
saveBlob(checkedPerson, "camera_image_feature", camera_image_feature);
|
}
|
savePersonIdentity(checkedPerson.getId());
|
|
String name = et_input_name.getText().toString().trim();
|
String id_cars_number = et_input_id_card.getText().toString().trim();
|
String phone = et_input_phone.getText().toString().trim();
|
String register_model = et_register_model.getText().toString().trim();
|
String visited_person = et_visited_person.getText().toString().trim();
|
String remark = et_remark.getText().toString().trim();
|
|
checkedPerson.setString("name", name);
|
checkedPerson.setString("id_card_number", id_cars_number);
|
checkedPerson.setString("phone", phone);
|
checkedPerson.setString("sign_up_method", register_model);
|
checkedPerson.setString("sign_up_status", "已注册");
|
checkedPerson.setString("sign_up_rule", register_rule);
|
checkedPerson.setString("visited_person", visited_person);
|
checkedPerson.setString("remark", remark);
|
// checkedPerson.setString("table", "person");
|
checkedPerson.setString("del_flag", "0");
|
checkedPerson.setString("sign_up_time", new Date().getTime() + "");
|
ToastUtil.show("保存成功");
|
PersonManager.savePerson(checkedPerson);
|
|
}
|
|
@Override
|
public void show() {
|
super.show();
|
ll_temp_person_check_identity.setVisibility(View.GONE);
|
handler.postDelayed(myRunnable, 10000);
|
initVideoView();
|
initImagePartOne();
|
initImagePartTwo();
|
initRegisterRule();
|
initPersonIdentity(null);
|
initVisitedPerson();
|
setVisitorPerson(new ModelAdapter());// 为了在进入页面时初始化数据(都不显示)
|
}
|
|
@Override
|
public void hide() {
|
super.hide();
|
handler.removeCallbacks(myRunnable);
|
}
|
|
public void refreshPerson() {
|
BaseApplication.getApplication().executorService.execute(() -> {
|
partOnePersonList = TemporaryPersonManager.getTemporaryPersonList(leftCameraIp);
|
partTwoPersonList = TemporaryPersonManager.getTemporaryPersonList(rightCameraIp);
|
refreshUiThread();
|
});
|
}
|
|
private void initVideoView() {
|
List<ModelAdapter> cameraDataList = VisitorModelManager.getCameraData();
|
if (cameraDataList.size() == 0) {
|
ModelAdapter deviceDocument1 = new ModelAdapter();
|
ModelAdapter deviceDocument2 = new ModelAdapter();
|
setTwoCamera(deviceDocument1, deviceDocument2);
|
} else if (cameraDataList.size() == 1) {
|
ModelAdapter deviceDocument1 = cameraDataList.get(0);
|
setOneCamera(deviceDocument1);
|
} else {
|
ModelAdapter deviceDocument1 = cameraDataList.get(0);
|
ModelAdapter deviceDocument2 = cameraDataList.get(1);
|
setTwoCamera(deviceDocument1, deviceDocument2);
|
}
|
|
}
|
|
private void setOneCamera(ModelAdapter deviceDocument) {
|
fl_image_part_one.setVisibility(View.GONE);
|
fl_image_part_two.setVisibility(View.GONE);
|
fl_image_only_one.setVisibility(View.VISIBLE);
|
tv_text_checked.setVisibility(View.VISIBLE);
|
tv_checked_identity_only_one.setVisibility(View.VISIBLE);
|
ll_image_only_one_check_identity.setVisibility(View.VISIBLE);
|
tv_image_only_one_name_top.setText(deviceDocument.getString("name"));
|
tv_image_two_name.setText(deviceDocument.getString("name"));
|
rightCameraIp = deviceDocument.getString("ip");
|
if (!TextUtils.isEmpty(rightCameraIp)) {
|
ServerUIMain3 serverUIMain3 = new ServerUIMain3();
|
SocketClient3 server = new SocketClient3(rightCameraIp);
|
server.setOnDataListener(serverUIMain3);
|
server.start();
|
}
|
}
|
|
private void setTwoCamera(ModelAdapter deviceDocument1, ModelAdapter deviceDocument2) {
|
fl_image_part_one.setVisibility(View.VISIBLE);
|
fl_image_part_two.setVisibility(View.VISIBLE);
|
fl_image_only_one.setVisibility(View.GONE);
|
tv_text_checked.setVisibility(View.GONE);
|
tv_checked_identity_only_one.setVisibility(View.GONE);
|
ll_image_only_one_check_identity.setVisibility(View.GONE);
|
|
tv_image_one_name_top.setText(deviceDocument1.getString("name"));
|
tv_image_two_name_top.setText(deviceDocument2.getString("name"));
|
|
tv_image_one_name.setText(deviceDocument1.getString("name"));
|
tv_image_two_name.setText(deviceDocument2.getString("name"));
|
|
leftCameraIp = deviceDocument1.getString("ip");
|
rightCameraIp = deviceDocument2.getString("ip");
|
if (!TextUtils.isEmpty(leftCameraIp)) {
|
ServerUIMain serverUIMain = new ServerUIMain();
|
SocketClient server = new SocketClient(leftCameraIp);
|
server.setOnDataListener(serverUIMain);
|
server.start();
|
}
|
if (!TextUtils.isEmpty(rightCameraIp)) {
|
ServerUIMain2 serverUIMain = new ServerUIMain2();
|
SocketClient2 server = new SocketClient2(rightCameraIp);
|
server.setOnDataListener(serverUIMain);
|
server.start();
|
}
|
}
|
|
@UiThread
|
public void setRemoteVideoImage(Bitmap bitmap) {
|
iv_image_one.setImageBitmap(bitmap);
|
}
|
|
@UiThread
|
public void setRemoteVideoImage2(Bitmap bitmap) {
|
iv_image_two.setImageBitmap(bitmap);
|
}
|
|
@UiThread
|
public void setRemoteVideoImage3(Bitmap bitmap) {
|
iv_image_only_one.setImageBitmap(bitmap);
|
}
|
|
private void initPersonIdentity(ModelAdapter person) {
|
if (person != null) {
|
setIdentityWithPersonInThread(person.getId());
|
}
|
allIdentityList.clear();
|
allIdentityList.addAll(IdentityManager.findIdentityList());
|
identityAdapter = new CommonAdapter<ModelAdapter>(mainActivity(), R.layout.identity_checkbox_item2, allIdentityList) {
|
|
@Override
|
protected void convert(ViewHolder viewHolder, ModelAdapter item, int position) {
|
CheckBox identityCB = viewHolder.getView(R.id.identity_checkbox);
|
identityCB.setText(item.getString("name"));
|
identityCB.setChecked(checkedIdentityMapByPerson.containsKey(item.getId()));
|
identityCB.setClickable(true);
|
if (person != null && "1".equals(person.getString("auto_init"))) {
|
identityCB.setClickable(false);
|
} else {
|
identityCB.setClickable(true);
|
identityCB.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (checkedIdentityMapByPerson.containsKey(item.getId())) {
|
checkedIdentityMapByPerson.remove(item.getId());
|
} else {
|
checkedIdentityMapByPerson.put(item.getId(), item);
|
}
|
identityAdapter.notifyDataSetChanged();
|
}
|
});
|
}
|
|
}
|
};
|
|
hlv_identity.setAdapter(identityAdapter);
|
}
|
|
public void setIdentityWithPersonInThread(String personId) {
|
BaseApplication.getApplication().executorService.execute(() -> {
|
if (personId != null) {
|
checkedIdentityMapByPerson = PersonIdentityManager.findIdentityMapByPersonId(personId);
|
}
|
notifyIdentitySetChanged();
|
});
|
}
|
|
@UiThread
|
public void notifyIdentitySetChanged() {
|
identityAdapter.notifyDataSetChanged();
|
}
|
|
private void initImagePartOne() {
|
partOnePersonList = TemporaryPersonManager.getTemporaryPersonList(leftCameraIp);
|
partOneFaceAdapter = new PartOneFaceAdapter();
|
hlv_image_one.setAdapter(partOneFaceAdapter);
|
hlv_image_one.setOnItemClickListener(new com.basic.security.widget.hlistview.AdapterView.OnItemClickListener() {
|
@Override
|
public void onItemClick(com.basic.security.widget.hlistview.AdapterView<?> parent, View view, int position, long id) {
|
ModelAdapter personDocument = VisitorModelManager.getTemPersonInPersonDb(partOnePersonList.get(position));
|
setVisitorPerson(personDocument);
|
}
|
});
|
}
|
|
private void initImagePartTwo() {
|
partTwoPersonList = TemporaryPersonManager.getTemporaryPersonList(rightCameraIp);
|
partTwoFaceAdapter = new PartTwoFaceAdapter();
|
hlv_image_two.setAdapter(partTwoFaceAdapter);
|
hlv_image_two.setOnItemClickListener(new com.basic.security.widget.hlistview.AdapterView.OnItemClickListener() {
|
@Override
|
public void onItemClick(com.basic.security.widget.hlistview.AdapterView<?> parent, View view, int position, long id) {
|
ModelAdapter personDocument = VisitorModelManager.getTemPersonInPersonDb(partTwoPersonList.get(position));
|
setVisitorPerson(personDocument);
|
}
|
});
|
}
|
|
private void initRegisterRule() {
|
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getContext(), R.layout.spinner_item_small_text, arr);
|
spinner_register_rule.setPopupBackgroundResource(R.color.press_menu_text);
|
spinner_register_rule.setAdapter(adapter);
|
spinner_register_rule.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
|
@Override
|
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
register_rule = arr[position];
|
}
|
|
@Override
|
public void onNothingSelected(AdapterView<?> parent) {
|
|
}
|
});
|
|
}
|
|
|
private void initVisitedPerson() {
|
List<ModelAdapter> visitedPersonList = new ArrayList<>();
|
CommonAdapter visitedImageAdapter = new CommonAdapter<ModelAdapter>(mainActivity(), R.layout.face_view_image, visitedPersonList) {
|
|
@Override
|
protected void convert(ViewHolder viewHolder, ModelAdapter item, int position) {
|
ImageView imageView = viewHolder.getView(R.id.face);
|
byte[] blob = visitedPersonList.get(position).getBlob("camera_image_path");
|
Bitmap bitmap = null;
|
if (blob != null) {
|
try {
|
byte[] data = blob;
|
if (data.length != 0) {
|
bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
bitmap = BitmapFactory.decodeResource(mainActivity().getResources(), R.drawable.u1280);
|
}
|
} else {
|
bitmap = BitmapFactory.decodeResource(mainActivity().getResources(), R.drawable.u1280);
|
}
|
imageView.setImageBitmap(bitmap);
|
}
|
};
|
gv_visited_person.setAdapter(visitedImageAdapter);
|
gv_visited_person.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
@Override
|
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
setConnectPersonData(visitedPersonList.get(position));
|
}
|
|
});
|
}
|
|
private void setConnectPersonData(ModelAdapter personDocument) {
|
byte[] blob = personDocument.getBlob("camera_image_path");
|
Bitmap bitmap = null;
|
if (blob != null) {
|
try {
|
byte[] data = blob;
|
if (data.length != 0) {
|
bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
bitmap = BitmapFactory.decodeResource(mainActivity().getResources(), R.drawable.u1280);
|
}
|
} else {
|
bitmap = BitmapFactory.decodeResource(mainActivity().getResources(), R.drawable.u1280);
|
}
|
iv_contact_person.setImageBitmap(bitmap);
|
tv_visited_person_name.setText(personDocument.getString("name"));
|
tv_visited_person_identity.setText(personDocument.getString(""));
|
tv_visited_person_department.setText(personDocument.getString(""));
|
tv_visited_person_phone.setText(personDocument.getString("phone"));
|
}
|
|
|
private void setVisitorPerson(ModelAdapter visitorPersonDocument) {
|
checkedPerson = visitorPersonDocument;
|
byte[] blob = visitorPersonDocument.getBlob("camera_image_path");
|
Bitmap bitmap = null;
|
if (blob != null) {
|
try {
|
byte[] data = blob;
|
if (data.length != 0) {
|
bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
bitmap = BitmapFactory.decodeResource(mainActivity().getResources(), R.drawable.u1280);
|
}
|
} else {
|
bitmap = BitmapFactory.decodeResource(mainActivity().getResources(), R.drawable.u1280);
|
}
|
iv_register_image.setImageBitmap(bitmap);
|
et_input_name.setText(visitorPersonDocument.getString("name"));
|
et_input_id_card.setText(visitorPersonDocument.getString("id_card_number"));
|
et_input_phone.setText(visitorPersonDocument.getString("phone"));
|
String type = visitorPersonDocument.getString("sign_up_method");
|
if ("自助注册".equals(type)) {
|
if ("不需要验证身份证".equals(visitorPersonDocument.getString("verify_status"))) {
|
type = type + "-普通验证";
|
} else {
|
type = type + "-身份证验证";
|
}
|
} else if ("管理员注册".equals(type)) {
|
if ("不需要验证身份证".equals(visitorPersonDocument.getString("verify_status"))) {
|
type = "人工注册-普通验证";
|
} else {
|
type = "人工注册-身份证验证";
|
}
|
} else if (TextUtils.isEmpty(type)) {
|
type = "访客注册";
|
}
|
et_register_model.setText(type);
|
if (!TextUtils.isEmpty(visitorPersonDocument.getString("sign_up_time"))) {
|
tv_register_time.setText(DateUtil.formatTime(Long.parseLong(visitorPersonDocument.getString("sign_up_time")),
|
"yyyy-MM-dd HH:mm:ss"));
|
} else {
|
tv_register_time.setText(DateUtil.formatTime(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
|
}
|
if (visitorPersonDocument != null) {
|
String signUpRule = visitorPersonDocument.getString("sign_up_rule");
|
if (!TextUtils.isEmpty(signUpRule)) {
|
for (int i = 0; i < arr.length; i++) {
|
String item = arr[i];
|
if (item.equals(signUpRule)) {
|
spinner_register_rule.setSelection(i);
|
break;
|
}
|
}
|
}
|
}
|
et_visited_person.setText(visitorPersonDocument.getString("visited_person"));
|
et_visited_reason.setText(visitorPersonDocument.getString("visited_reason"));
|
et_remark.setText(visitorPersonDocument.getString("remark"));
|
String lastTime = VisitManager.getLastVisitTime(visitorPersonDocument.getId());
|
if (TextUtils.isEmpty(lastTime)) {
|
tv_visit_time.setText("暂无");
|
} else {
|
tv_visit_time.setText(DateUtil.formatTime(Long.parseLong(lastTime), "yyyy-MM-dd HH:mm:ss"));
|
}
|
initPersonIdentity(visitorPersonDocument);
|
}
|
|
public boolean savePersonIdentity(String personId) {
|
List<String> nameList = new ArrayList<>();
|
for (ModelAdapter identityModelAdapter : checkedIdentityMapByPerson.values()) {
|
if (identityModelAdapter != null && !TextUtils.isEmpty(identityModelAdapter.getString("name"))) {
|
nameList.add(identityModelAdapter.getString("name"));
|
}
|
}
|
if (nameList.contains("黑名单") && nameList.contains("管理员")) {
|
ToastUtil.show("管理员和黑名单不能同时选中");
|
return false;
|
}
|
|
Map<String, ModelAdapter> dbCheckedIdentityMapByPerson = PersonIdentityManager.findIdentityMapByPersonId(personId);
|
for (String identityId : checkedIdentityMapByPerson.keySet()) {
|
if (!dbCheckedIdentityMapByPerson.containsKey(identityId)) {
|
PersonIdentityManager.save(personId, identityId);
|
|
if (IdentityManager.findIdentityById(identityId) != null &&
|
"管理员".equals(IdentityManager.findIdentityById(identityId).getString("name"))) {
|
PersonIdentityManager.saveAdminIdentity(personId);
|
}
|
}
|
}
|
for (String identityId : dbCheckedIdentityMapByPerson.keySet()) {
|
if (!checkedIdentityMapByPerson.containsKey(identityId)) {
|
PersonIdentityManager.delete(personId, identityId);
|
if (IdentityManager.findIdentityById(identityId) != null &&
|
"管理员".equals(IdentityManager.findIdentityById(identityId).getString("name"))) {
|
PersonIdentityManager.delAdminIdentity(personId);
|
}
|
}
|
}
|
|
return true;
|
}
|
|
private class IdentityAdapter extends BaseAdapter {
|
|
private List<ModelAdapter> identityList = new ArrayList();
|
|
public IdentityAdapter() {
|
identityList = IdentityManager.findIdentityList();
|
}
|
|
@Override
|
public int getCount() {
|
return identityList == null ? 0 : identityList.size();
|
}
|
|
@Override
|
public Object getItem(int position) {
|
return identityList.get(position);
|
}
|
|
@Override
|
public long getItemId(int position) {
|
return position;
|
}
|
|
@Override
|
public View getView(int position, View convertView, ViewGroup parent) {
|
View view;
|
ViewHolder viewHolder;
|
if (convertView == null) {
|
//加载子布局
|
view = LayoutInflater.from(getContext()).inflate(R.layout.item_identity_list, parent, false);
|
viewHolder = new ViewHolder();
|
viewHolder.checkBox = view.findViewById(R.id.item_ck);
|
view.setTag(viewHolder);
|
} else {
|
view = convertView;
|
viewHolder = (ViewHolder) view.getTag();
|
}
|
final ModelAdapter singleIdentityInAllIdentity = identityList.get(position);
|
viewHolder.checkBox.setText(identityList.get(position).getString("name"));
|
if (checkedIdentityMap.containsKey(singleIdentityInAllIdentity.getId())) {
|
viewHolder.checkBox.setChecked(true);
|
} else {
|
viewHolder.checkBox.setChecked(false);
|
}
|
viewHolder.checkBox.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (checkedIdentityMap.containsKey(singleIdentityInAllIdentity.getId())) {
|
checkedIdentityMap.remove(singleIdentityInAllIdentity.getId());
|
} else {
|
checkedIdentityMap.put(singleIdentityInAllIdentity.getId(), singleIdentityInAllIdentity);
|
}
|
}
|
});
|
return view;
|
}
|
|
class ViewHolder {
|
CheckBox checkBox;
|
}
|
}
|
|
private class PartOneFaceAdapter extends BaseAdapter {
|
|
@Override
|
public int getCount() {
|
return partOnePersonList == null ? 0 : partOnePersonList.size();
|
}
|
|
@Override
|
public Object getItem(int position) {
|
return partOnePersonList.get(position);
|
}
|
|
@Override
|
public long getItemId(int position) {
|
return position;
|
}
|
|
@Override
|
public View getView(int position, View convertView, ViewGroup parent) {
|
ViewHolder viewHolder = null;
|
if (convertView == null) {
|
convertView = LayoutInflater.from(getContext()).inflate(R.layout.face_view_image, null);
|
viewHolder = new ViewHolder();
|
viewHolder.imageView = convertView.findViewById(R.id.face);
|
convertView.setTag(viewHolder);
|
} else {
|
viewHolder = (ViewHolder) convertView.getTag();
|
}
|
byte[] blob = partOnePersonList.get(position).getBlob("camera_image_path");
|
Bitmap bitmap = null;
|
if (blob != null) {
|
try {
|
byte[] data = blob;
|
if (data.length != 0) {
|
bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
bitmap = BitmapFactory.decodeResource(mainActivity().getResources(), R.drawable.u1280);
|
}
|
} else {
|
bitmap = BitmapFactory.decodeResource(mainActivity().getResources(), R.drawable.u1280);
|
}
|
viewHolder.imageView.setImageBitmap(bitmap);
|
return convertView;
|
}
|
|
class ViewHolder {
|
ImageView imageView;
|
}
|
}
|
|
private class PartTwoFaceAdapter extends BaseAdapter {
|
|
@Override
|
public int getCount() {
|
return partTwoPersonList == null ? 0 : partTwoPersonList.size();
|
}
|
|
@Override
|
public Object getItem(int position) {
|
return partTwoPersonList.get(position);
|
}
|
|
@Override
|
public long getItemId(int position) {
|
return position;
|
}
|
|
@Override
|
public View getView(int position, View convertView, ViewGroup parent) {
|
ViewHolder viewHolder = null;
|
if (convertView == null) {
|
convertView = LayoutInflater.from(getContext()).inflate(R.layout.face_view_image, null);
|
viewHolder = new ViewHolder();
|
viewHolder.imageView = convertView.findViewById(R.id.face);
|
convertView.setTag(viewHolder);
|
} else {
|
viewHolder = (ViewHolder) convertView.getTag();
|
}
|
byte[] blob = partTwoPersonList.get(position).getBlob("camera_image_path");
|
Bitmap bitmap = null;
|
if (blob != null) {
|
try {
|
byte[] data = blob;
|
if (data.length != 0) {
|
bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
bitmap = BitmapFactory.decodeResource(mainActivity().getResources(), R.drawable.u1280);
|
}
|
} else {
|
bitmap = BitmapFactory.decodeResource(mainActivity().getResources(), R.drawable.u1280);
|
}
|
viewHolder.imageView.setImageBitmap(bitmap);
|
return convertView;
|
}
|
|
class ViewHolder {
|
ImageView imageView;
|
}
|
}
|
|
}
|