package com.basic.security.fragment; import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Color; import android.os.Bundle; import android.os.SystemClock; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.MotionEvent; 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.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.PopupWindow; import android.widget.RadioButton; import android.widget.ScrollView; import android.widget.Spinner; import android.widget.TextView; import com.basic.security.base.BaseApplication; import com.basic.security.base.BaseFragment; import com.basic.security.manager.BaseSettingManager; import com.basic.security.manager.DeviceManager; import com.basic.security.manager.IdentityManager; import com.basic.security.manager.OrgManager; import com.basic.security.manager.PersonIdentityManager; import com.basic.security.manager.VisitManager; import com.basic.security.model.ModelAdapter; import com.basic.security.model.Org; import com.basic.security.model.Person; import com.basic.security.utils.Constants; import com.basic.security.utils.DateEditUtil1; import com.basic.security.utils.DateEditUtilForValidTime; import com.basic.security.utils.DateUtil; import com.basic.security.utils.RUtils; import com.basic.security.utils.ResolutionAdaptation; import com.basic.security.utils.ToastUtil; import com.basic.security.widget.MyTextView; import com.basic.security.widget.abslistview.CommonAdapter; import com.basic.security.widget.abslistview.ViewHolder; import com.basic.security.widget.hlistview.HListView; import org.androidannotations.annotations.AfterViews; import org.androidannotations.annotations.Click; import org.androidannotations.annotations.EFragment; import org.androidannotations.annotations.TextChange; import org.androidannotations.annotations.UiThread; import org.androidannotations.annotations.ViewById; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; @EFragment public class FaceDetailFragment extends BaseFragment { public static TreeAdapter treeAdapter = new TreeAdapter(true); @ViewById public MyTextView name; @ViewById public TextView phone, idcard_number, register_time, register_type, last_visit_time, org_id, student_id; @ViewById public EditText name_input, phone_input, idcard_number_input, student_id_input; @ViewById public ImageView face, face_detail_name_need, face_detail_phone_need, face_detail_id_need, show_name_in_put, show_phone_in_put, show_id_in_put, show_student_id_input; @ViewById public LinearLayout ll_id_card, ll_face_detail; @ViewById public Spinner spinner_sign_up_rule; @ViewById public ListView face_detail_org; @ViewById public View face_detail_org_parent; @ViewById public View org_id_parent; @ViewById public View org_id_row, student_id_row, sign_up_rule_field; @ViewById public ScrollView scrollView; public String verify_status = ""; public ModelAdapter person = null; public boolean showNameInPut = false; public boolean showStudentInput = false; public boolean showPhoneInPut = false; public boolean showIdCardInPut = false; // 点击头像在获取的头像与身份证上的头像转换 public int photoClickTimes = 0; public float downX = 0; public float moveX = 51; // 通行方式 public String[] arr = {"允许通行", "有效时间内通行", "确认通行", "拒绝通行"}; public boolean initSpinner = true; public boolean checkedTimeRuleChanged = false; public boolean isRegister = false; public ModelAdapter selectedOrg; public String initOrgId; @ViewById public TextView guest_visit_valid_time; @ViewById public View guest_visit_valid_time_row; @ViewById public View guest_visit_status_row; @ViewById public Spinner guest_visit_status; public String[] guestVisitStatusArray = {"访问中", "已离开"}; public String guestVisitStatus = guestVisitStatusArray[0]; @ViewById public HListView identity_list; @ViewById public Button save, tempSave, deletePerson, giveUpSave; @ViewById public RadioButton clusterDevices, thisDevice; @ViewById public View next; @ViewById public ListView cluster_devices; @ViewById public View cluster_devices_parent; public List identityList = new ArrayList<>(); public Map checkedIdentityMapByPerson = new HashMap<>(); public ModelAdapter checkedPerson = null; public IdentityAdapter identityAdapter; public ClusterDeviceAdapter clusterDeviceAdapter; public Set identityCheckBoxSet = new HashSet<>(); public long lastLoadIdentityListFromDB = 0; long org_idLastTime = 0; boolean orgLoaded = false; PopupWindow orgPopupWindow; SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm"); private long exitTime; private long validTime; @Click public void show_name_in_put() { if (person != null) { showNameInPut = true; name_input.setVisibility(View.VISIBLE); name.setVisibility(View.GONE); name_input.setText(person.getString("name") == null ? "" : person.getString("name")); } } @Click public void show_phone_in_put() { if (person != null) { showPhoneInPut = true; phone_input.setVisibility(View.VISIBLE); phone.setVisibility(View.GONE); phone_input.setText(person.getString("phone") == null ? "" : person.getString("phone")); } } @Click public void show_id_in_put() { if (person != null) { showIdCardInPut = true; idcard_number_input.setVisibility(View.VISIBLE); idcard_number.setVisibility(View.GONE); idcard_number_input.setText(person.getString("id_card_number") == null ? "" : person.getString("id_card_number")); } } @SuppressLint("ClickableViewAccessibility") @Click public void face() { face.setOnTouchListener((v, event) -> { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: downX = event.getX(); break; case MotionEvent.ACTION_MOVE: moveX = event.getX() - downX; break; case MotionEvent.ACTION_UP: break; } return false; }); if (!TextUtils.isEmpty(verify_status) && (TextUtils.equals(verify_status, "已经验证身份证") || TextUtils.equals(verify_status, "未验证身份证")) && Math.abs(moveX) > 50) { moveX = 0; photoClickTimes++; byte[] blob; try { if (photoClickTimes % 2 == 0) { blob = person.getBlob("camera_image_path"); } else { blob = person.getBlob("id_card_image_path"); } if (blob != null) { if (blob.length != 0) { Bitmap bitmap = BitmapFactory.decodeByteArray(blob, 0, blob.length); face.setImageBitmap(bitmap); } } } catch (Exception e) { e.printStackTrace(); } } } public void loadIdentityListFromDB() { BaseApplication.getApplication().executorService.execute(() -> { identityList.clear(); identityList.addAll(IdentityManager.findIdentityList()); SystemClock.sleep(100); showIdentityList(); }); } @UiThread public void showIdentityList() { identityAdapter.notifyDataSetChanged(); } @Click public void clusterDevices() { if (clusterDevices.isChecked()) { mainActivity().fragment_device_list_dialog.showDeviceListDialog(); } } public void loadClusterDeviceFromDb() { BaseApplication.getApplication().executorService.execute(() -> { clusterDeviceAdapter.deviceList.clear(); clusterDeviceAdapter.deviceList.addAll(DeviceManager.findList("select * from device")); showClusterDevices(); }); } @UiThread public void showClusterDevices() { clusterDeviceAdapter.notifyDataSetChanged(); } @Click public void thisDevice() { thisDevice.setChecked(true); } @UiThread public void setIsTempSave(boolean isTempSave) { if (save != null && tempSave != null) { boolean alwaysShowSave = mainActivity().currentFragment == mainActivity().fragment_person_manage && "已注册".equals(mainActivity().fragment_face_list.isRegister()); if (isTempSave && !alwaysShowSave) { save.setVisibility(View.GONE); tempSave.setVisibility(View.VISIBLE); } else { tempSave.setVisibility(View.GONE); save.setVisibility(View.VISIBLE); } } } @Click public void save() { savePerson(); FaceListFragment.treeAdapter.clearUI(); } public void savePerson() { mainActivity().fragment_person_manage.savePerson(); if (mainActivity().currentFragment != mainActivity().fragment_person_manage) { mainActivity().fragment_person_manage.selectedPerson(null); } else { ModelAdapter selectedPerson = mainActivity().fragment_person_manage.selectedPerson(); // System.out.println("FaceDetailFragment.savePerson name=" + selectedPerson.getString(Person.name) + " idcard=" + selectedPerson.getString(Person.id_card_number)); mainActivity().fragment_person_manage.selectedPerson(selectedPerson); } } @Click public void tempSave() { savePerson(); } @Click public void deletePerson() { mainActivity().fragment_person_manage.deletePerson(); FaceListFragment.treeAdapter.clearUI(); } @Click public void giveUpSave() { mainActivity().fragment_person_manage.giveUpSave(); } private void updateIdentityListUI(ModelAdapter person) { checkedPerson = person; if (checkedPerson == null) { checkThisDevice(); checkedIdentityMapByPerson.clear(); } else { setDevice(checkedPerson.getString("all_device")); checkedIdentityMapByPerson.clear(); checkedIdentityMapByPerson.putAll(PersonIdentityManager.findIdentityMapByPersonId(person.getString(Person.id))); } showIdentityList(); } @TextChange(RUtils.R_id_name_input) public void name_inputTextChanged() { name.setText(name_input.getText()); } @TextChange(RUtils.R_id_idcard_number_input) public void idcard_number_inputTextChanged() { idcard_number.setText(idcard_number_input.getText()); } @TextChange(RUtils.R_id_phone_input) public void phone_inputTextChanged() { phone.setText(phone_input.getText()); } @TextChange(RUtils.R_id_student_id_input) public void student_id_inputTextChanged() { student_id.setText(student_id_input.getText()); } @UiThread public void checkThisDevice() { thisDevice.setChecked(true); } @UiThread public void setDevice(String all_device) {// 1 所有设备 0 当前设备 if ("1".equals(all_device)) { clusterDevices.setChecked(true); } else { thisDevice.setChecked(true); } } /** * 保存人员信息时,如果checkedIdentityMapByPerson为null时返回FALSE会影响其他逻辑 * 所以写了一个checkedIdentityMapByPerson.keySet().size()方法 */ public boolean savePersonIdentity(String personId) { List 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; } if (mainActivity().currentFragment == mainActivity().fragment_su_auto_ic_compare_success || mainActivity().currentFragment == mainActivity().fragment_su_auto_nic_wait_detail || mainActivity().currentFragment == mainActivity().fragment_sign_up_success || mainActivity().currentFragment == mainActivity().fragment_su_auto_ic_wait_idcard || mainActivity().currentFragment == mainActivity().fragment_su_auto_wait_face ) { checkedIdentityMapByPerson.clear(); String id = BaseSettingManager.getDefaultIdentityId(); if (id != null) { if (IdentityManager.findIdentityById(id) == null) { ToastUtil.show("自助注册默认身份出错,请联系管理员"); } else { checkedIdentityMapByPerson.put(id, IdentityManager.findIdentityById(id)); } } } Map 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; } @Click public void next() { int position = identity_list.getFirstVisiblePosition(); if (position + 2 > identityList.size()) { position = identityList.size(); } else { position += 2; } identity_list.setSelection(position); } public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(ResolutionAdaptation.fragment_face_detail(), container, false); } public void show() { super.show(); selectedOrg = null; if (System.currentTimeMillis() - lastLoadIdentityListFromDB > 5 * 1000) { lastLoadIdentityListFromDB = System.currentTimeMillis(); loadIdentityListFromDB(); } if (mainActivity().currentFragment == mainActivity().fragment_su_logged_ic_wait_face) { deletePerson.setVisibility(View.VISIBLE); } if (mainActivity().currentFragment == mainActivity().fragment_su_logged_ic_compare_success) { deletePerson.setVisibility(View.VISIBLE); } if (mainActivity().currentFragment == mainActivity().fragment_su_logged_ic_wait_idcard) { deletePerson.setVisibility(View.VISIBLE); } } @Click public void guest_visit_valid_time() { if (validTime == 0) { validTime = System.currentTimeMillis(); } try { validTime = sdf.parse(guest_visit_valid_time.getText().toString()).getTime(); } catch (Exception e) { e.printStackTrace(); } ; DateEditUtilForValidTime.selectTime(validTime, validTime, false, (start_time, end_time) -> { validTime = start_time; guest_visit_valid_time.setText(getDateString(validTime)); }, true); } public String getDateString(long time) { return DateUtil.formatTime(time, "yyyy/MM/dd HH:mm"); } @Click public void org_id() { if (System.currentTimeMillis() - org_idLastTime < 1000 || face_detail_org_parent.getVisibility() == View.VISIBLE) { return; } org_idLastTime = System.currentTimeMillis(); int[] outLocation = new int[2]; org_id.getLocationOnScreen(outLocation); orgPopupWindow.showAsDropDown(org_id); orgLoaded = true; org_id_background(); } public void org_id_background() { BaseApplication.getApplication().executorService.execute(() -> { treeAdapter.findTreeNodeList(false); treeAdapter.setUI(initOrgId); if (!TextUtils.isEmpty(initOrgId)) { treeAdapter.treeNodeList.setUISelected(OrgManager.findById(Org.tableName, initOrgId)); } notifyOrg(initOrgId); }); } @UiThread public void notifyOrg(String initOrgId) { if (!TextUtils.isEmpty(initOrgId)) { try { face_detail_org.setSelection(treeAdapter.treeNodeList.getSelection(initOrgId)); } catch (Exception e) { e.printStackTrace(); } } } public void showPersonListByOrg(ModelAdapter org) { orgPopupWindow.dismiss(); face_detail_org_parent.setVisibility(View.GONE); selectedOrg = org; org_id.setText(OrgManager.getOrgFullName(selectedOrg.getString(Org.id))); treeAdapter.selectedOrg = null; } public void hideOrgParent() { orgPopupWindow.dismiss(); face_detail_org_parent.setVisibility(View.GONE); } @AfterViews public void afterViews() { face_detail_org.setAdapter(treeAdapter); treeAdapter.setOrgSelectedListener(this::showPersonListByOrg); if (orgPopupWindow == null) { LayoutInflater layoutInflater = (LayoutInflater) mainActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE); View customView = layoutInflater.inflate(com.basic.security.utils.ResolutionAdaptation.popup(), null); ListView face_detail_popup_org = customView.findViewById(com.basic.security.utils.RUtils.R_id_face_detail_popup_org); View cancel = customView.findViewById(com.basic.security.utils.RUtils.R_id_cancel); cancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { orgPopupWindow.dismiss(); } }); face_detail_popup_org.setAdapter(treeAdapter); orgPopupWindow = new PopupWindow(customView, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); } ArrayAdapter guestVisitAdapter = new ArrayAdapter(getContext(), com.basic.security.utils.ResolutionAdaptation.spinner_item_small_text(), guestVisitStatusArray); guest_visit_status.setPopupBackgroundResource(com.basic.security.utils.RUtils.R_color_press_menu_text); guest_visit_status.setAdapter(guestVisitAdapter); guest_visit_status.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { public void onItemSelected(AdapterView parent, View view, int position, long id) { guestVisitStatus = guestVisitStatusArray[position]; } public void onNothingSelected(AdapterView parent) { } }); setIsTempSave(true); thisDevice.setChecked(true); identityAdapter = new IdentityAdapter(mainActivity(), com.basic.security.utils.ResolutionAdaptation.identity_checkbox_item(), identityList); identity_list.setAdapter(identityAdapter); clusterDeviceAdapter = new ClusterDeviceAdapter(); cluster_devices.setAdapter(clusterDeviceAdapter); } @Click public void show_student_id_input() { student_id.setVisibility(View.GONE); student_id_input.setVisibility(View.VISIBLE); } private void updateDetailUI(ModelAdapter person) { mainActivity().runOnUiThread(() -> { try { scrollView.fullScroll(ScrollView.FOCUS_UP); initOrgId = null; selectedOrg = null; guest_visit_valid_time_row.setVisibility(View.GONE); guest_visit_status_row.setVisibility(View.GONE); student_id_input.setVisibility(View.GONE); student_id_input.setText(""); student_id.setText(""); name.setText(""); name_input.setText(""); idcard_number.setText(""); idcard_number_input.setText(""); phone.setText(""); phone_input.setText(""); guest_visit_valid_time.setText(""); if (person != null) { setViewVisisble(person); if ("访客注册".equals(person.getString(Person.sign_up_method))) { guest_visit_valid_time_row.setVisibility(View.VISIBLE); guest_visit_valid_time.setText(""); try { guest_visit_valid_time.setText(getDateString(Long.parseLong(person.getString(Person.guest_visit_valid_time)))); } catch (Exception e) { e.printStackTrace(); } } } FaceDetailFragment.this.person = person; show_phone_in_put.setVisibility(View.GONE); show_id_in_put.setVisibility(View.GONE); idcard_number.setTextColor(Color.parseColor("#FFFFFFFF")); photoClickTimes = 0; initSignUpRuleSpinner(person); if (Constants.useOrg) { student_id_row.setVisibility(View.VISIBLE); org_id_row.setVisibility(View.VISIBLE); } if (person != null && "访客注册".equals(person.getString(Person.sign_up_method))) { student_id_row.setVisibility(View.GONE); org_id_row.setVisibility(View.GONE); if (!"已经验证身份证".equals(person.getString(Person.verify_status))) { show_name_in_put.setVisibility(View.VISIBLE); show_id_in_put.setVisibility(View.VISIBLE); } show_phone_in_put.setVisibility(View.VISIBLE); } if (person == null) { sign_up_rule_field.setVisibility(View.INVISIBLE); last_visit_time.setVisibility(View.INVISIBLE); } else { sign_up_rule_field.setVisibility(View.VISIBLE); last_visit_time.setVisibility(View.VISIBLE); } if (person == null) { face.setVisibility(View.GONE); name.setText1(""); phone.setText(""); idcard_number.setText(""); register_time.setText(""); register_type.setText(""); last_visit_time.setText(""); last_visit_time.setText("暂无"); org_id.setVisibility(View.GONE); org_id_parent.setVisibility(View.GONE); student_id.setVisibility(View.GONE); show_student_id_input.setVisibility(View.GONE); phone_input.setVisibility(View.GONE); phone.setVisibility(View.GONE); name_input.setVisibility(View.GONE); name.setVisibility(View.GONE); idcard_number_input.setVisibility(View.GONE); idcard_number.setVisibility(View.GONE); if (mainActivity().currentFragment == mainActivity().fragment_su_logged_ic_compare_success || mainActivity().currentFragment == mainActivity().fragment_su_logged_ic_wait_face || mainActivity().currentFragment == mainActivity().fragment_su_logged_ic_wait_idcard || mainActivity().currentFragment == mainActivity().fragment_su_logged_nic_wait_detail || mainActivity().currentFragment == mainActivity().fragment_su_logged_nic_wait_face || mainActivity().currentFragment == mainActivity().fragment_person_manage || mainActivity().currentFragment == mainActivity().fragment_su_logged_ic_wait_idcard) { if (BaseSettingManager.isAutoSignUpMode()) { String signUpRule = BaseSettingManager.getDefaultRegisterRule(); if (!TextUtils.isEmpty(signUpRule)) { for (int i = 0; i < arr.length; i++) { String item = arr[i]; if (item.equals(signUpRule)) { spinner_sign_up_rule.setSelection(i); break; } } } } } } else if ("1".equals(person.getString("auto_init"))) { student_id.setVisibility(View.GONE); student_id_input.setVisibility(View.GONE); show_student_id_input.setVisibility(View.GONE); face.setVisibility(View.VISIBLE); name_input.setVisibility(View.GONE); name.setVisibility(View.VISIBLE); phone_input.setVisibility(View.GONE); phone.setVisibility(View.VISIBLE); ll_id_card.setVisibility(View.VISIBLE); idcard_number_input.setVisibility(View.GONE); name.setText1(person.getString("name")); phone.setText(person.getString("phone")); idcard_number.setText(person.getString("id_card_number")); register_type.setText(person.getString("sign_up_method")); String lastTime = VisitManager.getLastVisitTime(person.getId()); if (TextUtils.isEmpty(lastTime)) { last_visit_time.setText("暂无"); } else { last_visit_time.setText(DateUtil.formatTime(Long.parseLong(lastTime), "yyyy-MM-dd HH:mm:ss")); } } else { verify_status = person.getString("verify_status"); org_id.setVisibility(View.VISIBLE); org_id_parent.setVisibility(View.VISIBLE); org_id.setText(OrgManager.getOrgFullName(person.getString(Person.org_id))); initOrgId = person.getString(Person.org_id); String studentIdStr = person.getString(Person.student_id); student_id_input.setText(studentIdStr); student_id.setText(studentIdStr); if (TextUtils.isEmpty(studentIdStr)) { student_id.setVisibility(View.GONE); student_id_input.setVisibility(View.VISIBLE); show_student_id_input.setVisibility(View.GONE); } else { student_id.setVisibility(View.VISIBLE); student_id_input.setVisibility(View.GONE); show_student_id_input.setVisibility(View.VISIBLE); } name_input.setVisibility(View.GONE); name.setVisibility(View.VISIBLE); phone_input.setVisibility(View.GONE); phone.setVisibility(View.VISIBLE); idcard_number_input.setVisibility(View.GONE); idcard_number.setVisibility(View.VISIBLE); ll_id_card.setVisibility(View.VISIBLE); name.setText1(person.getString("name") == null ? "" : person.getString("name")); phone.setText(person.getString("phone") == null ? "" : person.getString("phone")); idcard_number.setText(person.getString("id_card_number") == null ? "" : person.getString("id_card_number")); if (!TextUtils.isEmpty(verify_status) && ((TextUtils.equals(verify_status, "已经验证身份证") || TextUtils.equals(verify_status, "未验证身份证")))) { showTextOrEditText(verify_status); if (TextUtils.equals(verify_status, "未验证身份证")) { idcard_number.setText("请在刷卡区验证身份证"); idcard_number.setTextColor(Color.parseColor("#4BA6AD")); } } if (!TextUtils.isEmpty(verify_status) && TextUtils.equals(verify_status, "不需要验证身份证")) { showTextOrEditText(verify_status); } face.setVisibility(View.VISIBLE); try { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Long sign_up_time = Long.parseLong(person.getString("sign_up_time")); if (sign_up_time != null) { register_time.setText(format.format(sign_up_time)); } } catch (Exception e) { e.printStackTrace(); } String type = person.getString("sign_up_method"); if ("自助注册".equals(type)) { if ("不需要验证身份证".equals(person.getString("verify_status"))) { type = type + "-普通验证"; } else { type = type + "-身份证验证"; } } else if ("人工注册".equals(type)) { if ("不需要验证身份证".equals(person.getString("verify_status"))) { type = "人工注册-普通验证"; } else { type = "人工注册-身份证验证"; } } register_type.setText(type); String lastTime = VisitManager.getLastVisitTime(person.getId()); if (TextUtils.isEmpty(lastTime)) { last_visit_time.setText("暂无"); } else { last_visit_time.setText(DateUtil.formatTime(Long.parseLong(lastTime), "yyyy-MM-dd HH:mm:ss")); } } name_input.setVisibility(View.GONE); idcard_number_input.setVisibility(View.GONE); phone_input.setVisibility(View.GONE); show_name_in_put.setVisibility(View.GONE); show_id_in_put.setVisibility(View.GONE); if (person != null) { show_name_in_put.setVisibility(View.VISIBLE); show_id_in_put.setVisibility(View.VISIBLE); show_phone_in_put.setVisibility(View.VISIBLE); } if (person != null && "已经验证身份证".equals(person.getString(Person.verify_status))) { show_name_in_put.setVisibility(View.GONE); show_id_in_put.setVisibility(View.GONE); } if (person == null) { show_name_in_put.setVisibility(View.GONE); show_id_in_put.setVisibility(View.GONE); show_phone_in_put.setVisibility(View.GONE); name_input.setVisibility(View.GONE); idcard_number_input.setVisibility(View.GONE); phone_input.setVisibility(View.GONE); } if (person != null) { byte[] blob = person.getBlob("camera_image_path"); if (blob != null) { if (blob.length != 0) { Bitmap bitmap = BitmapFactory.decodeByteArray(blob, 0, blob.length); face.setImageBitmap(bitmap); } } else { face.setImageResource(com.basic.security.utils.RUtils.R_drawable_u1280); } name.setText(person.getString(Person.name)); name_input.setText(person.getString(Person.name)); idcard_number.setText(person.getString(Person.id_card_number)); idcard_number_input.setText(person.getString(Person.id_card_number)); phone.setText(person.getString(Person.phone)); phone_input.setText(person.getString(Person.phone)); if (!TextUtils.isEmpty(person.getString(Person.name))) { name.setVisibility(View.VISIBLE); name_input.setVisibility(View.GONE); } if (!TextUtils.isEmpty(person.getString(Person.id_card_number))) { idcard_number.setVisibility(View.VISIBLE); idcard_number_input.setVisibility(View.GONE); } if (!TextUtils.isEmpty(person.getString(Person.phone))) { phone.setVisibility(View.VISIBLE); phone_input.setVisibility(View.GONE); } } if (person != null // && Constants.TRUE.equals(person.getString(Model.newModel)) ) { if (!"未验证身份证".equals(person.getString("verify_status"))) { if (name_input.getText().toString().length() == 0) { name_input.setVisibility(View.VISIBLE); } if (idcard_number_input.getText().toString().length() == 0) { idcard_number_input.setVisibility(View.VISIBLE); } } if (phone_input.getText().toString().length() == 0) { phone_input.setVisibility(View.VISIBLE); } } if (name_input.getVisibility() == View.VISIBLE) { name.setVisibility(View.GONE); } if (idcard_number_input.getVisibility() == View.VISIBLE) { idcard_number.setVisibility(View.GONE); } if (person != null && "未验证身份证".equals(person.getString(Person.verify_status))) { idcard_number.setText("请在刷卡区验证身份证"); idcard_number.setTextColor(Color.parseColor("#4BA6AD")); show_name_in_put.setVisibility(View.GONE); show_id_in_put.setVisibility(View.GONE); } } catch (Exception e) { e.printStackTrace(); } }); } private void initSignUpRuleSpinner(ModelAdapter person) { initSpinner = true; ArrayAdapter adapter = new ArrayAdapter(getContext(), com.basic.security.utils.ResolutionAdaptation.spinner_item(), arr); spinner_sign_up_rule.setPopupBackgroundResource(com.basic.security.utils.RUtils.R_color_press_menu_text); spinner_sign_up_rule.setAdapter(adapter); spinner_sign_up_rule.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { public void onItemSelected(AdapterView parent, View view, int position, long id) { if (position == 1 && !initSpinner) { if (person != null) { mainActivity().fragment_time_rule_list_dialog .showTimeRuleListDialog(person.getString("checked_time_rule_id"), selectedTimeRuleId -> { } ); } checkedTimeRuleChanged = true; } initSpinner = false; } public void onNothingSelected(AdapterView parent) { } }); if (person != null) { String signUpRule = person.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_sign_up_rule.setSelection(i); break; } } } } } private void showTextOrEditText(String verify_status) { if (!TextUtils.isEmpty(verify_status) && TextUtils.equals(verify_status, "不需要验证身份证")) { if (TextUtils.isEmpty(person.getString("name"))) { showNameInPut = true; name_input.setVisibility(View.VISIBLE); name.setVisibility(View.GONE); } else { showNameInPut = false; name_input.setVisibility(View.GONE); name.setVisibility(View.VISIBLE); // name.setText1(person.getString("name")); show_name_in_put.setVisibility(View.VISIBLE); } if (TextUtils.isEmpty(person.getString("id_card_number"))) { showIdCardInPut = true; idcard_number_input.setVisibility(View.VISIBLE); idcard_number.setVisibility(View.GONE); } else { showIdCardInPut = false; idcard_number_input.setVisibility(View.GONE); idcard_number.setVisibility(View.VISIBLE); idcard_number.setText(person.getString("id_card_number")); show_id_in_put.setVisibility(View.VISIBLE); } } if (TextUtils.isEmpty(person.getString("phone"))) { showPhoneInPut = true; phone_input.setVisibility(View.VISIBLE); phone.setVisibility(View.GONE); } else { phone_input.setVisibility(View.GONE); showPhoneInPut = false; phone.setVisibility(View.VISIBLE); phone.setText(person.getString("phone")); show_phone_in_put.setVisibility(View.VISIBLE); } } @UiThread public void clearInPutText() { name_input.setText(""); phone_input.setText(""); idcard_number_input.setText(""); student_id.setText(""); student_id_input.setText(""); showStudentInput = false; showNameInPut = false; showPhoneInPut = false; showIdCardInPut = false; } @UiThread public void updateIdCard() { if (idCard != null) { name.setText1(idCard.name); name_input.setText(idCard.name); idcard_number.setVisibility(View.VISIBLE); idcard_number_input.setText(idCard.cardNumber); idcard_number.setText(idCard.cardNumber); idcard_number.setTextColor(Color.WHITE); name.setVisibility(View.VISIBLE); saveIdCard(person); } } public boolean detailMessageIsComplete() { ModelAdapter person = mainActivity().fragment_person_manage.selectedPerson(); if (person != null) { String name = person.getString("name"); String id_card_number = person.getString("id_card_number"); String phone_number = person.getString("phone"); String sign_up_method = person.getString("sign_up_method"); isRegister = "已注册".equals(person.getString("sign_up_status")); if ("自助注册".equals(sign_up_method)) { if ("不需要验证身份证".equals(person.getString("verify_status"))) { if (BaseSettingManager.isAutoSignUpNotIDCardModeNeedName()) { if (TextUtils.isEmpty(name)) { if (isRegister) { ToastUtil.show("姓名不能为空"); } return false; } } if (BaseSettingManager.isAutoSignUpNotIDCardModeNeedIDNumber()) { if (TextUtils.isEmpty(id_card_number)) { if (isRegister) { ToastUtil.show("身份证号不能为空"); } return false; } } if (BaseSettingManager.isAutoSignUpNotIDCardModeNeedPhone()) { if (TextUtils.isEmpty(phone_number)) { ToastUtil.show("手机号不能为空"); return false; } } } else { if (BaseSettingManager.isAutoSignUpIDCardModeNeedPhone()) { if (TextUtils.isEmpty(phone_number)) { if (isRegister) { ToastUtil.show("手机号不能为空"); } return false; } } } } if ("人工注册".equals(sign_up_method)) { if ("不需要验证身份证".equals(person.getString("verify_status"))) { if (BaseSettingManager.adminNormalSignUpModeNeedName()) { if (TextUtils.isEmpty(name)) { if (isRegister) { ToastUtil.show("姓名不能为空"); } return false; } } if (BaseSettingManager.adminNormalSignUpModeNeedIDNumber()) { if (TextUtils.isEmpty(id_card_number)) { if (isRegister) { ToastUtil.show("身份证号不能为空"); } return false; } } if (BaseSettingManager.adminNormalSignUpModeNeedPhone()) { if (TextUtils.isEmpty(phone_number)) { if (isRegister) { ToastUtil.show("手机号不能为空"); } return false; } } } else { if (BaseSettingManager.adminIDCardSignUpModeNeedPhone()) { if (TextUtils.isEmpty(phone_number)) { if (isRegister) { ToastUtil.show("手机号不能为空"); } return false; } } if (BaseSettingManager.isAdminAuthSignUpModeNeedIdCard()) { if (TextUtils.isEmpty(id_card_number)) { if (isRegister) { ToastUtil.show("身份证号不能为空"); } return false; } } } } } return true; } public String getInPutName() { String nameTextStr = name.getText().toString(); String nameInputStr = name_input.getText().toString(); if (nameInputStr.length() == 0) { return nameTextStr; } else { return nameInputStr; } } public String getInPutIdCardNumber() { String nameInputStr = idcard_number_input.getText().toString(); return nameInputStr; } public String getInPutPhoneNumber() { return phone_input.getText().toString().trim(); } public void nameRequired(boolean required) { if (required) { // System1.out.println("FaceDetailFragment.nameRequired " + FrameUtil.getFrames() + " " + required); face_detail_name_need.setVisibility(View.VISIBLE); } else { face_detail_name_need.setVisibility(View.INVISIBLE); } } public void phoneRequired(boolean required) { if (required) { face_detail_phone_need.setVisibility(View.VISIBLE); } else { face_detail_phone_need.setVisibility(View.INVISIBLE); } } public void idcardRequired(boolean required) { if (required) { face_detail_id_need.setVisibility(View.VISIBLE); } else { face_detail_id_need.setVisibility(View.INVISIBLE); } } public String getSignUpRule() { return arr[spinner_sign_up_rule.getSelectedItemPosition()]; } public String getCheckedTimeRuleId() { if (arr[1].equals(arr[spinner_sign_up_rule.getSelectedItemPosition()]) && checkedTimeRuleChanged) { return TimeRuleListDialogFragment.checkedTimeRuleId; } else { return person.getString("sign_up_rule"); } } public void setViewVisisble(ModelAdapter person) { if (person == null || "系统初始化分配".equals(person.getString("sign_up_method"))) { phoneRequired(false); nameRequired(false); idcardRequired(false); } else { if ("人工注册".equals(person.getString("sign_up_method"))) { if ("已经验证身份证".equals(person.getString("verify_status")) || "未验证身份证".equals(person.getString("verify_status"))) { phoneRequired(BaseSettingManager.adminIDCardSignUpModeNeedPhone()); nameRequired(false); idcardRequired(false); } if ("不需要验证身份证".equals(person.getString("verify_status"))) { nameRequired(BaseSettingManager.adminNormalSignUpModeNeedName()); idcardRequired(BaseSettingManager.adminNormalSignUpModeNeedIDNumber()); phoneRequired(BaseSettingManager.adminNormalSignUpModeNeedPhone()); } } if ("自助注册".equals(person.getString("sign_up_method"))) { if ("已经验证身份证".equals(person.getString("verify_status")) || "未验证身份证".equals(person.getString("verify_status"))) { phoneRequired(BaseSettingManager.isAutoSignUpIDCardModeNeedPhone()); nameRequired(false); idcardRequired(false); } if ("不需要验证身份证".equals(person.getString("verify_status"))) { nameRequired(BaseSettingManager.isAutoSignUpNotIDCardModeNeedName()); idcardRequired(BaseSettingManager.isAutoSignUpNotIDCardModeNeedIDNumber()); phoneRequired(BaseSettingManager.isAutoSignUpNotIDCardModeNeedPhone()); } } } } public String getInputStudentId() { return student_id_input.getText().toString().trim(); } public String getGuestVisitValid() { try { String guest_visit_valid_timeStr = guest_visit_valid_time.getText().toString(); if (!TextUtils.isEmpty(guest_visit_valid_timeStr)) { return DateEditUtil1.sdf.parse(guest_visit_valid_timeStr).getTime() + ""; } } catch (Exception e) { e.printStackTrace(); System.out.println("FaceDetailFragment.getGuestVisitValid Error:" + e.getMessage()); } return ""; } @UiThread public void emptyInput() { try { student_id.setText(""); student_id_input.setText(""); } catch (Exception e) { e.printStackTrace(); } } public void showPersonDetail(ModelAdapter selectedPerson) { updateDetailUI(selectedPerson); updateIdentityListUI(selectedPerson); } public class IdentityAdapter extends CommonAdapter { public IdentityAdapter(Context context, int layoutId, List datas) { super(context, layoutId, datas); } protected void convert(ViewHolder viewHolder, ModelAdapter identity, int position) { CheckBox identityCB = viewHolder.getView(com.basic.security.utils.RUtils.R_id_identity_checkbox); identityCheckBoxSet.add(identityCB); identityCB.setText(identity.getString("name")); identityCB.setTag(identity); identityCB.setChecked(checkedIdentityMapByPerson.containsKey(identity.getId())); identityCB.setClickable(true); if (checkedPerson != null && "1".equals(checkedPerson.getString("auto_init"))) { identityCB.setClickable(false); } else { identityCB.setClickable(true); identityCB.setOnCheckedChangeListener((buttonView, isChecked) -> { if (isChecked) { if (!checkedIdentityMapByPerson.containsKey(identity.getId())) { checkedIdentityMapByPerson.put(identity.getId(), identity); } } else { if (checkedIdentityMapByPerson.containsKey(identity.getId())) { checkedIdentityMapByPerson.remove(identity.getId()); } } identityAdapter.notifyDataSetChanged(); }); } } } public class ClusterDeviceAdapter extends BaseAdapter { public List checkedDeviceList = new ArrayList<>(); private List deviceList = new ArrayList<>(); public ClusterDeviceAdapter() { } public int getCount() { return deviceList == null ? 0 : deviceList.size(); } public Object getItem(int position) { return deviceList.get(position); } public long getItemId(int position) { return position; } public View getView(int position, View convertView, ViewGroup parent) { ClusterDeviceAdapter.ViewHolder viewHolder; if (convertView == null) { viewHolder = new ClusterDeviceAdapter.ViewHolder(); convertView = LayoutInflater.from(getActivity()).inflate(com.basic.security.utils.ResolutionAdaptation.checkbox_spinner_item(), null); viewHolder.checkBox = convertView.findViewById(com.basic.security.utils.RUtils.R_id_ck_item_spinner); viewHolder.spinner = convertView.findViewById(com.basic.security.utils.RUtils.R_id_spinner_item_spinner); initSpinner(viewHolder.spinner); convertView.setTag(viewHolder); } else { viewHolder = (ClusterDeviceAdapter.ViewHolder) convertView.getTag(); } viewHolder.checkBox.setText(deviceList.get(position).getString("name")); checkedDeviceList.add(deviceList.get(position).getString("name")); ClusterDeviceAdapter.ViewHolder finalViewHolder = viewHolder; viewHolder.checkBox.setOnCheckedChangeListener((buttonView, isChecked) -> { if (finalViewHolder.checkBox.isChecked()) { checkedDeviceList.add(deviceList.get(position).getString("name")); } else { if (checkedDeviceList.contains(deviceList.get(position).getString("name"))) { checkedDeviceList.remove(deviceList.get(position).getString("name")); } } }); return convertView; } private void initSpinner(Spinner spinner) { String[] signUpRuleArray = {"允许通行", "有效时间内通行", "确认通行", "拒绝通行"}; ArrayAdapter adapter = new ArrayAdapter(getContext(), com.basic.security.utils.ResolutionAdaptation.spinner_item(), signUpRuleArray); spinner.setPopupBackgroundResource(com.basic.security.utils.RUtils.R_color_press_menu_text); spinner.setAdapter(adapter); spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { public void onItemSelected(AdapterView parent, View view, int position, long id) { } public void onNothingSelected(AdapterView parent) { } }); } class ViewHolder { CheckBox checkBox; Spinner spinner; } } }