package com.smartdot.cgt.activity; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import java.util.Map; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.os.Message; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.Spinner; import android.widget.TextView; import com.smartdot.cgt.R; import com.smartdot.cgt.model.CaseModel; import com.smartdot.cgt.model.ResponseResult; import com.smartdot.cgt.request.ApiClent; import com.smartdot.cgt.request.Request; import com.smartdot.cgt.util.BaseThread; import com.smartdot.cgt.util.HandlerStatus; import com.smartdot.cgt.util.Msg; import com.smartdot.cgt.util.StringUtils; import com.smartdot.cgt.view.TitleBar; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; public class FrmProblemHistroy extends BaseActivity { private Spinner spinStatus; private EditText txtUpdateTime; private EditText txtEndTime; private Button btnQuery; private Button btnQueryReset; private BaseThread thread; private int nowPage = 0; private CaseModel caseModel; private String caseLClass = null; private String caseSClass = null; public List<Map<String,String>> lclass,sclass,stateclass; private Spinner spinProblemType; private Spinner spinLargeClass; private Spinner spinSmallClass; ArrayAdapter<String> type_arr_adapter; List<String> state_list =null; String caseTypeId ,caseLClassId ,caseSClassId ,uploadDate ,endDate,statusId ; private OnItemSelectedListener onItemSelectedListener = new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { TextView v1 = (TextView) arg1; if (arg0 == spinProblemType) { spinProblemType.getChildAt(0).setVisibility(View.VISIBLE); changeLClassType(arg2); } else if (arg0 == spinLargeClass) { changeSClassType(arg2); } } @Override public void onNothingSelected(AdapterView<?> arg0) { } }; private OnClickListener onClickListener = new OnClickListener() { @Override public void onClick(View arg0) { if (arg0 == btnQuery) { startQuery(); } if (arg0 == btnQueryReset) { resetQueryParameters(); } } }; @Override protected void addEventListener() { btnQuery.setOnClickListener(onClickListener); btnQueryReset.setOnClickListener(onClickListener); spinProblemType.setOnItemSelectedListener(onItemSelectedListener); spinProblemType.setSelection(0, true); spinLargeClass.setSelection(0, true); spinLargeClass.setOnItemSelectedListener(onItemSelectedListener); spinSmallClass.setSelection(0, true); spinSmallClass.setOnItemSelectedListener(onItemSelectedListener); } @SuppressWarnings("unchecked") @Override protected void handleMessage(Message msg) { // if (msg.what == HandlerStatus.REQUEST_STATE) // { // if (msg.arg1 == HandlerStatus.HANDLE_OK) // { // try { // List<String> data_list = (List<String>) msg.obj; // ArrayAdapter<String> arr_adapter = new ArrayAdapter<String>(FrmProblemHistroy.this, // android.R.layout.simple_spinner_item, data_list); // arr_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // spinStatus.setAdapter(arr_adapter); // arr_adapter.notifyDataSetChanged(); // }catch (Exception e){ // e.printStackTrace(); // } // } // else if (msg.arg1 == HandlerStatus.HANDLE_FAIL) // { // Msg.showInfo(FrmProblemHistroy.this, "获取案件状态信息失败!"); // } // else // { // Msg.showInfo(FrmProblemHistroy.this, "获取案件状态信息时出现错误!"); // } // }else if (msg.what == HandlerStatus.REQUEST_GETPROBLEMHISTORY) { if (msg.arg1 == HandlerStatus.HANDLE_OK) { JSONArray jsonArray = (JSONArray) msg.obj; String jsonstr = jsonArray.toString(); if(jsonstr.equals("[]")){ Msg.showInfo(FrmProblemHistroy.this, "无符合条件案卷"); }else{ Intent intent = new Intent(FrmProblemHistroy.this, FrmProblemHisList.class); Bundle bundle = new Bundle(); bundle.putString("jsonstr", jsonstr); bundle.putString("caseTypeId",caseTypeId); bundle.putString("statusId",statusId); bundle.putString("caseLClassId",caseLClassId); bundle.putString("caseSClassId",caseSClassId); bundle.putString("uploadDate",uploadDate); bundle.putString("endDate",endDate); intent.putExtras(bundle); startActivity(intent); } } else if (msg.arg1 == HandlerStatus.HANDLE_FAIL) { Msg.showInfo(FrmProblemHistroy.this, "未查询到任何项"); } else if (msg.arg1 == HandlerStatus.HANDLE_ERROR) { Msg.showInfo(FrmProblemHistroy.this, "查询出错!"); } else if (msg.arg1 == HandlerStatus.HANDLE_FORMATERROR) { String errorString = (String) msg.obj; Msg.showInfo(FrmProblemHistroy.this, errorString); } closeProgress(); } else if (msg.what == HandlerStatus.REQUEST_LCLASS) { if (msg.arg1 == HandlerStatus.HANDLE_OK) { try { List<String> data_list = (List<String>) msg.obj; ArrayAdapter<String> arr_adapter = new ArrayAdapter<String>(FrmProblemHistroy.this, android.R.layout.simple_spinner_item, data_list); arr_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinLargeClass.setAdapter(arr_adapter); arr_adapter.notifyDataSetChanged(); spinLargeClass.setSelection(0,true); }catch (Exception e){ e.printStackTrace(); } } else if (msg.arg1 == HandlerStatus.HANDLE_FAIL) { Msg.showInfo(FrmProblemHistroy.this, "获取大类信息失败!"); } else { Msg.showInfo(FrmProblemHistroy.this, "获取大类信息时出现错误!"); } } else if (msg.what == HandlerStatus.REQUEST_SCLASS) { if (msg.arg1 == HandlerStatus.HANDLE_OK) { try { List<String> data_list = (List<String>) msg.obj; ArrayAdapter<String> arr_adapter = new ArrayAdapter<String>(FrmProblemHistroy.this, android.R.layout.simple_spinner_item, data_list); arr_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinSmallClass.setAdapter(arr_adapter); arr_adapter.notifyDataSetChanged(); }catch (Exception e){ e.printStackTrace(); } } else if (msg.arg1 == HandlerStatus.HANDLE_FAIL) { Msg.showInfo(FrmProblemHistroy.this, "获取小类信息失败!"); } else { Msg.showInfo(FrmProblemHistroy.this, "获取小类信息时出现错误!"); } } } @Override protected void onCancelProgress(DialogInterface arg0) { if (thread != null) { thread.interrupt(); } } @Override protected void setLayout() { initActivity(); setContentView(R.layout.problemhis); spinProblemType = (Spinner) findViewById(R.id.spinProblemType); spinLargeClass = (Spinner) findViewById(R.id.spinLargeClass); spinSmallClass = (Spinner) findViewById(R.id.spinSmallClass); spinStatus = (Spinner) findViewById(R.id.spinStatus); btnQuery = (Button) findViewById(R.id.btnQuery); btnQueryReset = (Button) findViewById(R.id.btnQueryReset); txtUpdateTime = (EditText) findViewById(R.id.txtUpdateTime); txtEndTime = (EditText) findViewById(R.id.txtEndTime); TitleBar titlebar = (TitleBar) this.findViewById(R.id.titlebar); titlebar.setTitleText("案卷查询"); state_list = null; setstate(); try { while (state_list==null) Thread.currentThread().sleep(500); while (state_list.size()==0) Thread.currentThread().sleep(500); }catch (Exception e){ e.printStackTrace(); } ArrayAdapter<String> arr_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, state_list); arr_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinStatus.setAdapter(arr_adapter); List<String> data_list = new ArrayList<String>(); data_list.add("所有类型"); data_list.add("事件"); data_list.add("部件"); type_arr_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data_list); type_arr_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinProblemType.setAdapter(type_arr_adapter); } private void setstate() { thread = new BaseThread(baseHandler) { @Override public void runThread() { Message msg = thread.obtainMessage(); if (msg != null) { // msg.what = HandlerStatus.REQUEST_STATE; ResponseResult< List<Map<String,String>>> casestatelist; state_list = new ArrayList<String>(); try { casestatelist = Request.getRequest().casestatelist(); stateclass = casestatelist.getResultObj(); for (int i=0;i<stateclass.size();i++) state_list.add(stateclass.get(i).get("name")); state_list.add(0,"所有状态"); // if (casestatelist.isSuccess()) // { // msg.obj = data_list; // msg.arg1 = HandlerStatus.HANDLE_OK; // } // else if (casestatelist.isHadError()) // { // msg.arg1 = HandlerStatus.HANDLE_ERROR; // } // else // { // msg.arg1 = HandlerStatus.HANDLE_FAIL; // } } catch (Exception e) { // msg.arg1 = HandlerStatus.HANDLE_ERROR; // msg.obj = e.getMessage(); e.printStackTrace(); } // thread.sendMessage(msg); } } }; thread.start(); } private void changeLClassType(int typeSelectedIndex) { thread = new BaseThread(baseHandler) { @Override public void runThread() { Message msg = thread.obtainMessage(); if (msg != null) { msg.what = HandlerStatus.REQUEST_LCLASS; ResponseResult< List<Map<String,String>>> typelistResult = null; List<String> data_list = new ArrayList<String>(); try { if(spinProblemType.getSelectedItemPosition()==0){ data_list.add(0,"所有大类"); msg.obj = data_list; msg.arg1 = HandlerStatus.HANDLE_OK; }else{ String casetype = (String)spinProblemType.getSelectedItem(); if(casetype.equals("事件")) { typelistResult = Request.getRequest().typelist("1"); lclass = typelistResult.getResultObj(); for (int i=0;i<lclass.size();i++) data_list.add(lclass.get(i).get("typeName")); data_list.add(0,"所有大类"); } else if(casetype.equals("部件")){ typelistResult = Request.getRequest().typelist("2"); lclass = typelistResult.getResultObj(); for (int i=0;i<lclass.size();i++) data_list.add(lclass.get(i).get("typeName")); data_list.add(0,"所有大类"); } if (typelistResult.isSuccess()) { msg.obj = data_list; msg.arg1 = HandlerStatus.HANDLE_OK; } else if (typelistResult.isHadError()) { msg.arg1 = HandlerStatus.HANDLE_ERROR; } else { msg.arg1 = HandlerStatus.HANDLE_FAIL; } } } catch (Exception e) { msg.arg1 = HandlerStatus.HANDLE_ERROR; msg.obj = e.getMessage(); e.printStackTrace(); } thread.sendMessage(msg); } } }; thread.start(); } /** * @param lclassSelectedIndex */ private void changeSClassType(int lclassSelectedIndex) { if(lclassSelectedIndex == 0){ thread = new BaseThread(baseHandler) { @Override public void runThread() { Message msg = thread.obtainMessage(); if (msg != null) { msg.what = HandlerStatus.REQUEST_SCLASS; List<String> data_list = new ArrayList<String>(); data_list.add(0,"所有小类"); msg.obj = data_list; msg.arg1 = HandlerStatus.HANDLE_OK; } thread.sendMessage(msg); } }; thread.start(); } else { final String index = lclass.get(lclassSelectedIndex-1).get("id"); thread = new BaseThread(baseHandler) { @Override public void runThread() { Message msg = thread.obtainMessage(); if (msg != null) { msg.what = HandlerStatus.REQUEST_SCLASS; ResponseResult< List<Map<String,String>>> typelistResult = null; List<String> data_list = new ArrayList<String>(); try { String casetype = (String)spinProblemType.getSelectedItem(); if(casetype.equals("事件")){ typelistResult = Request.getRequest().typelistdetail("1",index); sclass = typelistResult.getResultObj(); for (int i=0;i<sclass.size();i++) data_list.add(sclass.get(i).get("typeDetailName")); data_list.add(0,"所有小类"); }else if(casetype.equals("部件")){ typelistResult = Request.getRequest().typelistdetail("2",index); sclass = typelistResult.getResultObj(); for (int i=0;i<sclass.size();i++) data_list.add(sclass.get(i).get("typeDetailName")); data_list.add(0,"所有小类"); } if (typelistResult.isSuccess()) { msg.obj = data_list; msg.arg1 = HandlerStatus.HANDLE_OK; } else if (typelistResult.isHadError()) { msg.arg1 = HandlerStatus.HANDLE_ERROR; } else { msg.arg1 = HandlerStatus.HANDLE_FAIL; } } catch (Exception e) { msg.arg1 = HandlerStatus.HANDLE_ERROR; msg.obj = e.getMessage(); e.printStackTrace(); } thread.sendMessage(msg); } } }; thread.start(); } } private boolean checkFieldValue(CaseModel caseModel, StringBuilder errorBuilder) { boolean result = false; String starttime = txtUpdateTime.getText().toString(); String endtime = txtEndTime.getText().toString(); String casetype = (String) spinProblemType.getSelectedItem(); if(casetype.equals("事件")){ caseModel.setCaseTypeId("1"); }else if(casetype.equals("部件")){ caseModel.setCaseTypeId("2"); }else{ caseModel.setCaseTypeId("noeorc"); } if(spinLargeClass.getSelectedItemPosition()==0){ caseModel.setCaseLClassId("nocasetype"); } else{ String caselclassid = lclass.get(spinLargeClass.getSelectedItemPosition()-1).get("typeCode"); caseModel.setCaseLClassId(caselclassid); } if(spinSmallClass.getSelectedItemPosition()==0){ caseModel.setCaseSClassId("nocasetypedetail"); } else{ String casesclassid = sclass.get(spinSmallClass.getSelectedItemPosition()-1).get("typeDetailCode"); caseModel.setCaseSClassId(casesclassid); } if(spinStatus.getSelectedItemPosition()==0){ String casestateid = "nostatus"; caseModel.setCaseStatusId(casestateid); }else{ String casestateid = stateclass.get(spinStatus.getSelectedItemPosition()-1).get("value"); caseModel.setCaseStatusId(casestateid); } if (!StringUtils.isNullOrEmpty(starttime)) { String uploadDateStr = starttime + " 00:00:00"; try { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); dateFormat.parse(uploadDateStr); caseModel.setStartTime(uploadDateStr); } catch (ParseException e) { errorBuilder.append("起始上报时间格式应为yyyy-MM-dd!\n"); } } if (!StringUtils.isNullOrEmpty(endtime)) { String endDateStr = endtime + " 23:59:59"; try { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); dateFormat.parse(endDateStr); caseModel.setEndTime(endDateStr); } catch (ParseException e) { errorBuilder.append("截止上报时间格式应为yyyy-MM-dd!\n"); } } if(endtime.compareTo(starttime)<0){ errorBuilder.append("截止上报时间应晚于起始上报时间!\n"); } if (errorBuilder.length() > 0) { result = false; } else { result = true; } return result; } /** * 重置所有查询条件 */ protected void resetQueryParameters() { spinProblemType.setSelection(0); changeLClassType(0); spinLargeClass.setSelection(0); changeSClassType(0); spinSmallClass.setSelection(0); spinStatus.setSelection(0); txtUpdateTime.setText(""); txtEndTime.setText(""); } protected void startQuery() { thread = new BaseThread(baseHandler) { @Override public void runThread() { final Message msg = thread.obtainMessage(); msg.what = HandlerStatus.REQUEST_GETPROBLEMHISTORY; StringBuilder errorBuilder = new StringBuilder(); caseModel = new CaseModel(); if (checkFieldValue(caseModel, errorBuilder)) { statusId = caseModel.getCaseStatusId(); caseTypeId = caseModel.getCaseTypeId(); caseLClassId = caseModel.getCaseLClassId(); caseSClassId = caseModel.getCaseSClassId(); uploadDate = caseModel.getStartTime(); endDate = caseModel.getEndTime(); ApiClent.queryListPage(caseTypeId, caseLClassId, caseSClassId, statusId, uploadDate, endDate,20,0, new ApiClent.ClientCallback() { @Override public void onSuccess(Object data) { try { JSONObject jsonObject = new JSONObject(data.toString()); JSONArray jsonarr = jsonObject.getJSONObject("data").getJSONArray("rows"); msg.obj = jsonarr; msg.arg1 = HandlerStatus.HANDLE_OK; } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); Log.i("list_error", e.getMessage()); msg.arg1 = HandlerStatus.HANDLE_FAIL; } } @Override public void onFailure(String message) { msg.arg1 = HandlerStatus.HANDLE_FAIL; } @Override public void onError(Exception e) { msg.arg1 = HandlerStatus.HANDLE_ERROR; } }); this.sendMessage(msg); } else { msg.arg1 = HandlerStatus.HANDLE_FORMATERROR; msg.obj = errorBuilder.toString(); } thread.sendMessage(msg); } }; showProgress("历史记录查询中。。。", "历史记录"); thread.start(); } }