package com.jiuqi.njt.son;
import java.lang.reflect.UndeclaredThrowableException;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewStub;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.Spinner;
import android.widget.TableLayout;
import com.jqyd.android.module.lbs.util.CheckState_interface;
import com.jiuqi.mobile.nigo.comeclose.bean.base.DataDictionaryBean;
import com.jiuqi.mobile.nigo.comeclose.bean.base.KindsOfCarBean;
import com.jiuqi.mobile.nigo.comeclose.bean.base.RoleCode;
import com.jiuqi.mobile.nigo.comeclose.bean.master.DriverBean;
import com.jiuqi.mobile.nigo.comeclose.manager.base.IKindsOfCarManager;
import com.jiuqi.mobile.nigo.comeclose.manager.master.IDriverManager;
import com.jiuqi.mobile.nigo.comeclose.ws.client.ClientContext;
import com.jiuqi.njt.R;
import com.jiuqi.njt.data.MyApp;
import com.jiuqi.njt.data.Optdb_interfce;
import com.jiuqi.njt.data.OptsharepreInterface;
import com.jiuqi.njt.util.Constants;
import com.jiuqi.njt.util.TitleBarUtil;
import com.jiuqi.njt.util.UIUtil;
/**
* 我的状态
*
* @author Maria
*/
public class MyState extends Activity implements OnClickListener {
private TableLayout cllb_layout;
private Boolean b = false;
private Spinner dl_spinner, xl_spinner, pm_spinner;
private CheckBox isPub;
private String status;
private OptsharepreInterface sharePre;
private Optdb_interfce database;
private Button optBut;
// private List<DataDictionaryBean> dlList, xlList, pmList;
@SuppressWarnings("unused")
private List<String> dlStrList, xlStrList, pmStrList;
private int dl, xl, pm;
@SuppressWarnings("unused")
private long dl1, xl1, pm1;
private boolean dl_flag = true, xl_flag = true, pm_flag = true; // 大小类是否有值
private MyApp application;
public static final int CAR_BIG_TYPE_MARK = 1; // 车辆大类
public static final int CAR_SMALL_TYPE_MARK = 2; // 车辆小类
public static final int CAR_TYPE_MARK = 3; // 品目
// private Map<Integer, DataDictionaryBean[]> maps;
// private GetCarTypeTask getCarTypeTask;
private GetCarTypeTaskNew getCarTypeTaskNew;
private UpdateStateTask updateStateTask;
private KindsOfCarBean[] maps1;
private ArrayList<KindsOfCarBean> dlList1 = new ArrayList<KindsOfCarBean>(); // 农机大类
private ArrayList<KindsOfCarBean> xlList1 = new ArrayList<KindsOfCarBean>();// 农机小类
private ArrayList<KindsOfCarBean> pmList1 = new ArrayList<KindsOfCarBean>();// 农机品目
// private List<Map<String, KindsOfCarBean>> njxl = new ArrayList<Map<String,KindsOfCarBean>>();
// private List<Map<String, KindsOfCarBean>> njpm = new ArrayList<Map<String,KindsOfCarBean>>();
private boolean getDataFromwhere;
private KindsOfCarBean driverKindsOfCarBean; //司机农机类别
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
doinit();
}
private void doinit() {
initParam();
initWidgets();
initListeners();
initUI();
}
private void initParam() {
sharePre = new OptsharepreInterface(MyState.this);
application = (MyApp) getApplication();
database = new Optdb_interfce(MyState.this);
}
private void initWidgets() {
setContentView(R.layout.mystate_activity);
ViewStub rlTitleBar = (ViewStub) findViewById(R.id.titleBarStub);
TitleBarUtil.createTitleBar(this, rlTitleBar, "我的状态",
new OnClickListener() {
@Override
public void onClick(View v) {
MyState.this.finish();
}
});
optBut = (Button) findViewById(R.id.optbutton);
isPub = (CheckBox) this.findViewById(R.id.isPublic);
cllb_layout = (TableLayout) findViewById(R.id.xzcllb);
dl_spinner = (Spinner) findViewById(R.id.spinner_dl);
xl_spinner = (Spinner) findViewById(R.id.spinner_xl);
pm_spinner = (Spinner) findViewById(R.id.spinner_pm);
}
private void initListeners() {
isPub.setOnClickListener(this);
optBut.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (UIUtil.isFastDoubleClick()) {
return;
}
// 有值,且不为空
if ((dl_flag && xl_flag && pm_flag) || !"".equals(dl)) {
updateStateTask = new UpdateStateTask();
updateStateTask.execute();
} else {
UIUtil.showMsg(MyState.this, "请选择完整类别信息");
}
}
});
}
private void initUI() {
database.createNJTable();
optBut.setText("更新");
isPublic();
// 农机主和农机手选择车辆类别
String rolestr = sharePre.getPres("role");
int role = -1;
if (null != rolestr && !"".equals(rolestr)) {
role = Integer.parseInt(rolestr);
}
if (role == RoleCode.Driver.getCode()|| role == Constants.ROLE_DRIVER_OWER) {
dlList1 = database.getKindsOfCarBeanInfo(CAR_BIG_TYPE_MARK+"");//从数据库中查询数据如果有数据则不再从网络端获取
if(dlList1.size()!=0){
getDataFromwhere =true;
}
if (new CheckState_interface(MyState.this).checkConnection()) {
getCarTypeTaskNew = new GetCarTypeTaskNew();
getCarTypeTaskNew.execute();
} else {
UIUtil.showMsg(MyState.this, Constants.NETWORK_STATE_ERROR);
}
} else {
cllb_layout.setVisibility(View.GONE);
}
}
void inItData1() {
// 车辆小类适配
// 初始化加载农机小类的信息;
xlList1 = new ArrayList<KindsOfCarBean>();
xlList1 = database.getSmallKindsOfCarBeanInfo(CAR_SMALL_TYPE_MARK+"" ,driverKindsOfCarBean.getBigClassName());
// for (int i = 0; i < njxl.size(); i++) {
// KindsOfCarBean b = (KindsOfCarBean) njxl.get(i).get(
// dlList1.get(dl).getName());
// if (null != b) {
// xlList1.add(b);
// }
// }
xlStrList = new ArrayList<String>();
for (int i = 0; i < xlList1.size(); i++) {
if (xlList1.get(i).getCode() == xl1) {
xl = i;
}
}
for (int j = 0; j < xlList1.size(); j++) {
if (xlList1 != null) {
xlStrList.add(xlList1.get(j).getName());
}
}
initSpinner(xlStrList, xl_spinner);
xl_spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
int xl_index = xl_spinner.getSelectedItemPosition();
if (xl_index != xl) {
b = true;
}
if (b) {
pmList1 = new ArrayList<KindsOfCarBean>();
pmList1 = database.getSmallKindsOfCarBeanPMInfo(CAR_TYPE_MARK+"" ,xlList1.get(position).getSmallClassName());
// for (int i = 0; i < njpm.size(); i++) {
// KindsOfCarBean b = (KindsOfCarBean) njpm.get(i).get(
// xlList1.get(position).getName());
// if (null != b) {
// pmList1.add(b);
// }
//
// }
pmStrList = new ArrayList<String>();
for (int j = 0; j < pmList1.size(); j++) {
if (pmList1 != null) {
pmStrList.add(pmList1.get(j).getName());
}
}
initSpinner(pmStrList, pm_spinner);
xl_flag = true;// 标记小类被选择
} else {
xl_flag = false;
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
// 设置选中默认值
xl_spinner.setSelection(xl);
// 初始化加载农机品目信息
pmList1 = new ArrayList<KindsOfCarBean>();
pmList1 = database.getSmallKindsOfCarBeanPMInfo(CAR_TYPE_MARK+"",driverKindsOfCarBean.getSmallClassName());
// if(null!=xlList1&&xlList1.size()>0){
// for (int i = 0; i < njpm.size(); i++) {
// KindsOfCarBean b = (KindsOfCarBean) njpm.get(i).get(
// xlList1.get(xl).getName());
// if (null != b) {
// pmList1.add(b);
// }
//
// }
// }
for (int i = 0; i < pmList1.size(); i++) {
if (pmList1.get(i).getCode() == pm1) {
pm = i;
}
}
pmStrList = new ArrayList<String>();
for (int j = 0; j < pmList1.size(); j++) {
if (pmList1 != null) {
pmStrList.add(pmList1.get(j).getName());
}
}
// 车辆品目适配
initSpinner(pmStrList, pm_spinner);
pm_spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
int pm_index = pm_spinner.getSelectedItemPosition();
if (0 != pm_index) {
pm_flag = true;
} else {
pm_flag = false;
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
// 设置选中默认值
pm_spinner.setSelection(pm);
// Log.e("@@@@@@@@@", xl + "-=-" + pm);
}
public void initSpinnerView() {
// 车辆大类适配
initSpinner(getNames1(dlList1), dl_spinner);
dl_spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
int dl_index = dl_spinner.getSelectedItemPosition();
if (dl_index != dl) {//
b = true;
}
if (b) { //判断是否需要修改Spinner的值
xlList1 = new ArrayList<KindsOfCarBean>();
pmList1 = new ArrayList<KindsOfCarBean>();
xlList1 = database.getSmallKindsOfCarBeanInfo(CAR_SMALL_TYPE_MARK+"" , dlList1.get(position).getBigClassName());
if(xlList1.size()!=0){
pmList1 = database.getSmallKindsOfCarBeanPMInfo(CAR_TYPE_MARK+"" ,xlList1.get(0).getSmallClassName());
}
// for (int i = 0; i < njxl.size(); i++) {
// KindsOfCarBean b = (KindsOfCarBean) njxl.get(i).get(
// dlList1.get(position).getName());
// if (null != b) {
// xlList1.add(b);
// }
//
// }
xlStrList = new ArrayList<String>();
pmStrList = new ArrayList<String>();
for (int j = 0; j < xlList1.size(); j++) {
if (xlList1 != null) {
xlStrList.add(xlList1.get(j).getName());
}
}
initSpinner(xlStrList, xl_spinner);
initSpinner(pmStrList, pm_spinner);
// 设置选择默认值
dl_flag = true;// 标记选择大类
} else {
dl_flag = false;
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
dl_spinner.setSelection(dl);
try {
inItData1();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private List<String> getNames1(List<KindsOfCarBean> dlList12) {
// TODO Auto-generated method stub
ArrayList<String> list = new ArrayList<String>();
for (int i = 0; i < dlList12.size(); i++) {
list.add(dlList12.get(i).getName());
}
return list;
}
/**
* 初始化列表控件
*/
private void initSpinner(List<String> dataList, Spinner spinner) {
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, dataList);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
adapter.notifyDataSetChanged();
spinner.setAdapter(adapter);
}
public long getSpinnerDataNew(int index, List<KindsOfCarBean> list) {
// Log.e("index", index + "");
long temp = 0;
if (list != null && list.size() > 0) {
KindsOfCarBean bean = list.get(index);
if (bean != null) {
temp = bean.getCode();
}
}
return temp;
}
/**
* 检测是否信息公开
*/
public boolean isPublic() {
String i = sharePre.getPres("isPublicInfo");
if (i.equals("0")) {// 公开
isPub.setChecked(true);
status = i;
return true;
}
if ("".equals(i)) {
status = "0";
} else {
status = i;
}
return false;
}
@Override
public void onClick(View v) {
if (isPub.isChecked()) {
status = "0";
} else {
UIUtil.alert(MyState.this, "农机需求者将无法找到您", null);
status = "1";
}
}
// 车辆类型信息 查询
public class GetCarTypeTaskNew extends AsyncTask<Void, Void, String> {
ProgressDialog pd = null;
protected void onPreExecute() {
pd = new ProgressDialog(MyState.this);
pd.setTitle("正在获取我的信息...");
pd.setCancelable(true);
pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);
pd.setIndeterminate(true);
pd.setButton(Constants.CANCEL_TEXT,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
getCarTypeTaskNew.cancel(true);
}
});
pd.show();
}
protected String doInBackground(Void... params) {
String msg = "";
try {
if (application.getIsLogin()) {
ClientContext context = application.getClientContext();
IDriverManager driverManager = context
.getManager(IDriverManager.class);
DriverBean driver = driverManager.find(sharePre
.getPres("guid"));
driverKindsOfCarBean = driver.getCarType();
if(!getDataFromwhere){
IKindsOfCarManager ddm = context
.getManager(IKindsOfCarManager.class);
maps1 = ddm.getChildren(0L);
getKindsOfCarBean(maps1, ddm);
}else{
xlList1 = database.getSmallKindsOfCarBeanInfo(CAR_SMALL_TYPE_MARK+"" ,driverKindsOfCarBean.getBigClassName());
pmList1 = database.getSmallKindsOfCarBeanPMInfo(CAR_TYPE_MARK+"" ,driverKindsOfCarBean.getSmallClassName());
}
getSelectedItem(driverKindsOfCarBean);
try {
// Log.e("结果是:", dlList1.get(dl).getName() + "-"
// + xlList1.get(xl).getName() + "-"
// + pmList1.get(pm).getName());
xl1 = xlList1.get(xl).getCode();
pm1 = pmList1.get(pm).getCode();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} catch (Exception e) {
if(e instanceof UndeclaredThrowableException){
msg =e.getCause().getMessage();
e.printStackTrace();
}else{
msg = "失败";
e.printStackTrace();
}
}
return msg;
}
protected void onCancelled() {
super.onCancelled();
}
protected void onPostExecute(String result) {
pd.dismiss();
initSpinnerView();
if (!"".equals(result)) {
UIUtil.showMsg(MyState.this, result);
}
}
}
public void getSelectedItem(KindsOfCarBean carBean) { // 根据服务端获取的KindsOfCarBean计算出我的类别信息。
try {
long code = carBean.getCode();
int level = carBean.getLevel();
String erjiname = null;
if (level == 1) {
for (int i = 0; i < dlList1.size(); i++) {
if (dlList1.get(i).getCode() == code) {
dl = i;
break;
}
}
} else if (level == 2) {
for (int i = 0; i < xlList1.size(); i++) {
if (null != xlList1.get(i).getName()) {
if (xlList1.get(i).getName().equals(carBean.getName())) {
xl = i;
xl1 = xlList1.get(i).getCode();
break;
}
}
}
erjiname = carBean.getBigClassName();
for (int i = 0; i < dlList1.size(); i++) {
if (null != dlList1.get(i).getName()) {
if (dlList1.get(i).getName().equals(erjiname)) {
dl = i;
getSelectedItem(dlList1.get(i));
break;
}
}
}
// Set<Entry<String, KindsOfCarBean>> sets = njxl.get(xl)
// .entrySet();
// for (Entry<String, KindsOfCarBean> entry : sets) {
// erjiname = entry.getKey();
// }
// for (int i = 0; i < dlList1.size(); i++) {
// if (null != dlList1.get(i).getName()) {
// if (dlList1.get(i).getName().equals(erjiname)) {
// dl = i;
// getSelectedItem(dlList1.get(i));
// }
// }
// }
} else if (level == 3) {
// 先根据找到农机品目的下标;
for (int i = 0; i < pmList1.size(); i++) {
if (null != pmList1.get(i).getName()) {
if (pmList1.get(i).getName().equals(carBean.getName())) {
pm = i;
pm1 = pmList1.get(i).getCode();
break;
}
}
}
// 再根据找到农机小类的下标;
erjiname = carBean.getSmallClassName();
for (int i = 0; i < xlList1.size(); i++) {
if (null != xlList1.get(i).getName()) {
if (xlList1.get(i).getName().equals(erjiname)) {
xl = i;
getSelectedItem(xlList1.get(i));
break;
}
}
}
// Set<Entry<String, KindsOfCarBean>> sets = njpm.get(pm)
// .entrySet();
// for (Entry<String, KindsOfCarBean> entry : sets) {
// erjiname = entry.getKey();
// }
// for (int i = 0; i < xlList1.size(); i++) {
// if (null != xlList1.get(i).getName()) {
// if (xlList1.get(i).getName().equals(erjiname)) {
// xl = i;
// getSelectedItem(xlList1.get(i));
// }
// }
// }
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// Log.e("##########", carBean.getName() + "-" + pm + "--" + xl + "--"
// + dl + "==" + carBean.getLevel());
}
public void getKindsOfCarBean(KindsOfCarBean[] maps11,
IKindsOfCarManager ddm) {
// njxl = new ArrayList<Map<String, KindsOfCarBean>>();
// njpm = new ArrayList<Map<String, KindsOfCarBean>>();
dlList1 = new ArrayList<KindsOfCarBean>();
xlList1 = new ArrayList<KindsOfCarBean>();
pmList1 = new ArrayList<KindsOfCarBean>();
// for (int j = 0; j < maps11.length; j++) {
// dlList1.add(maps11[j]);
// KindsOfCarBean[] maps12 = ddm.getChildren(maps11[j].getCode());
// for (int i = 0; i < maps12.length; i++) {
// Map<String, KindsOfCarBean> map = new HashMap<String, KindsOfCarBean>();
// if (null != maps12[i]) {
// map.put(maps11[j].getName(), maps12[i]);
// njxl.add(map);
// xlList1.add(maps12[i]);
// KindsOfCarBean[] maps13 = ddm.getChildren(maps12[i]
// .getCode());
// for (int k = 0; k < maps13.length; k++) {
// Map<String, KindsOfCarBean> map2 = new HashMap<String, KindsOfCarBean>();
// if (null != maps13[k]) {
// map2.put(maps12[i].getName(), maps13[k]);
// njpm.add(map2);
// pmList1.add(maps13[k]);
// }
//
// }
// }
//
// }
//
// }
for (int j = 0; j < maps11.length; j++) {
dlList1.add(maps11[j]);
KindsOfCarBean[] maps12 = ddm.getChildren(maps11[j].getCode());
for (int i = 0; i < maps12.length; i++) {
if (null != maps12[i]) {
xlList1.add(maps12[i]);
KindsOfCarBean[] maps13 = ddm.getChildren(maps12[i].getCode());
for (int k = 0; k < maps13.length; k++) {
if (null != maps13[k]) {
pmList1.add(maps13[k]);
}
}
}
}
}
database.InsertToDb(Optdb_interfce.TABLE_NJLEIBIE,dlList1);
database.InsertToDb(Optdb_interfce.TABLE_NJLEIBIE,xlList1);
database.InsertToDb(Optdb_interfce.TABLE_NJLEIBIE,pmList1);
xlList1 = database.getSmallKindsOfCarBeanInfo(CAR_SMALL_TYPE_MARK+"" ,driverKindsOfCarBean.getBigClassName());
pmList1 = database.getSmallKindsOfCarBeanPMInfo(CAR_TYPE_MARK+"" ,driverKindsOfCarBean.getSmallClassName());
// Log.e("333333333333--", dlList1.size() + "--" + njxl.size() + "--"
// + njpm.size());
}
/**
* 根据字典得所有名称的数组
*
* @param beans
* @return String[]
*/
protected ArrayList<String> getNames(List<DataDictionaryBean> beans) {
ArrayList<String> list = new ArrayList<String>();
// list.add("请选择类别");
if (beans != null) {
for (DataDictionaryBean b : beans) {
list.add(b.getName());
}
}
return list;
}
// 人员列表查询
private class UpdateStateTask extends AsyncTask<Void, Void, String> {
ProgressDialog pd = null;
protected void onPreExecute() {
pd = new ProgressDialog(MyState.this);
pd.setTitle("更新数据中...");
pd.setCancelable(true);
pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);
pd.setIndeterminate(true);
pd.setButton(Constants.CANCEL_TEXT,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
updateStateTask.cancel(true);
}
});
pd.show();
}
protected String doInBackground(Void... params) {
String msg = "";
if(null!=dlList1&&dlList1.size()>0&&dl_spinner.getSelectedItemPosition()>-1){
try {
long dlcode = getSpinnerDataNew(
dl_spinner.getSelectedItemPosition(), dlList1);
long xlcode = getSpinnerDataNew(
xl_spinner.getSelectedItemPosition(), xlList1);
long pmcode = getSpinnerDataNew(
pm_spinner.getSelectedItemPosition(), pmList1);
// Log.e("@@@@@@@@@@@@@@@@@@:", dlcode + "--" + xlcode + "--"
// + pmcode + "--");
if (pmcode == 0) {
if (xlcode == 0) {
pmcode = dlcode;
} else {
pmcode = xlcode;
}
}
if (application.getIsLogin()) {
ClientContext context = application.getClientContext();
IDriverManager driverManager = context
.getManager(IDriverManager.class);
String rolestr = sharePre.getPres("role");
int role = Integer.parseInt(rolestr);
if (RoleCode.Driver.getCode() == role) {
DriverBean driver = driverManager.find(context
.getUser().getGuid());
if (driver != null) {
KindsOfCarBean b = new KindsOfCarBean();
b.setCode(pmcode);
driver.setCarType(b);
driver.setIsPublicInfo(Integer.parseInt(status));
}
driverManager.update(driver);
}
msg = "更新成功";
// 更新成功后修改本地的信息公开状态
sharePre.putPres("isPublicInfo", status);
} else {
msg = "请先登录";
}
} catch (Exception e) {
if(e instanceof UndeclaredThrowableException){
msg =e.getCause().getMessage();
e.printStackTrace();
}else{
msg = "更新失败";
e.printStackTrace();
}
}
}else{
msg = "没有数据";
}
return msg;
}
protected void onCancelled() {
super.onCancelled();
}
protected void onPostExecute(String result) {
pd.dismiss();
if (!"".equals(result)) {
UIUtil.showMsg(MyState.this, result);
}
}
}
}