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