Newer
Older
dxcgt / app / src / main / java / com / smartdot / cgt / activity / FrmProblemHistroy.java
wangxitong on 6 Apr 2021 17 KB first commit
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();

	}
}