package com.basic.security.fragment;
|
|
import android.graphics.Bitmap;
|
import android.graphics.BitmapFactory;
|
import android.os.Bundle;
|
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.EditText;
|
import android.widget.GridView;
|
import android.widget.ImageView;
|
import android.widget.RelativeLayout;
|
import android.widget.Spinner;
|
import android.widget.TextView;
|
|
import com.basic.security.base.BaseFragment;
|
import com.basic.security.manager.BusinessPersonManager;
|
import com.basic.security.manager.IdentityManager;
|
import com.basic.security.manager.PersonManager;
|
import com.basic.security.manager.RuleManager;
|
import com.basic.security.model.ModelAdapter;
|
import com.basic.security.utils.DateUtil;
|
import com.basic.security.utils.ResolutionAdaptation;
|
import com.basic.security.utils.ToastUtil;
|
|
import org.androidannotations.annotations.Click;
|
import org.androidannotations.annotations.EFragment;
|
import org.androidannotations.annotations.ViewById;
|
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* 业务表管理的人
|
*/
|
@EFragment
|
public class BusinessPersonFragment extends BaseFragment {
|
@ViewById
|
Spinner spinner, spinner_pass_model;
|
@ViewById
|
TextView tv_name, tv_pass_model_name, tv_identity_name, tv_business_table_name, tv_business_table_time;
|
@ViewById
|
EditText search_text;
|
@ViewById
|
ImageView icon_search;
|
@ViewById
|
GridView gv_all_face_list, gv_business_person;
|
@ViewById
|
Button btn_business_save, btn_business_delete;
|
Map<String, ModelAdapter> checkedIdentityMap = new HashMap<>();
|
private List<ModelAdapter> personList = new ArrayList<>();
|
private List<ModelAdapter> checkedPersonList = new ArrayList<>();
|
private int clickTemp = -1;
|
private int checkedClickTemp = -1;
|
private AllFaceGridViewAdapter allFaceGridViewAdapter;
|
private CheckedGridViewAdapter checkedPersonAdapter;
|
private ModelAdapter business;
|
private String passModel = "有效时间内通行";
|
private List<String> personIdList = new ArrayList<>();
|
|
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
return inflater.inflate(ResolutionAdaptation.fragment_business_person(), container, false);
|
}
|
|
@Click
|
void btn_business_delete() {
|
if (checkedPersonList.size() != 0 && checkedClickTemp != -1) {
|
try {
|
BusinessPersonManager.deleteBusinessPerson(checkedPersonList.get(checkedClickTemp).getId(), business.getId());
|
checkedPersonList.remove(checkedClickTemp);
|
checkedPersonAdapter.notifyDataSetChanged();
|
ToastUtil.show("人员删除成功");
|
checkedClickTemp = -1;
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
|
@Click
|
void btn_business_save() { // 保存单个人员的通行规则
|
if (checkedClickTemp != -1 && checkedPersonList.size() > checkedClickTemp) {
|
BusinessPersonManager.savePersonToBusiness(checkedPersonList.get(checkedClickTemp).getId(), business.getId(), passModel);
|
ToastUtil.show("保存成功");
|
}
|
}
|
|
@Click
|
void icon_search() { // 根据条件在所有人中查询
|
String search_text = this.search_text.getText().toString().trim();
|
if (!TextUtils.isEmpty(search_text)) {
|
personList = BusinessPersonManager.getPersonFromMessage(personList, search_text);
|
allFaceGridViewAdapter.notifyDataSetChanged();
|
}
|
}
|
|
public void BusinessPersonData(ModelAdapter business) {
|
this.business = business;
|
}
|
|
public void show() {
|
super.show();
|
// 上半部分所有人员
|
initIdentity();
|
initAllPersonGridView();
|
// 下半部分业务表中人员
|
initBusinessTitle();
|
initCheckedPersonGridView();
|
initPassModel();
|
}
|
|
public void hide() {
|
super.hide();
|
checkedPersonList.clear();
|
clickTemp = -1;
|
checkedClickTemp = -1;
|
}
|
|
private void initBusinessTitle() {
|
if (business != null) {
|
tv_business_table_name.setText(business.getString("business_name"));
|
// 仅允许
|
if ("1".equals(business.getString("only_allow"))) {
|
String start_time = DateUtil.formatTime(Long.parseLong(business.getString("only_allow_start")), "yyyy/MM/dd HH:mm");
|
String end_time = DateUtil.formatTime(Long.parseLong(business.getString("only_allow_end")), "yyyy/MM/dd HH:mm");
|
tv_business_table_time.setText(start_time + " — " + end_time);
|
} else if ("1".equals(business.getString("choose_from_time_rule"))) { // 从时间规则中选取的时间段(暂没处理)
|
tv_business_table_time.setText(business.getString("checkedTimeRule"));
|
} else {
|
tv_business_table_time.setText("————");
|
}
|
}
|
}
|
|
private void initPassModel() {
|
String[] arr = {"有效时间内通行", "确认通行"};
|
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getContext(), com.basic.security.utils.ResolutionAdaptation.spinner_item(), arr);
|
spinner_pass_model.setAdapter(adapter);
|
spinner_pass_model.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
|
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
passModel = arr[position];
|
}
|
|
public void onNothingSelected(AdapterView<?> parent) {
|
}
|
});
|
}
|
|
private void initIdentity() {
|
List<ModelAdapter> ruleList = IdentityManager.findIdentityList();
|
SpinnerAdapter spinnerAdapter = new SpinnerAdapter(ruleList);
|
spinner.setPopupBackgroundResource(com.basic.security.utils.RUtils.R_color_press_menu_text);
|
spinner.setAdapter(spinnerAdapter);
|
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
|
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
// 根据选中的身份显示人( 获取含有特定身份的所有人员)
|
personList = PersonManager.getPersonList("已注册");
|
if (position != 0) {
|
checkedIdentityMap.clear();
|
checkedIdentityMap.put(ruleList.get(position - 1).getId(), ruleList.get(position - 1));
|
personList = PersonManager.getIdentityPersonList(personList, checkedIdentityMap);
|
}
|
setAllPersonAdapter();
|
}
|
|
public void onNothingSelected(AdapterView<?> parent) {
|
}
|
});
|
}
|
|
private void initAllPersonGridView() {
|
personList = PersonManager.getPersonList("已注册");
|
allFaceGridViewAdapter = new AllFaceGridViewAdapter();
|
setAllPersonAdapter();
|
}
|
|
private void setAllPersonAdapter() {
|
gv_all_face_list.setAdapter(allFaceGridViewAdapter);
|
gv_all_face_list.setOnItemClickListener((parent, view, position, id) -> {
|
setDefaultOrSelectedPerson(position);
|
personIdList.clear();
|
for (ModelAdapter person : checkedPersonList) {
|
personIdList.add(person.getId());
|
}
|
if (!personIdList.contains(personList.get(position).getId())) {
|
checkedPersonList.add(personList.get(position));
|
savePersonToBusiness(personList.get(position));
|
checkedPersonAdapter.notifyDataSetChanged();
|
ToastUtil.show("人员添加成功");
|
}
|
});
|
}
|
|
// 存储选中的人员
|
private void savePersonToBusiness(ModelAdapter person) {
|
passModel = "有效时间内通行";
|
BusinessPersonManager.savePersonToBusiness(person.getId(), business.getId(), passModel);
|
}
|
|
private void initCheckedPersonGridView() {
|
// 首先获取此业务表中的人员信息
|
checkedPersonList.clear();
|
if (business == null) {
|
return;
|
}
|
checkedPersonList = BusinessPersonManager.getPersonFromBusiness(business.getId());
|
checkedPersonAdapter = new CheckedGridViewAdapter();
|
gv_business_person.setAdapter(checkedPersonAdapter);
|
gv_business_person.setOnItemClickListener((parent, view, position, id) -> {
|
if ("有效时间内通行".equals(BusinessPersonManager.getPersonInBusinessPassModel(business.getId(),
|
checkedPersonList.get(position).getId()))) {
|
spinner_pass_model.setSelection(0);
|
} else {
|
spinner_pass_model.setSelection(1);
|
}
|
checkedPersonAdapter.setSelection(position);
|
checkedPersonAdapter.notifyDataSetChanged();
|
});
|
}
|
|
private void setDefaultOrSelectedPerson(int position) {
|
allFaceGridViewAdapter.setSelection(position);
|
allFaceGridViewAdapter.notifyDataSetChanged();
|
tv_name.setText(personList.get(position).getString("name"));
|
tv_pass_model_name.setText(personList.get(position).getString("sign_up_rule")); // 通行方式
|
// 人员身份
|
StringBuffer sb = new StringBuffer();
|
Map<String, ModelAdapter> checkedRuleMapByPerson = RuleManager.findRuleMapByPersonId(personList.get(position).getId());
|
for (ModelAdapter modelAdapterRule : checkedRuleMapByPerson.values()) {
|
if (modelAdapterRule != null && !TextUtils.isEmpty(modelAdapterRule.getString("name"))) {
|
sb.append(modelAdapterRule.getString("name") + ",");
|
}
|
}
|
if (sb.length() == 0) {
|
tv_identity_name.setText("");
|
} else {
|
tv_identity_name.setText(sb.subSequence(0, sb.length() - 1));
|
}
|
}
|
|
private class SpinnerAdapter extends BaseAdapter {
|
private List<String> ruleListName = new ArrayList<>();
|
|
public SpinnerAdapter(List<ModelAdapter> ruleList) {
|
ruleListName.clear();
|
ruleListName.add("全部");
|
for (int i = 0; i < ruleList.size(); i++) {
|
ruleListName.add(ruleList.get(i).getString("name"));
|
}
|
}
|
|
public int getCount() {
|
return ruleListName == null ? 0 : ruleListName.size();
|
}
|
|
public Object getItem(int position) {
|
return ruleListName.get(position);
|
}
|
|
public long getItemId(int position) {
|
return position;
|
}
|
|
public View getView(int position, View convertView, ViewGroup parent) {
|
ViewHolder viewHolder;
|
if (convertView == null) {
|
viewHolder = new ViewHolder();
|
convertView = LayoutInflater.from(getActivity()).inflate(com.basic.security.utils.ResolutionAdaptation.spinner_identity_item(), null);
|
viewHolder.identity_name = convertView.findViewById(com.basic.security.utils.RUtils.R_id_tv_spinner_text);
|
convertView.setTag(viewHolder);
|
} else {
|
viewHolder = (ViewHolder) convertView.getTag();
|
}
|
viewHolder.identity_name.setText(ruleListName.get(position));
|
return convertView;
|
}
|
|
class ViewHolder {
|
TextView identity_name;
|
}
|
}
|
|
private class AllFaceGridViewAdapter extends BaseAdapter {
|
public void setSelection(int position) {
|
clickTemp = position;
|
}
|
|
public int getCount() {
|
return personList == null ? 0 : personList.size();
|
}
|
|
public Object getItem(int position) {
|
return personList.get(position);
|
}
|
|
public long getItemId(int position) {
|
return position;
|
}
|
|
public View getView(int position, View convertView, ViewGroup parent) {
|
View view;
|
ViewHolder viewHolder;
|
if (convertView == null) {
|
//加载子布局
|
view = LayoutInflater.from(getContext()).inflate(com.basic.security.utils.ResolutionAdaptation.face_view(), parent, false);
|
viewHolder = new ViewHolder();
|
viewHolder.imageView = view.findViewById(com.basic.security.utils.RUtils.R_id_face);
|
viewHolder.imageView_checked = view.findViewById(com.basic.security.utils.RUtils.R_id_face_checked);
|
view.setTag(viewHolder);
|
} else {
|
view = convertView;
|
viewHolder = (ViewHolder) view.getTag();
|
}
|
byte[] blob = personList.get(position).getBlob("camera_image_path");
|
Bitmap bitmap = null;
|
if (blob != null) {
|
try {
|
if (blob.length != 0) {
|
bitmap = BitmapFactory.decodeByteArray(blob, 0, blob.length);
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
bitmap = BitmapFactory.decodeResource(mainActivity().getResources(), com.basic.security.utils.RUtils.R_drawable_u1280);
|
}
|
} else {
|
bitmap = BitmapFactory.decodeResource(mainActivity().getResources(), com.basic.security.utils.RUtils.R_drawable_u1280);
|
}
|
viewHolder.imageView.setImageBitmap(bitmap);
|
if (clickTemp == position) {
|
viewHolder.imageView_checked.setVisibility(View.VISIBLE);
|
} else {
|
viewHolder.imageView_checked.setVisibility(View.GONE);
|
}
|
return view;
|
}
|
|
class ViewHolder {
|
ImageView imageView;
|
RelativeLayout imageView_checked;
|
}
|
}
|
|
private class CheckedGridViewAdapter extends BaseAdapter {
|
public void setSelection(int position) {
|
checkedClickTemp = position;
|
}
|
|
public int getCount() {
|
return checkedPersonList == null ? 0 : checkedPersonList.size();
|
}
|
|
public Object getItem(int position) {
|
return checkedPersonList.get(position);
|
}
|
|
public long getItemId(int position) {
|
return position;
|
}
|
|
public View getView(int position, View convertView, ViewGroup parent) {
|
View view;
|
ViewHolder viewHolder;
|
if (convertView == null) {
|
//加载子布局
|
view = LayoutInflater.from(getContext()).inflate(com.basic.security.utils.ResolutionAdaptation.face_view(), parent, false);
|
viewHolder = new ViewHolder();
|
viewHolder.imageView = view.findViewById(com.basic.security.utils.RUtils.R_id_face);
|
viewHolder.imageView_checked = view.findViewById(com.basic.security.utils.RUtils.R_id_face_checked);
|
view.setTag(viewHolder);
|
} else {
|
view = convertView;
|
viewHolder = (ViewHolder) view.getTag();
|
}
|
try {
|
byte[] data = null;
|
ModelAdapter checkedPerson = checkedPersonList.get(position);
|
if (checkedPerson != null) {
|
data = checkedPerson.getBlob("camera_image_path");
|
}
|
Bitmap bitmap = null;
|
if (data != null) {
|
try {
|
if (data.length != 0) {
|
bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
bitmap = BitmapFactory.decodeResource(mainActivity().getResources(), com.basic.security.utils.RUtils.R_drawable_u1280);
|
}
|
} else {
|
bitmap = BitmapFactory.decodeResource(mainActivity().getResources(), com.basic.security.utils.RUtils.R_drawable_u1280);
|
}
|
viewHolder.imageView.setImageBitmap(bitmap);
|
if (checkedClickTemp == position) {
|
viewHolder.imageView_checked.setVisibility(View.VISIBLE);
|
} else {
|
viewHolder.imageView_checked.setVisibility(View.GONE);
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
return view;
|
}
|
|
class ViewHolder {
|
ImageView imageView;
|
RelativeLayout imageView_checked;
|
}
|
}
|
}
|