package com.jiuqi.njt.ui; import java.util.ArrayList; import java.util.List; import android.app.Dialog; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewStub; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import com.jiuqi.lbsinterface.bean.UserPositionBean; import com.jiuqi.lbsinterface.manager.IPositionManager; import com.jiuqi.mobile.nigo.comeclose.bean.base.RoleCode; import com.jiuqi.mobile.nigo.comeclose.bean.client.CooperAndGroupBean; import com.jiuqi.mobile.nigo.comeclose.bean.client.Single; import com.jiuqi.mobile.nigo.comeclose.ws.client.ClientContext; import com.jiuqi.mobile.nigo.comeclose.ws.client.LBSClientContext; import com.jiuqi.njt.R; import com.jiuqi.njt.adapter.TreeViewAdapterNew; import com.jiuqi.njt.model.UserTreeElement; import com.jiuqi.njt.son.LocationDetail; import com.jiuqi.njt.son.WzcxShow; import com.jiuqi.njt.util.Constants; import com.jiuqi.njt.util.TitleBarUtil; import com.jiuqi.njt.util.UIUtil; import com.jiuqi.njt.widget.ProgressDialogStyle; public class WzcxActivity extends AbstractNjtActivity02 implements OnClickListener { private Button sure; private Button textDesc; private Button findkey; private ListView listview; private EditText find; private ArrayList<UserPositionBean> positionBeans = null; // 查询目标的位置结果list private ArrayList<String> failPersons = new ArrayList<String>(); private TreeViewAdapterNew treeViewAdapter = null; private WzcxTask wzcxTask = null; private WzcxDetailTask wzcxDetailTask = null; private static final int TYPE_WZCX = 1; private static final int TYPE_WZXQ = 2; public ViewStub rlTitleBar; // /显示的数量 private ArrayList<UserTreeElement> showUserCount = new ArrayList<UserTreeElement>(); // /总的节点数 private ArrayList<UserTreeElement> allUserlist = new ArrayList<UserTreeElement>(); private List<UserTreeElement> userEleList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } protected void initWidgets() { setContentView(R.layout.expandlist); initTitleBar(); find = (EditText) this.findViewById(R.id.find); findkey = (Button) this.findViewById(R.id.findkey); sure = (Button) this.findViewById(R.id.sure); textDesc = (Button) this.findViewById(R.id.textDesc); listview = (ListView) this.findViewById(R.id.userlist); } protected void initTitleBar() { rlTitleBar = (ViewStub) findViewById(R.id.titleBarStub); TitleBarUtil.createTitleBar(this, rlTitleBar, "位置查询", new OnClickListener() { @Override public void onClick(View v) { WzcxActivity.this.finish(); } }); } protected void initListeners() { findkey.setOnClickListener(this); sure.setOnClickListener(this); textDesc.setOnClickListener(this); } protected void doQuery() { findKey = find.getText().toString(); getUserTask = new GetUserTask(); getUserTask.execute(); } @Override protected void onQueryComplete() { initListview(); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.findkey: if (UIUtil.isFastDoubleClick()) { return; } doQuery(); break; case R.id.sure: queryLocation(TYPE_WZCX); break; case R.id.textDesc: queryLocation(TYPE_WZXQ); break; default: break; } } private void queryLocation(int type) { if (UIUtil.isFastDoubleClick()) { return; } // 获取选择的目标用户 clearSimList(simlist); userEleList = getAllCheckData(type); treeViewAdapter.notifyDataSetChanged(); for (UserTreeElement userTreeElement : userEleList) { if ("".equals(userTreeElement.getState())) { simlist.add(userTreeElement.getSim()); } } // 查询 if (simlist.size() > 0) { switch (type) { case TYPE_WZCX: wzcxTask = new WzcxTask(); wzcxTask.execute(); break; case TYPE_WZXQ: wzcxDetailTask = new WzcxDetailTask(); wzcxDetailTask.execute(); default: break; } } else { UIUtil.showMsg(WzcxActivity.this, "请选择查询对象"); } } private void initListview() { initialData(); treeViewAdapter = new TreeViewAdapterNew(this, showUserCount, allUserlist); listview.setAdapter(treeViewAdapter); listview.setItemsCanFocus(false); listview.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); listview.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { } }); } private void initialData() { if (null != parent) { showUserCount.clear(); allUserlist.clear(); List<CooperAndGroupBean> cooperAndGroups = parent.getChildren(); UserTreeElement parentElement = new UserTreeElement(parent .getParent().getGuid(), parent.getParent().getName(), false, true, "00", 0, false, "", "", parent.getParent() .getIsCooper() == 1 ? true : false); showUserCount.add(parentElement); for (int i = 0; i < cooperAndGroups.size(); i++) { CooperAndGroupBean bean = cooperAndGroups.get(i); Single singleGroup = bean.getParent(); if (singleGroup.getIsCooper() == 1) {//分组 UserTreeElement treeElements = new UserTreeElement( singleGroup.getGuid(), singleGroup.getName(), false, true, parent .getParent().getGuid(), 1, false, "", "", true); allUserlist.add(treeElements); if (null == bean.getChildren()|| bean.getChildren().size() == 0) { }else { List<CooperAndGroupBean> s = bean.getChildren(); for (CooperAndGroupBean b : s) { UserTreeElement userEle = new UserTreeElement(b .getParent().getGuid(), b.getParent().getName(), true, false, singleGroup.getGuid(), 2, false, b.getParent() .getSim(), b.getParent().isActive() ? "" : "(未激活)", parent .getParent().getIsCooper() == 1 ? true : false); allUserlist.add(userEle); } } } else { UserTreeElement treeElements = new UserTreeElement( singleGroup.getGuid(), singleGroup.getName(), false, bean.getChildren() != null && bean.getChildren().size() > 0, parent .getParent().getGuid(), 1, false, singleGroup.getSim(), singleGroup.isActive() ? "" : "(未激活)", false); allUserlist.add(treeElements); } } } } private ArrayList<UserTreeElement> getAllCheckData(int type) { ArrayList<UserTreeElement> Checklines = new ArrayList<UserTreeElement>(); if (null != allUserlist) { switch (type) { case TYPE_WZCX: for (UserTreeElement pdfOutlineElement : allUserlist) { if (pdfOutlineElement.isChecked() && !pdfOutlineElement.isMhasChild()) { Checklines.add(pdfOutlineElement); if ("".equals(pdfOutlineElement.getState())) { pdfOutlineElement.setIsFail("定位中..."); } else { pdfOutlineElement.setIsFail(""); } } else { pdfOutlineElement.setIsFail(""); } } break; case TYPE_WZXQ: for (UserTreeElement pdfOutlineElement : allUserlist) { if (pdfOutlineElement.isChecked() && !pdfOutlineElement.isMhasChild()) { Checklines.add(pdfOutlineElement); pdfOutlineElement.setIsFail(""); }else{ pdfOutlineElement.setIsFail(""); } } default: break; } } return Checklines; } // 位置查询请求 private class WzcxTask extends AsyncTask<Void, Void, String> { Dialog pd = null; protected void onPreExecute() { if (positionBeans == null) { positionBeans = new ArrayList<UserPositionBean>(); } else { positionBeans.clear(); } pd = ProgressDialogStyle.createLoadingDialog(WzcxActivity.this, "正在查询,请稍后"); pd.show(); } protected String doInBackground(Void... params) { String msg = ""; try { if (application.getIsLogin()) { LBSClientContext context = application.getLbsClientContext(); if(context==null){ context = LBSClientContext.getClientContext(Constants.LBS_SERVER_URL); application.setLbsClientContext(context); } IPositionManager position = context .getManager(IPositionManager.class); if (simlist != null) { for (String sim : simlist) { // 合作社下的机手角色 UserPositionBean p = position.findByMobileNumber( sim, RoleCode.Driver.getCode()); if (p != null && p.getIsSuccess() == 0 && p.getLatitude() != 0.0 && p.getLongitude() != 0.0) { positionBeans.add(p); } else { for (UserTreeElement userTree : allUserlist) { if (userTree.getSim().equals(sim)) { userTree.setFailReason(p.getContent()); } } failPersons.add(sim); } } } } else { msg = "请先登录"; } } catch (Exception e) { msg = "位置信息获取异常"; if (e != null) e.printStackTrace(); } return msg; } protected void onCancelled() { super.onCancelled(); } protected void onPostExecute(String result) { pd.dismiss(); if (null != positionBeans && positionBeans.size() > 0) { if (failPersons.size() == 0) { for (int i = 0; i < userEleList.size(); i++) { if ("".equals(userEleList.get(i).getState())) { userEleList.get(i).setIsFail("定位成功"); } } } else { for (int j = 0; j < failPersons.size(); j++) { for (int i = 0; i < userEleList.size(); i++) { if (failPersons.get(j).equals( userEleList.get(i).getSim())) { if ("".equals(userEleList.get(i).getState())) { userEleList.get(i).setIsFail("定位失败"); } } else { if ("".equals(userEleList.get(i).getState())) { userEleList.get(i).setIsFail("定位成功"); } } } } } treeViewAdapter.notifyDataSetChanged(); Intent intent = new Intent(); intent.setClass(WzcxActivity.this, WzcxShow.class); intent.putExtra("locList", positionBeans); WzcxActivity.this.startActivity(intent); } else { for (UserTreeElement iterable_element : userEleList) { if ("".equals(iterable_element.getState())) { iterable_element.setIsFail("定位失败"); } } treeViewAdapter.notifyDataSetChanged(); result = "没有查询到位置信息"; } if (!TextUtils.isEmpty(result.trim())) { UIUtil.showMsg(WzcxActivity.this, result); } } } // 请求位置详情查询 private class WzcxDetailTask extends AsyncTask<Void, Void, String> { Dialog pd = null; protected void onPreExecute() { if (positionBeans == null) { positionBeans = new ArrayList<UserPositionBean>(); } else { positionBeans.clear(); } pd = ProgressDialogStyle.createLoadingDialog(WzcxActivity.this, "正在获取用户位置详情"); pd.show(); } protected String doInBackground(Void... params) { String msg = ""; try { if (application.getIsLogin()) { LBSClientContext context = application.getLbsClientContext(); if(context==null){ context = LBSClientContext.getClientContext(Constants.LBS_SERVER_URL); application.setLbsClientContext(context); } IPositionManager position = context .getManager(IPositionManager.class); if (simlist != null) { for (String sim : simlist) { UserPositionBean p = position .findOldByMobileNumber(sim); if (p != null) { positionBeans.add(p); } } } } else { msg = "请先登录"; } } catch (Exception e) { msg = "位置详情获取异常"; e.printStackTrace(); } return msg; } protected void onCancelled() { super.onCancelled(); } protected void onPostExecute(String result) { pd.dismiss(); if (null != positionBeans && positionBeans.size() > 0) { // if (failPersons.size() == 0) { // for (int i = 0; i < userEleList.size(); i++) { // userEleList.get(i).setIsFail("定位成功"); // } // } else { // for (int j = 0; j < failPersons.size(); j++) { // for (int i = 0; i < userEleList.size(); i++) { // if (failPersons.get(j).equals( // userEleList.get(i).getSim())) { // userEleList.get(i).setIsFail("定位失败"); // } else { // userEleList.get(i).setIsFail("定位成功"); // } // } // } // // } treeViewAdapter.notifyDataSetChanged(); Intent intent = new Intent(); intent.setClass(WzcxActivity.this, LocationDetail.class); intent.putExtra("locList", positionBeans); WzcxActivity.this.startActivity(intent); } else { for (UserTreeElement iterable_element : userEleList) { iterable_element.setIsFail("定位失败"); } treeViewAdapter.notifyDataSetChanged(); result = "没有查询到位置信息"; result = "没有位置详情"; } if (!TextUtils.isEmpty(result.trim())) { UIUtil.showMsg(WzcxActivity.this, result); } } } }