| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422 |
- package com.uas.hystorage.activity;
- import android.content.Intent;
- import android.text.TextUtils;
- import android.view.KeyEvent;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.AdapterView;
- import android.widget.BaseAdapter;
- import android.widget.Button;
- import android.widget.CheckBox;
- import android.widget.ListView;
- import android.widget.TextView;
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.JSONObject;
- import com.android.volley.Request;
- import com.handmark.pulltorefresh.library.PullToRefreshBase;
- import com.handmark.pulltorefresh.library.PullToRefreshListView;
- import com.uas.hystorage.R;
- import com.uas.hystorage.global.GloableParams;
- import com.uas.hystorage.listener.MyEditorActionListener;
- import com.uas.hystorage.util.CommonUtil;
- import com.uas.hystorage.util.FastjsonUtil;
- import com.uas.hystorage.util.HttpCallback;
- import com.uas.hystorage.util.HttpParams;
- import com.uas.hystorage.util.ListUtils;
- import com.uas.hystorage.util.StringUtil;
- import com.uas.hystorage.util.VollyRequest;
- import com.uas.hystorage.view.ClearableEditText;
- import com.uas.hystorage.view.EmptyLayout;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.LinkedHashMap;
- import java.util.List;
- import java.util.Map;
- /**
- * Created by RaoMeng on 2019/5/22
- * Desc: dbfind选择页面
- */
- public class SelectNetAcitivty extends BaseActivity implements View.OnClickListener {
- private Button mBackButton;
- private TextView mTitleTextView, mSearchButton;
- private ClearableEditText mSearchEditText;
- private String lastKey;
- private int page = 1;
- //intent
- private String caller;//传进来的主表caller
- private String gCaller;//传进来的附表caller,当是明细表时候存在
- private String fieldKey;
- private String corekey;
- private String caption;
- private boolean dataForm;
- private PullToRefreshListView refreshListView;
- private EmptyLayout mEmptyLayout;
- private int groupId;
- private String mDefCondition;//默认的前提mDefCondition
- private boolean isForm;
- @Override
- protected void initViews() {
- setContentView(R.layout.acitivty_net_select);
- Intent intent = getIntent();
- if (intent != null) {
- fieldKey = intent.getStringExtra("fieldKey");
- caller = intent.getStringExtra("caller");
- gCaller = intent.getStringExtra("gCaller");
- dataForm = intent.getBooleanExtra("dataForm", false);
- corekey = intent.getStringExtra("corekey");
- groupId = intent.getIntExtra("groupId", 0);
- mDefCondition = intent.getStringExtra("mCondition");
- caption = intent.getStringExtra("caption");
- isForm = intent.getBooleanExtra("isForm", true);
- }
- mBackButton = findViewById(R.id.btn_actionbar_withback);
- mTitleTextView = findViewById(R.id.tv_actionbar_withback);
- mTitleTextView.setText(caption);
- mSearchButton = findViewById(R.id.common_search_btn);
- mSearchEditText = findViewById(R.id.common_search_et);
- mSearchEditText.setHint(caption);
- refreshListView = (PullToRefreshListView) findViewById(R.id.refreshListView);
- refreshListView.setMode(PullToRefreshBase.Mode.BOTH);
- mEmptyLayout = new EmptyLayout(this, refreshListView.getRefreshableView());
- mEmptyLayout.setShowLoadingButton(false);
- mEmptyLayout.setShowEmptyButton(false);
- mEmptyLayout.setShowErrorButton(false);
- mEmptyLayout.setEmptyMessage("暂无数据");
- if (dataForm) {
- refreshListView.setMode(PullToRefreshBase.Mode.DISABLED);
- } else {
- refreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
- @Override
- public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
- loadSearch(page = 1, lastKey);
- }
- @Override
- public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
- loadSearch(++page, lastKey);
- }
- });
- }
- }
- @Override
- protected void initEvents() {
- mBackButton.setOnClickListener(this);
- CommonUtil.setEditorActionListener(mSearchEditText, new MyEditorActionListener() {
- @Override
- public void MyEditorAction(String text, int actionId, KeyEvent event) {
- lastKey = text;
- showLoading();
- loadSearch(page = 1, lastKey);
- }
- });
- mSearchButton.setOnClickListener(this);
- }
- @Override
- protected void initDatas() {
- loadSearch(page = 1, lastKey = "");
- showLoading();
- }
- @Override
- public void onClick(View v) {
- switch (v.getId()) {
- case R.id.btn_actionbar_withback:
- finish();
- break;
- case R.id.common_search_btn:
- lastKey = mSearchEditText.getText().toString().trim();
- showLoading();
- loadSearch(page = 1, lastKey);
- break;
- }
- }
- private void findByLocal() {
- List<Bean> showModels = null;
- if (ListUtils.getSize(allModels) > 0) {
- if (TextUtils.isEmpty(lastKey)) {
- showModels = allModels;
- } else {
- showModels = new ArrayList<>();
- for (Bean e : allModels) {
- if (e != null && !TextUtils.isEmpty(e.showName) && e.showName.toUpperCase().contains(lastKey)) {
- showModels.add(e);
- }
- }
- }
- showByAdapter(showModels);
- }
- }
- private String getCondition(String keyWork) {
- StringBuilder builder = new StringBuilder(StringUtil.isEmpty(mDefCondition) ? "" : (mDefCondition + " and ("));
- if (configMap == null || configMap.isEmpty()) {
- builder.append("upper(" + (StringUtil.isEmpty(corekey) ? fieldKey : corekey) + ") like '%" + keyWork.toUpperCase() + "%'");
- } else {
- for (Map.Entry<String, String> e : configMap.entrySet()) {
- builder.append("upper(" + e.getKey() + ") like '%" + keyWork.toUpperCase() + "%' or ");
- }
- if (builder.length() > 3) {
- builder.delete(builder.length() - 3, builder.length() - 1);
- }
- }
- if (!StringUtil.isEmpty(mDefCondition)) {
- builder.append(" ) ");
- }
- return builder.toString();
- }
- private void loadSearch(int page, final String keyWork) {
- refreshListView.setMode(PullToRefreshBase.Mode.BOTH);
- String condition = null;
- if (StringUtil.isEmpty(keyWork)) {
- if (StringUtil.isEmpty(mDefCondition)) {
- condition = "1=1";
- } else {
- condition = mDefCondition;
- }
- } else {
- condition = getCondition(keyWork);
- }
- boolean isForm = StringUtil.isEmpty(gCaller);
- Map<String, String> params = new HashMap<>();
- params.put("which", isForm ? "form" : "grid");
- params.put("caller", isForm ? caller : gCaller);
- params.put("field", fieldKey);
- params.put("condition", condition);
- params.put("ob", "");
- params.put("_config", "");
- params.put("page", page + "");
- params.put("pageSize", dataForm ? "10000" : "20");
- if (!isForm) {
- params.put("gridField", fieldKey);
- params.put("gridCaller", caller);//主从(单据caller 副从表传 本身的caller)
- }
- VollyRequest.getInstance().stringRequest(new HttpParams.Builder()
- .url(GloableParams.ADDRESS_COMMON_DBFIND)
- .method(Request.Method.GET)
- .tag("commondbfind")
- .flag(0)
- .setParams(params).build(), new HttpCallback() {
- @Override
- public void onSuccess(int flag, Object o) throws Exception {
- if (!lastKey.equals(keyWork)) return;
- try {
- handleData(o.toString());
- dimssLoading();
- } catch (Exception e) {
- dimssLoading();
- if (mAdapter == null || ListUtils.isEmpty(mAdapter.models)) {
- mEmptyLayout.showEmpty();
- }
- }
- refreshListView.onRefreshComplete();
- }
- @Override
- public void onFail(int flag, String failStr) throws Exception {
- dimssLoading();
- CommonUtil.toastNoRepeat(SelectNetAcitivty.this, failStr);
- refreshListView.onRefreshComplete();
- }
- });
- }
- private ListAdapter mAdapter = null;
- private void handleData(String messgae) throws Exception {
- JSONObject object = JSON.parseObject(messgae);
- JSONArray dbfinds = FastjsonUtil.getJSONArray(object, "dbfinds", "gridDbfinds");
- String dataStr = FastjsonUtil.getText(object, "data");
- JSONArray data = JSON.parseArray(dataStr);
- setData2Adapter(data, dbfinds);
- }
- private Map<String, String> configMap;
- private String fieldKeyLike = null;
- private void setData2Adapter(JSONArray data, JSONArray dbfinds) throws Exception {
- if (configMap == null || TextUtils.isEmpty(fieldKeyLike)) {
- configMap = new LinkedHashMap<>();
- //获取配置
- JSONObject config = null;
- for (int i = 0; i < dbfinds.size(); i++) {
- config = dbfinds.getJSONObject(i);
- String dbGridField = FastjsonUtil.getText(config, "dbGridField", "ds_dbfindfield");//显示值对应字段名
- String field = FastjsonUtil.getText(config, "field", "ds_gridfield");//实际字段名
- if (!StringUtil.isEmpty(dbGridField) && !StringUtil.isEmpty(field)) {
- if (field.equals(fieldKey)) {
- fieldKeyLike = dbGridField;
- }
- configMap.put(dbGridField, field);
- }
- }
- }
- JSONObject o = null;
- Bean b = null;
- List<Bean> models = new ArrayList<>();
- Map<String, String> jsonMap = null;
- for (int i = 0; i < data.size(); i++) {
- o = data.getJSONObject(i);
- b = new Bean();
- b.name = FastjsonUtil.getText(o, fieldKeyLike);
- jsonMap = new LinkedHashMap<>();
- for (Map.Entry<String, String> e : configMap.entrySet()) {
- jsonMap.put(e.getValue(), FastjsonUtil.getText(o, e.getKey()));
- }
- try {
- b.showName = getShowName(jsonMap);
- } catch (Exception e) {
- }
- b.json = FastjsonUtil.map2JSON(jsonMap);
- if (!StringUtil.isEmpty(b.name))
- models.add(b);
- }
- if (TextUtils.isEmpty(lastKey) && dataForm) {
- allModels = models;
- }
- showByAdapter(models);
- }
- private List<Bean> allModels = null;
- private void showByAdapter(List<Bean> models) {
- if (mAdapter == null) {
- mAdapter = new ListAdapter(models);
- refreshListView.setAdapter(mAdapter);
- refreshListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
- if (mAdapter != null) {
- Bean model = mAdapter.getModels((int) l);
- setResult(90, new Intent()
- .putExtra("data", model.json)
- .putExtra("groupId", groupId)
- .putExtra("isForm", isForm));
- finish();
- }
- }
- });
- } else {
- if (page == 1) {
- mAdapter.setModels(models);
- } else {
- mAdapter.addModls(models);
- }
- }
- if (ListUtils.isEmpty(models)) {
- mEmptyLayout.showEmpty();
- }
- }
- private <T> String getShowName(Map<String, T> object) throws Exception {
- StringBuilder builder = new StringBuilder();
- for (Map.Entry<String, T> e : object.entrySet()) {
- if (!TextUtils.isEmpty(e.getValue() + "")) {
- builder.append(e.getValue() + ",");
- }
- }
- StringUtil.removieLast(builder);
- return builder.toString();
- }
- class ListAdapter extends BaseAdapter {
- private List<Bean> models;
- public Bean getModels(int item) {
- if (ListUtils.getSize(models) > item) {
- return models.get(item);
- }
- return null;
- }
- public ListAdapter(List<Bean> models) {
- this.models = models;
- }
- public void setModels(List<Bean> models) {
- this.models = models;
- notifyDataSetChanged();
- }
- private void addModls(List<Bean> models) {
- if (this.models == null) {
- this.models = new ArrayList<>();
- }
- this.models.addAll(models);
- notifyDataSetChanged();
- }
- @Override
- public int getCount() {
- return ListUtils.getSize(this.models);
- }
- @Override
- public Object getItem(int i) {
- return models.get(i);
- }
- @Override
- public long getItemId(int i) {
- return i;
- }
- @Override
- public View getView(int i, View view, ViewGroup viewGroup) {
- ViewHoler holer = null;
- if (view == null) {
- holer = new ViewHoler();
- view = LayoutInflater.from(SelectNetAcitivty.this).inflate(R.layout.select_list_item, null);
- holer.name_tv = (TextView) view.findViewById(R.id.name_tv);
- holer.select_scb = (CheckBox) view.findViewById(R.id.select_scb);
- holer.select_scb.setVisibility(View.GONE);
- view.setTag(holer);
- } else {
- holer = (ViewHoler) view.getTag();
- }
- Bean bean = models.get(i);
- holer.name_tv.setText(bean.getShowName());
- return view;
- }
- class ViewHoler {
- TextView name_tv;
- CheckBox select_scb;
- }
- }
- private class Bean {
- String name;
- String json;
- String showName;
- public String getShowName() {
- return StringUtil.isEmpty(showName) ? name : showName;
- }
- }
- }
|