xuxiuxi
2017-07-26 e465984927353ef5922b5c1fe9f7dd1cf29e9094
VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/DictionaryMng.java
@@ -1,20 +1,30 @@
package cn.com.basic.face.service;
import cn.com.basic.face.dialog.CountryDialog;
import cn.com.basic.face.fragment.RegisterFragment;
import cn.com.basic.face.fragment.CheckInFragment;
import cn.com.basic.face.util.AppApi;
import android.widget.Toast;
import org.xutils.http.RequestParams;
import org.xutils.x;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import cn.com.basic.face.base.BaseApplication;
import cn.com.basic.face.base.MainActivity;
import cn.com.basic.face.dialog.CountryDialog;
import cn.com.basic.face.dialog.SelectDialog;
import cn.com.basic.face.discern.common.BaseCommonCallBack;
import cn.com.basic.face.discern.common.CommonVariables;
import cn.com.basic.face.discern.common.SqliteSqlBean;
import cn.com.basic.face.discern.entity.Dictionary;
import cn.com.basic.face.discern.query.condition.DictionaryQueryCondition;
import cn.com.basic.face.service.sqlite.DictionaryDao;
import cn.com.basic.face.util.AppApi;
import cn.com.basic.face.util.CharacterParser;
import cn.com.basic.face.util.Constant;
import cn.com.basic.face.util.SqliteSqlUtil;
public class DictionaryMng extends BaseMng {
@@ -24,94 +34,267 @@
        return instance;
    }
    public static List<String> nationList = new ArrayList<String>();
    public static List<String> mCredentialsList = new ArrayList<String>();
    public static List<String> mSexList = new ArrayList<String>();
    public static List<String> uniqueFirstLetterList = new ArrayList<String>();
    public static HashMap<String,List<String>> countriesGroupByFirstLetter = new HashMap<String,List<String>>();
    public static String[] countryWordData = new String[]{};
    public static List<String> visitPurposeList = new ArrayList<String>();
    public void loadAllDictionaryData() {
        if (!BaseApplication.deviceAvailable) {
            return;
        }
        loadCountries();
        loadCredentialsList();
        loadSexList();
        loadVisitPurposeList();
        loadIdTypeList();
        loadGenderList();
        loadVisitReasonList();
        loadVisitorTypeList();
        loadResolutionList();
        loadProtocolList();
        loadCameraBrandList();
        DepartmentMng.getInstance().loadDepartmentDictionary();
        PostMng.getInstance().loadPostDictionary();
        loadAttenderTypeList();
    }
    public void loadCountries() {
        RequestParams params = new RequestParams(AppApi.BASEURL+AppApi.DICTIONARY_TYPE_LIST);
        params.addParameter(Dictionary.FieldNames.type, CommonVariables.DictionaryType.COUNTRY);
        x.http().get(params, new BaseCommonCallBack() {
            public void success() {
                List<Dictionary> items = getList(Dictionary.class);
                countryWordData = new String[items.size()];
                int i=0;
                for (Dictionary item : items) {
                    idMap.put(item.getName(), item.getId()+"");
                    nationList.add(item.getName());
                    String firstLetter = item.getRemark();
                    List list = countriesGroupByFirstLetter.get(firstLetter);
                    if (list == null) {
                        list = new ArrayList();
                        countriesGroupByFirstLetter.put(firstLetter, list);
                        uniqueFirstLetterList.add(0, firstLetter);
                    }
                    list.add(item.getName());
                    countryWordData[i] = item.getName();
                    i++;
        if (!BaseApplication.deviceAvailable) {
            return;
        }
        if (BaseApplication.getInstance().networkAvailable()) {
            RequestParams params = new RequestParams(AppApi.BASE_URL +AppApi.Query.DICTIONARY_QUERY);
            params.addParameter(DictionaryQueryCondition.FieldNames.type, CommonVariables.DictionaryType.COUNTRY);
            params.addBodyParameter("deviceCompanyId", BaseApplication.getInstance().getAndroidDevice().getCompanyId());
            x.http().get(params, new BaseCommonCallBack() {
                public void success() {
                    loadCountriesAfterReturn(getList(Dictionary.class));
                }
                CountryDialog.setCountries(uniqueFirstLetterList, countriesGroupByFirstLetter);
            }
        });
            });
        } else {
            loadCountriesAfterReturn(DictionaryDao.getInstance().loadCountries());
        }
    }
    public void loadCredentialsList() {
        RequestParams params = new RequestParams(AppApi.BASEURL+AppApi.DICTIONARY_TYPE_LIST);
        params.addParameter(Dictionary.FieldNames.type, CommonVariables.DictionaryType.CREDENTIALS);
        x.http().get(params, new BaseCommonCallBack() {
            public void success() {
                List<Dictionary> items = getList(Dictionary.class);
                for (Dictionary item : items) {
                    idMap.put(item.getName(), item.getId()+"");
                    mCredentialsList.add(item.getName());
    private void loadCountriesAfterReturn(List<Dictionary> items) {
        int i=0;
        List<String> uniqueFirstLetterList = new ArrayList<String>();
        HashMap<String,List<String>> countriesGroupByFirstLetter = new HashMap<String,List<String>>();
        sortCountries(items);
        for (Dictionary item : items) {
            idMap.put(item.getName(), item.getDictId()+"");
            String firstLetter = item.getName();
            if (item.getName().length() > 0) {
                firstLetter = CharacterParser.getInstance().getSelling(item.getName()).substring(0, 1).toUpperCase();
            }
            List list = countriesGroupByFirstLetter.get(firstLetter);
            if (list == null) {
                list = new ArrayList();
                countriesGroupByFirstLetter.put(firstLetter, list);
                uniqueFirstLetterList.add(0, firstLetter);
            }
            list.add(item.getName());
            i++;
        }
        CountryDialog.setCountries(uniqueFirstLetterList, countriesGroupByFirstLetter);
    }
    private void sortCountries(List<Dictionary> countries) {
        if (!BaseApplication.deviceAvailable) {
            return;
        }
        Collections.sort(countries, new Comparator<Dictionary>() {
            @Override
            public int compare(Dictionary t1, Dictionary t2) {
                String name1 = t1.getName()==null?"":t1.getName();
                String name2 = t2.getName()==null?"":t2.getName();
                String dept1Name_a = name1.trim();
                String dept1Name_b = name2.trim();
                if (dept1Name_a.length() > 0 && dept1Name_b.length() > 0) {
                    dept1Name_a = CharacterParser.getInstance().getSelling(name1).toLowerCase();
                    dept1Name_b = CharacterParser.getInstance().getSelling(name2).toLowerCase();
                }
                RegisterFragment.getInstance().setCredentialsList(mCredentialsList);
                return dept1Name_b.compareTo(dept1Name_a);
            }
        });
    }
    private void loadSexList() {
        RequestParams params = new RequestParams(AppApi.BASEURL+AppApi.DICTIONARY_TYPE_LIST);
        params.addParameter(Dictionary.FieldNames.type, CommonVariables.DictionaryType.SEX);
        x.http().get(params, new BaseCommonCallBack() {
            public void success() {
                List<Dictionary> items = getList(Dictionary.class);
                for (Dictionary item : items) {
                    idMap.put(item.getName(), item.getId()+"");
                    mSexList.add(item.getName());
    public void loadIdTypeList() {
        if (!BaseApplication.deviceAvailable) {
            return;
        }
        if (BaseApplication.getInstance().networkAvailable()) {
            RequestParams params = new RequestParams(AppApi.BASE_URL +AppApi.Query.DICTIONARY_QUERY);
            params.addParameter(DictionaryQueryCondition.FieldNames.type, CommonVariables.DictionaryType.ID_TYPE);
            params.addBodyParameter("deviceCompanyId", BaseApplication.getInstance().getAndroidDevice().getCompanyId());
            x.http().get(params, new BaseCommonCallBack() {
                public void success() {
                    SelectDialog.setIdTypeList(getDictionaryNameList(getList(Dictionary.class)));
                }
                RegisterFragment.getInstance().setSexList(mSexList);
            }
        });
            });
        } else {
            SelectDialog.setIdTypeList(getDictionaryNameList(DictionaryDao.getInstance().loadIdTypeList()));
        }
    }
    private void loadVisitPurposeList() {
        RequestParams params = new RequestParams(AppApi.BASEURL+AppApi.DICTIONARY_TYPE_LIST);
        params.addParameter(Dictionary.FieldNames.type, CommonVariables.DictionaryType.VISIT_PURPOSE);
        x.http().get(params, new BaseCommonCallBack() {
            public void success() {
                List<Dictionary> items = getList(Dictionary.class);
                for (Dictionary item : items) {
                    idMap.put(CommonVariables.DictionaryType.VISIT_PURPOSE+item.getName(), item.getId()+"");
                    visitPurposeList.add(item.getName());
    private void loadGenderList() {
        if (!BaseApplication.deviceAvailable) {
            return;
        }
        if (BaseApplication.getInstance().networkAvailable()) {
            RequestParams params = new RequestParams(AppApi.BASE_URL +AppApi.Query.DICTIONARY_QUERY);
            params.addParameter(DictionaryQueryCondition.FieldNames.type, CommonVariables.DictionaryType.GENDER);
            params.addBodyParameter("deviceCompanyId", BaseApplication.getInstance().getAndroidDevice().getCompanyId());
            x.http().get(params, new BaseCommonCallBack() {
                public void success() {
                    SelectDialog.setGenderList(getDictionaryNameList(getList(Dictionary.class)));
                }
                CheckInFragment.getInstance().setVisitPurposeList(visitPurposeList);
            }
        });
            });
        } else {
            SelectDialog.setGenderList(getDictionaryNameList(DictionaryDao.getInstance().loadGenderList()));
        }
    }
    public void loadVisitReasonList() {
        if (!BaseApplication.deviceAvailable) {
            return;
        }
        if (BaseApplication.getInstance().networkAvailable()) {
            RequestParams params = new RequestParams(AppApi.BASE_URL +AppApi.Query.DICTIONARY_QUERY);
            params.addParameter(DictionaryQueryCondition.FieldNames.type, CommonVariables.DictionaryType.VISIT_REASON);
            params.addBodyParameter("deviceCompanyId", BaseApplication.getInstance().getAndroidDevice().getCompanyId());
            x.http().get(params, new BaseCommonCallBack() {
                public void success() {
                    SelectDialog.setVisitReasonList(getDictionaryNameList(getList(Dictionary.class)));
                }
            });
        } else {
            SelectDialog.setVisitReasonList(getDictionaryNameList(DictionaryDao.getInstance().loadVisitReasonList()));
        }
    }
    public void loadResolutionList() {
        if (!BaseApplication.deviceAvailable) {
            return;
        }
        if (BaseApplication.getInstance().networkAvailable()) {
            RequestParams params = new RequestParams(AppApi.BASE_URL +AppApi.Query.DICTIONARY_QUERY);
            params.addParameter(DictionaryQueryCondition.FieldNames.type, CommonVariables.DictionaryType.RESOLUTION);
            params.addBodyParameter("deviceCompanyId", BaseApplication.getInstance().getAndroidDevice().getCompanyId());
            x.http().get(params, new BaseCommonCallBack() {
                public void success() {
                    SelectDialog.setResolutionList(getDictionaryNameList(getList(Dictionary.class)));
                }
            });
        } else {
            SelectDialog.setResolutionList(getDictionaryNameList(DictionaryDao.getInstance().loadResolutionList()));
        }
    }
    public void loadProtocolList() {
        if (!BaseApplication.deviceAvailable) {
            return;
        }
        if (BaseApplication.getInstance().networkAvailable()) {
            RequestParams params = new RequestParams(AppApi.BASE_URL +AppApi.Query.DICTIONARY_QUERY);
            params.addParameter(DictionaryQueryCondition.FieldNames.type, CommonVariables.DictionaryType.PROTOCOL);
            params.addBodyParameter("deviceCompanyId", BaseApplication.getInstance().getAndroidDevice().getCompanyId());
            x.http().get(params, new BaseCommonCallBack() {
                public void success() {
                    SelectDialog.setProtocolList(getDictionaryNameList(getList(Dictionary.class)));
                }
            });
        } else {
            SelectDialog.setProtocolList(getDictionaryNameList(DictionaryDao.getInstance().loadProtocolList()));
        }
    }
    public void loadCameraBrandList() {
        if (!BaseApplication.deviceAvailable) {
            return;
        }
        if (BaseApplication.getInstance().networkAvailable()) {
            RequestParams params = new RequestParams(AppApi.BASE_URL +AppApi.Query.DICTIONARY_QUERY);
            params.addParameter(DictionaryQueryCondition.FieldNames.type, CommonVariables.DictionaryType.CAMERA_BRAND);
            params.addBodyParameter("deviceCompanyId", BaseApplication.getInstance().getAndroidDevice().getCompanyId());
            x.http().get(params, new BaseCommonCallBack() {
                public void success() {
                    SelectDialog.setCameraBrandList(getDictionaryNameList(getList(Dictionary.class)));
                }
            });
        } else {
            SelectDialog.setCameraBrandList(getDictionaryNameList(DictionaryDao.getInstance().loadCameraBrandList()));
        }
    }
    private void loadVisitorTypeList() {
        if (!BaseApplication.deviceAvailable) {
            return;
        }
        if (BaseApplication.getInstance().networkAvailable()) {
            RequestParams params = new RequestParams(AppApi.BASE_URL +AppApi.Query.DICTIONARY_QUERY);
            params.addParameter(DictionaryQueryCondition.FieldNames.type, CommonVariables.DictionaryType.VISITOR_TYPE);
            params.addBodyParameter("deviceCompanyId", BaseApplication.getInstance().getAndroidDevice().getCompanyId());
            x.http().get(params, new BaseCommonCallBack() {
                public void success() {
                    SelectDialog.setVisitorTypeList(getDictionaryNameList(getList(Dictionary.class)));
                }
            });
        } else {
            SelectDialog.setVisitorTypeList(getDictionaryNameList(DictionaryDao.getInstance().loadVisitorTypeList()));
        }
    }
    private void loadAttenderTypeList() {
        if (!BaseApplication.deviceAvailable) {
            return;
        }
        if (BaseApplication.getInstance().networkAvailable()) {
            RequestParams params = new RequestParams(AppApi.BASE_URL +AppApi.Query.DICTIONARY_QUERY);
            params.addParameter(DictionaryQueryCondition.FieldNames.type, CommonVariables.DictionaryType.ATTENDER_TYPE);
            params.addBodyParameter("deviceCompanyId", BaseApplication.getInstance().getAndroidDevice().getCompanyId());
            x.http().get(params, new BaseCommonCallBack() {
                public void success() {
                    SelectDialog.setAttenderTypeList(getDictionaryNameList(getList(Dictionary.class)));
                }
            });
        } else {
            SelectDialog.setAttenderTypeList(getDictionaryNameList(DictionaryDao.getInstance().loadAttenderTypeList()));
        }
    }
    public void addDictionary(final int type, String type1, String name) {
        if (!BaseApplication.deviceAvailable) {
            return;
        }
        if (BaseApplication.getInstance().networkAvailable()) {
            RequestParams params = new RequestParams(AppApi.BASE_URL +AppApi.DICTIONARY_ADD);
            params.addBodyParameter(Dictionary.FieldNames.type, type1);
            params.addBodyParameter(Dictionary.FieldNames.name, name);
            params.addBodyParameter(Dictionary.FieldNames.orderBy, "10");
            params.addBodyParameter("deviceCompanyId", BaseApplication.getInstance().getAndroidDevice().getCompanyId());
            x.http().post(params, new BaseCommonCallBack() {
                public void success() {
                    SqliteSqlUtil.insert(getExtraList(SqliteSqlBean.class));
                    addDictionaryAfterReturn(getList(Dictionary.class), type);
                }
            });
        } else {
            addDictionaryAfterReturn(DictionaryDao.getInstance().addDictionary(type1, name), type);
        }
    }
    public void addDictionaryAfterReturn(List<Dictionary> list, int type) {
        switch (type) {
            case Constant.DialogSelectType.VISIT_REASON:
                break;
            case Constant.DialogSelectType.RESOLUTION:
                SelectDialog.setResolutionList(getDictionaryNameList(list));
                break;
            case Constant.DialogSelectType.PROTOCOL:
                SelectDialog.setProtocolList(getDictionaryNameList(list));
                break;
            case Constant.DialogSelectType.CAMERA_BRAND:
                SelectDialog.setCameraBrandList(getDictionaryNameList(list));
                break;
        }
        Toast.makeText(MainActivity.getInstance(), "添加成功", Toast.LENGTH_SHORT).show();
    }
}