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);
}
}
}
}