a
554325746@qq.com
2019-12-25 84e391f79e4c298e31b990667a54d991d645949f
app/src/main/java/com/basic/security/fragment/PersonManageFragment.java
@@ -4,18 +4,17 @@
import com.basic.security.R;
import com.basic.security.base.BaseFragment;
import com.basic.security.manager.BaseSettingManager;
import com.basic.security.manager.HintSignUpManager;
import com.basic.security.manager.PersonIdentityManager;
import com.basic.security.manager.PersonManager;
import com.basic.security.manager.impl.cblite.AccountManager;
import com.basic.security.manager.impl.cblite.BaseSettingManager;
import com.basic.security.manager.impl.cblite.HintSignUpManager;
import com.basic.security.manager.impl.cblite.PersonIdentityManager;
import com.basic.security.manager.impl.cblite.PersonManager;
import com.basic.security.model.ModelAdapter;
import com.basic.security.model.Person;
import com.basic.security.utils.BasicIdUtil;
import com.basic.security.utils.ButtonClickIntervalsUtils;
import com.basic.security.utils.CheckIdCard;
import com.basic.security.utils.FaceId;
import com.basic.security.utils.IdCard;
import com.basic.security.utils.PhoneNumberCheckUtils;
import com.basic.security.utils.ToastUtil;
import com.basic.security.widget.ConfirmDialog;
@@ -34,11 +33,11 @@
    public ModelAdapter selectedPersonDocument;
    public boolean needVerifyIDCard = false;
    private boolean isFromAdminRegister = false;
    private boolean canSavePerson = true;
    public ConfirmDialog confirmDialog;
    public String savedPersonId;
    boolean messageComplete = false;
    private boolean isFromAdminRegister = false;
    private boolean canSavePerson = true;
    private String all_device = null;
    public boolean needIdCardInfo() {
@@ -52,11 +51,11 @@
    @Override
    public void show() {
        if (mainActivity().currentFragment == mainActivity().fragment_su_logged_ic_wait_idcard) {
            ((PersonIdentityFragment) mainActivity().fragment_person_identity).setIdentityWithPerson(null);
            mainActivity().fragment_person_identity.setIdentityWithPerson(null);
        }
        // 解决从注册页面跳到人员管理页面,第一次不显示请在刷卡区验证身份证
        if (selectedPersonDocument != null && isFromAdminRegister) {
            ((FaceDetailFragment) mainActivity().fragment_face_detail).setPerson(selectedPersonDocument);
            mainActivity().fragment_face_detail.setPerson(selectedPersonDocument);
        }
    }
@@ -78,18 +77,18 @@
        }
    }
    public void savePerson() {
    public boolean savePerson() {
        if (!ButtonClickIntervalsUtils.isCanClick()) {
            return;
            return false;
        }
        final String[] msg = {"保存成功"};
        canSavePerson = true;
        BaseFragment currentFragment = mainActivity().currentFragment;
        class SavePersonHelper {
            public void execute() {
            public boolean execute() {
                if (checkPersonDocument()) {
                    if (!canSavePerson) {// 校验身份证号和手机号是否符合要求
                        return;
                        return false;
                    }
                    if (needSaveIdCard()) {
                        saveIdCard();
@@ -100,21 +99,21 @@
                        setVerifyStatus();
                    }
                    setIsRegistered();
                    if (((PersonIdentityFragment) mainActivity().fragment_person_identity).savePersonIdentity(selectedPersonDocument.getId())) {
                    if (mainActivity().fragment_person_identity.savePersonIdentity(selectedPersonDocument.getId())) {
                        byte[] camera_image_feature = selectedPersonDocument.getBlob("camera_image_feature");
                        if (camera_image_feature != null && camera_image_feature != null) {
                            //  解决在personManager的已注册中人员信息不完整的提示,人员信息不完整,不保存
//                            boolean messageComplete = ((FaceDetailFragment) mainActivity().fragment_face_detail).detailMessageIsComplete();
                            int identitySize = ((PersonIdentityFragment) mainActivity().fragment_person_identity).getIdentitySize();
                            int identitySize = mainActivity().fragment_person_identity.getIdentitySize();
                            identitySize = 1; // 不判断是否有身份信息
                            if ("已注册".equals(selectedPersonDocument.getString("sign_up_status"))
                                    && currentFragment == mainActivity().fragment_person_manage) {
                                if (!messageComplete) {
                                    return;
                                    return false;
                                }
                                if (identitySize == 0) {
                                    ToastUtil.show("请选择身份");
                                    return;
                                    return false;
                                }
                                ToastUtil.show(msg[0]);
                            }
@@ -123,10 +122,21 @@
                            PersonManager.savePerson(selectedPersonDocument);
                            savedPersonId = selectedPersonDocument.getId();
                            doInUIThread(selectedPersonDocument);
                            afterSavePerson(selectedPersonDocument);
                            if (isNewPerson()) {
                                try {
                                    String camera_image_path = selectedPersonDocument.getString(Person.camera_image_path);
                                    byte[] feature = FaceId.instance.extractFeature(camera_image_path);
                                    if (feature == null) {
                                        PersonManager.deletePerson(selectedPersonDocument);
                                        return false;
                                    }
                                } catch (Exception e) {
                                    PersonManager.deletePerson(selectedPersonDocument);
                                    return false;
                                }
                                FaceId.instance.addFeatureToDb(selectedPersonDocument.getId(), selectedPersonDocument.getBlob("camera_image_feature"));
                                ToastUtil.show("注册成功");
                            }
                        } else {
                            ToastUtil.show("获取头像失败,请稍后重试!");
@@ -139,11 +149,13 @@
                        });
                    }
                }
                return true;
            }
            public void setDevice(){
            public void setDevice() {
                //获取选择的设备:当前设备还是集群所有设备
                String s = ((PersonIdentityFragment) mainActivity().fragment_person_identity).aboutDevice();
                selectedPersonDocument.setString("all_device",s);
                String s = mainActivity().fragment_person_identity.aboutDevice();
                selectedPersonDocument.setString("all_device", s);
            }
            public void setIsRegistered() {
@@ -152,8 +164,8 @@
                }
                if (AccountManager.adminLoggedIn()) {
                    String sign_up_status = selectedPersonDocument.getString("sign_up_status");
                    messageComplete = ((FaceDetailFragment) mainActivity().fragment_face_detail).detailMessageIsComplete();
                    int identitySize = ((PersonIdentityFragment) mainActivity().fragment_person_identity).getIdentitySize();
                    messageComplete = mainActivity().fragment_face_detail.detailMessageIsComplete();
                    int identitySize = mainActivity().fragment_person_identity.getIdentitySize();
                    identitySize = 1; // 不判断是否有身份信息都可以保存
                    if (mainActivity().currentFragment == mainActivity().fragment_su_logged_ic_compare_success
                            || mainActivity().currentFragment == mainActivity().fragment_su_logged_ic_wait_idcard
@@ -169,7 +181,6 @@
//                        }
                        if (messageComplete) {
                            selectedPersonDocument.setString("sign_up_status", "已注册");
                            ToastUtil.show("注册成功");
                        } else {
                            selectedPersonDocument.setString("sign_up_status", "未注册");
                        }
@@ -254,7 +265,7 @@
                    if (currentFragment == mainActivity().fragment_su_logged_nic_wait_detail) {
                        mainActivity().showFragment(mainActivity().fragment_su_logged_nic_wait_face);
                        ((FaceDetailFragment) mainActivity().fragment_face_detail).clearInPutText();
                        mainActivity().fragment_face_detail.clearInPutText();
                        return;
                    }
                    if (currentFragment == mainActivity().fragment_su_logged_ic_wait_face) {
@@ -263,7 +274,7 @@
                    if (currentFragment == mainActivity().fragment_su_logged_ic_compare_success) {
                        isFromAdminRegister = true;
                        mainActivity().showFragment(mainActivity().fragment_su_logged_ic_wait_face);
                        ((FaceDetailFragment) mainActivity().fragment_face_detail).clearInPutText();
                        mainActivity().fragment_face_detail.clearInPutText();
                        return;
                    }
                    if (currentFragment == mainActivity().fragment_su_logged_ic_wait_idcard) {
@@ -280,15 +291,15 @@
                    if (mainActivity().currentFragment != mainActivity().fragment_person_manage) {
                        if (mainActivity().currentFragment != mainActivity().fragment_su_logged_nic_wait_face
                                || mainActivity().currentFragment != mainActivity().fragment_su_logged_nic_wait_detail) {
                            ((FaceDetailFragment) mainActivity().fragment_face_detail).setPerson(null);
                            ((PersonIdentityFragment) (mainActivity().fragment_person_identity)).setIdentityWithPerson(null);
                            ((PersonIdentityFragment) (mainActivity().fragment_person_identity)).setDevice("0");
                            mainActivity().fragment_face_detail.setPerson(null);
                            mainActivity().fragment_person_identity.setIdentityWithPerson(null);
                            mainActivity().fragment_person_identity.setDevice("0");
                        } else {
                            personChanged(null);
                        }
                    } else {
                        if ("未注册".equals(((FaceListFragment) mainActivity().fragment_face_list).isRegister)) {
                            ((FaceListFragment) mainActivity().fragment_face_list).findNextPosition(selectedPersonDocument);
                        if ("未注册".equals(mainActivity().fragment_face_list.isRegister)) {
                            mainActivity().fragment_face_list.findNextPosition(selectedPersonDocument);
                        } else {
                            personChanged(PersonManager.findPersonById(selectedPersonDocument.getId()), false);
                        }
@@ -363,7 +374,7 @@
                        selectedPersonDocument.setString("checked_time_rule_id", BaseSettingManager.getDefaultRegisterTimeId());
                    }
                    if (currentFragment == mainActivity().fragment_su_auto_ic_compare_success) {
                        String phone = ((SuAutoIcCompareSuccessFragment) mainActivity().fragment_su_auto_ic_compare_success).phone_number.getText().toString().trim();
                        String phone = mainActivity().fragment_su_auto_ic_compare_success.phone_number.getText().toString().trim();
                        if (!TextUtils.isEmpty(phone) && !PhoneNumberCheckUtils.isPhone(phone)) {
                            allowPhone = false;
                        } else {
@@ -371,7 +382,7 @@
                        }
                    } else if (currentFragment == mainActivity().fragment_su_auto_wait_face) {
                    } else if (currentFragment == mainActivity().fragment_su_auto_nic_wait_detail) {
                        SuAutoNicWaitDetailFragment fragment_su_auto_nic_wait_detail = (SuAutoNicWaitDetailFragment) mainActivity().fragment_su_auto_nic_wait_detail;
                        SuAutoNicWaitDetailFragment fragment_su_auto_nic_wait_detail = mainActivity().fragment_su_auto_nic_wait_detail;
                        String phone = fragment_su_auto_nic_wait_detail.phone_number.getText().toString();
                        String idCardNumber = fragment_su_auto_nic_wait_detail.id_card.getText().toString();
@@ -396,7 +407,7 @@
                    }
                }
                if (AccountManager.adminLoggedIn()) {
                    FaceDetailFragment faceDetailFragment = (FaceDetailFragment) mainActivity().fragment_face_detail;
                    FaceDetailFragment faceDetailFragment = mainActivity().fragment_face_detail;
                    String phone = faceDetailFragment.getInPutPhoneNumber();
                    String idCardNumber = faceDetailFragment.getInPutIdCardNumber();
                    selectedPersonDocument.setString("sign_up_rule", faceDetailFragment.getSignUpRule());
@@ -499,15 +510,16 @@
                return false;
            }
        }
        new SavePersonHelper().execute();
        return new SavePersonHelper().execute();
    }
    @UiThread
    public void doInUIThread(ModelAdapter selectedPersonDocument) {
    public void afterSavePerson(ModelAdapter selectedPersonDocument) {
        // 解决当修改过人员信息后再点击保存清空数据
        try {
            if (selectedPersonDocument != null) {
                ((FaceDetailFragment) mainActivity().fragment_face_detail).setText(selectedPersonDocument.getId());
                mainActivity().fragment_face_detail.setFaceDetailUI(selectedPersonDocument.getId());
//                personChanged(selectedPersonDocument);
            }
        } catch (Exception e) {
            e.printStackTrace();
@@ -536,7 +548,7 @@
                if (mainActivity().currentFragment == mainActivity().fragment_person_manage) {
                    // 此方法删除后会选中前一个,如果是第一个会选中后一个
                    ((FaceListFragment) mainActivity().fragment_face_list).findNextPosition(selectedPersonDocument);
                    mainActivity().fragment_face_list.findNextPosition(selectedPersonDocument);
                }
                if (mainActivity().currentFragment == mainActivity().fragment_su_logged_nic_wait_detail
                        || mainActivity().currentFragment == mainActivity().fragment_su_logged_ic_compare_success
@@ -546,7 +558,7 @@
                    } else {
                        mainActivity().showFragment(mainActivity().fragment_su_logged_nic_wait_face);
                    }
                    ((PersonManageFragment) mainActivity().fragment_person_manage).personChanged(null, false);
                    mainActivity().fragment_person_manage.personChanged(null, false);
                }
                confirmDialog.dismiss();
            }
@@ -561,12 +573,12 @@
    //取消
    public void giveUpSave() {
        ((MenuFragment) mainActivity().fragment_menu).person_add();
        mainActivity().fragment_menu.person_add();
    }
    public void personChanged(ModelAdapter personDocument) {
        ((FaceDetailFragment) mainActivity().fragment_face_detail).clearInPutText();
        mainActivity().fragment_face_detail.clearInPutText();
        personChanged(personDocument, true);
    }
@@ -580,11 +592,11 @@
        showHotPoint(personDocument);
        if (personDocument == null) {
            if (reloadFaceList) {
                ((FaceListFragment) mainActivity().fragment_face_list).findPersonList(null, null);
                mainActivity().fragment_face_list.findPersonList(null, null);
            }
        } else {
            if (selectPerson) {
                ((FaceListFragment) mainActivity().fragment_face_list).findPersonList(personDocument.getString("sign_up_status"),
                mainActivity().fragment_face_list.findPersonList(personDocument.getString("sign_up_status"),
                        new HashMap<>(), personDocument);
            }
            all_device = personDocument.getString("all_device");
@@ -592,41 +604,41 @@
        }
        selectedPersonDocument = personDocument;
        ((FaceDetailFragment) mainActivity().fragment_face_detail).setPerson(personDocument);
        ((PersonIdentityFragment) (mainActivity().fragment_person_identity)).setIdentityWithPerson(personDocument != null ? personDocument.getId() : null);
        ((PersonIdentityFragment) (mainActivity().fragment_person_identity)).setDevice(all_device);
        mainActivity().fragment_face_detail.setPerson(personDocument);
        mainActivity().fragment_person_identity.setIdentityWithPerson(personDocument != null ? personDocument.getId() : null);
        mainActivity().fragment_person_identity.setDevice(all_device);
    }
    private void showHotPoint(ModelAdapter personDocument) {
        if (personDocument == null || "系统初始化分配".equals(personDocument.getString("sign_up_method"))) {
            ((FaceDetailFragment) mainActivity().fragment_face_detail).needPhone(false);
            ((FaceDetailFragment) mainActivity().fragment_face_detail).needName(false);
            ((FaceDetailFragment) mainActivity().fragment_face_detail).needIdNumber(false);
            mainActivity().fragment_face_detail.needPhone(false);
            mainActivity().fragment_face_detail.needName(false);
            mainActivity().fragment_face_detail.needIdNumber(false);
        } else {  // 根据当前的注册方式决定是否显示前面的红点,统一导入的暂不处理
            if ("管理员注册".equals(personDocument.getString("sign_up_method"))) {
                if ("已经验证身份证".equals(personDocument.getString("verify_status"))
                        || "未验证身份证".equals(personDocument.getString("verify_status"))) {
                    ((FaceDetailFragment) mainActivity().fragment_face_detail).needPhone(BaseSettingManager.adminIDCardSignUpModeNeedPhone());
                    ((FaceDetailFragment) mainActivity().fragment_face_detail).needName(false);
                    ((FaceDetailFragment) mainActivity().fragment_face_detail).needIdNumber(false);
                    mainActivity().fragment_face_detail.needPhone(BaseSettingManager.adminIDCardSignUpModeNeedPhone());
                    mainActivity().fragment_face_detail.needName(false);
                    mainActivity().fragment_face_detail.needIdNumber(false);
                }
                if ("不需要验证身份证".equals(personDocument.getString("verify_status"))) {
                    ((FaceDetailFragment) mainActivity().fragment_face_detail).needName(BaseSettingManager.adminNormalSignUpModeNeedName());
                    ((FaceDetailFragment) mainActivity().fragment_face_detail).needIdNumber(BaseSettingManager.adminNormalSignUpModeNeedIDNumber());
                    ((FaceDetailFragment) mainActivity().fragment_face_detail).needPhone(BaseSettingManager.adminNormalSignUpModeNeedPhone());
                    mainActivity().fragment_face_detail.needName(BaseSettingManager.adminNormalSignUpModeNeedName());
                    mainActivity().fragment_face_detail.needIdNumber(BaseSettingManager.adminNormalSignUpModeNeedIDNumber());
                    mainActivity().fragment_face_detail.needPhone(BaseSettingManager.adminNormalSignUpModeNeedPhone());
                }
            }
            if ("自助注册".equals(personDocument.getString("sign_up_method"))) {
                if ("已经验证身份证".equals(personDocument.getString("verify_status"))
                        || "未验证身份证".equals(personDocument.getString("verify_status"))) {
                    ((FaceDetailFragment) mainActivity().fragment_face_detail).needPhone(BaseSettingManager.isAutoSignUpIDCardModeNeedPhone());
                    ((FaceDetailFragment) mainActivity().fragment_face_detail).needName(false);
                    ((FaceDetailFragment) mainActivity().fragment_face_detail).needIdNumber(false);
                    mainActivity().fragment_face_detail.needPhone(BaseSettingManager.isAutoSignUpIDCardModeNeedPhone());
                    mainActivity().fragment_face_detail.needName(false);
                    mainActivity().fragment_face_detail.needIdNumber(false);
                }
                if ("不需要验证身份证".equals(personDocument.getString("verify_status"))) {
                    ((FaceDetailFragment) mainActivity().fragment_face_detail).needName(BaseSettingManager.isAutoSignUpNotIDCardModeNeedName());
                    ((FaceDetailFragment) mainActivity().fragment_face_detail).needIdNumber(BaseSettingManager.isAutoSignUpNotIDCardModeNeedIDNumber());
                    ((FaceDetailFragment) mainActivity().fragment_face_detail).needPhone(BaseSettingManager.isAutoSignUpNotIDCardModeNeedPhone());
                    mainActivity().fragment_face_detail.needName(BaseSettingManager.isAutoSignUpNotIDCardModeNeedName());
                    mainActivity().fragment_face_detail.needIdNumber(BaseSettingManager.isAutoSignUpNotIDCardModeNeedIDNumber());
                    mainActivity().fragment_face_detail.needPhone(BaseSettingManager.isAutoSignUpNotIDCardModeNeedPhone());
                }
            }
        }