Newer
Older
dxcgt / app / src / main / java / com / smartdot / cgt / activity / FrmProblemCheckFinish.java
wangxitong on 6 Apr 2021 10 KB first commit
package com.smartdot.cgt.activity;

import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.location.Location;
import android.os.Bundle;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.esri.core.geometry.Point;
import com.esri.core.map.FeatureSet;
import com.esri.core.tasks.SpatialRelationship;
import com.smartdot.cgt.R;
import com.smartdot.cgt.model.ResponseResult;
import com.smartdot.cgt.request.ApiClent;
import com.smartdot.cgt.request.Request;
import com.smartdot.cgt.util.ActivityTools;
import com.smartdot.cgt.util.ApplicationMain;
import com.smartdot.cgt.util.BaseThread;
import com.smartdot.cgt.util.GpsManager;
import com.smartdot.cgt.util.HandlerStatus;
import com.smartdot.cgt.util.MapUtil;
import com.smartdot.cgt.util.Msg;
import com.smartdot.cgt.util.PointD;
import com.smartdot.cgt.view.ImagesLayout;
import com.smartdot.cgt.view.TitleBar;

import org.json.JSONException;
import org.json.JSONObject;

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class FrmProblemCheckFinish extends BaseActivity
{

	private TitleBar titlebar;
	private BaseThread thread;
	private HashMap<String, BaseThread> threadList = new HashMap<String, BaseThread>(5);
	JSONObject casejson;
	TextView txtcasenum,txtcasetype,txtcaselclass,txtcasesclass;
	TextView txtshequ,txtaddress,txtdetail,txtsuggest,txttime;
	TextView txtcasestate;
	private View btnGetPosition;
	private ImagesLayout imagesLayout1;
	private LinearLayout mainLayout1;
	public String nowstate,processId;
	public int imgcount=0;
	private String longitude,latitude;
	Long id;
	@Override
	protected void setLayout()
	{
		initActivity();
		setContentView(R.layout.problemcheckfinish);

		titlebar = (TitleBar) this.findViewById(R.id.titlebar);
		titlebar.setTitleText("案卷详情");

		txtcasenum = (TextView) findViewById(R.id.casenum);
		txtcasetype = (TextView) findViewById(R.id.casetype);
		txtcaselclass = (TextView) findViewById(R.id.caselclass);
		txtcasesclass = (TextView) findViewById(R.id.casesclass);
		txtshequ = (TextView) findViewById(R.id.spinSq);
		txtaddress = (TextView) findViewById(R.id.txtAddress);
		txtdetail = (TextView) findViewById(R.id.txtEventDesc);
		txtsuggest = (TextView) findViewById(R.id.txtsuggest);
		txttime = (TextView) findViewById(R.id.txttime);
		btnGetPosition = (View) findViewById(R.id.btnGetPosition);
		txtcasestate = (TextView) findViewById(R.id.casestate);

		imagesLayout1 = (ImagesLayout) ApplicationMain.getInstance().inflateView(R.layout.imagelayout1);
		mainLayout1 = (LinearLayout) findViewById(R.id.layout_pic1);
		mainLayout1.addView(imagesLayout1);

	}
	@Override
	protected void doInit()
	{
//		getPosition();
		initview();
	}

	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
	}

	@Override
	protected void addEventListener()
	{
		btnGetPosition.setOnClickListener(onClickListener);

		imagesLayout1.setOnPreviewImage(imagesLayout1.new OnPreviewImage()
		{
			@Override
			public void previewImage(int viewIndex)
			{

				Intent intent = new Intent(FrmProblemCheckFinish.this, FrmViewImage.class);
				intent.putExtra(FrmViewImage.BITMAPKEY, imagesLayout1.getSelectedImagesPath());
				intent.putExtra(FrmViewImage.FIRSTSHOWINDEX, viewIndex);
				startActivity(intent);
			}
		});
	}

	private OnClickListener onClickListener = new OnClickListener() {
		@Override
		public void onClick(View arg0) {
			if (arg0 == btnGetPosition) {
				//地图和百度地图切换
				int getLocationId = ActivityTools.GETLOCATION_NONE;
				Intent intent = new Intent();
				intent.setClass(FrmProblemCheckFinish.this,FrmMap.class);
				Bundle bundle = new Bundle();
				bundle.putString("lng",longitude);
				bundle.putString("lat",latitude);
				intent.putExtras(bundle);
				startActivity(intent);
			}
		}
	};


	private boolean checkIsNeedCloseProgress()
	{
		boolean canCloseProgress = true;
		for (BaseThread thread : threadList.values())
		{
			if (thread != null && thread.getIsThreadGoing())
			{
				canCloseProgress = false;
			}
		}
		if (canCloseProgress)
		{
			try
			{
				closeProgress();
			}
			catch (Exception e)
			{
				e.printStackTrace();
			}
		}
		return canCloseProgress;
	}

	@SuppressWarnings("unchecked")
	@Override
	protected void handleMessage(Message msg)
	{
		if(msg.what == HandlerStatus.REQUEST_PIC0){
			if (msg.arg1 == HandlerStatus.HANDLE_OK) {
				Bitmap bitmap = (Bitmap) msg.obj;
				imagesLayout1.addSelectedImage(bitmap);
			}
			else if (msg.arg1 == HandlerStatus.HANDLE_FAIL)
			{
				Msg.showInfo(FrmProblemCheckFinish.this, "案卷图片加载失败!");
			}
			checkIsNeedCloseProgress();
		}else if(msg.what == HandlerStatus.REQUEST_PIC1){
			if (msg.arg1 == HandlerStatus.HANDLE_OK) {
				Bitmap bitmap = (Bitmap) msg.obj;
				imagesLayout1.addSelectedImage(bitmap);
			}
			else if (msg.arg1 == HandlerStatus.HANDLE_FAIL)
			{
				Msg.showInfo(FrmProblemCheckFinish.this, "案卷图片加载失败!");
			}
			checkIsNeedCloseProgress();
		}else if(msg.what == HandlerStatus.REQUEST_PIC2){
			if (msg.arg1 == HandlerStatus.HANDLE_OK) {
				Bitmap bitmap = (Bitmap) msg.obj;
				imagesLayout1.addSelectedImage(bitmap);
			}
			else if (msg.arg1 == HandlerStatus.HANDLE_FAIL)
			{
				Msg.showInfo(FrmProblemCheckFinish.this, "案卷图片加载失败!");
			}
			checkIsNeedCloseProgress();
		}else if(msg.what ==HandlerStatus.REQUEST_DETAIL) {
			if (msg.arg1 == HandlerStatus.HANDLE_OK) {
				casejson = (JSONObject) msg.obj;
				try {
					txtcasenum.setText(casejson.getString("caseid"));
					txtcasetype.setText(casejson.getString("eorcName"));
					txtcaselclass.setText(casejson.getString("casetypeName"));
					txtcasesclass.setText(casejson.getString("casetypeDetailName"));
					txtcasestate.setText(casejson.getString("caseStateName"));
					txtsuggest.setText(casejson.getString("registerRemarks"));
					txttime.setText(casejson.getString("nodeLimittime"));
                    txtshequ.setText(casejson.getString("communityName"));
					txtaddress.setText(casejson.getString("fieldintro"));
					txtdetail.setText(casejson.getString("description"));
					nowstate = casejson.getString("caseState");
					processId = casejson.getString("processId");
					longitude = casejson.getString("lng");
					latitude = casejson.getString("lat");

					String fileIdVerify = casejson.getString("fileIdVerify").replace(" ", "").replace("\\", "/");
					List<String> list = Arrays.asList(fileIdVerify.split(","));
					if (!fileIdVerify.equals("")) {
						initpic(list);
					} else {
						mainLayout1.setVisibility(View.GONE);
					}
				} catch (JSONException e) {
					e.printStackTrace();
				}
			} else if (msg.arg1 == HandlerStatus.HANDLE_FAIL) {
				Msg.showInfo(FrmProblemCheckFinish.this, "获取案卷详情失败!");
			} else {
				Msg.showInfo(FrmProblemCheckFinish.this, "获取案卷详情时出现错误!");
			}
			checkIsNeedCloseProgress();
		}
	}

	private void initpic(final List<String> list){
		int length = list.size();
		if(length>3) length = 3;
		for(int i=0; i<length; i++) {
			final int handlerStatusId = HandlerStatus.REQUEST_PIC0 + i;
			final int nowIndex = i;
			thread = new BaseThread(baseHandler)
			{
				@Override
				public void runThread()
				{
					final Message msg = thread.obtainMessage();
					msg.what = handlerStatusId;
					if (msg != null)
					{
						try {
							String urlStr = ApplicationMain.getInstance().getCgtConfig().getRequestUrl()+"/static/"+list.get(nowIndex);
							URL url = new URL(urlStr);
							HttpURLConnection conn = (HttpURLConnection) url.openConnection();
							conn.setConnectTimeout(5000);
							conn.setRequestProperty("token",ApplicationMain.getInstance().getCgtConfig().gettokenStr());
							conn.setRequestMethod("GET");
							if (conn.getResponseCode() == 200) {
								InputStream inputStream = conn.getInputStream();
								Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
								if(bitmap!=null){
									msg.obj = bitmap;
									msg.arg1 = HandlerStatus.HANDLE_OK;
								}
							}
						}catch (MalformedURLException e){
							e.printStackTrace();
							msg.arg1 = HandlerStatus.HANDLE_FAIL;
						}catch (IOException e){
							e.printStackTrace();
							msg.arg1 = HandlerStatus.HANDLE_FAIL;
						}
						this.sendMessage(msg);
					}
				}
			};
			thread.start();
		}
	}
	private void initview(){
		thread = new BaseThread(baseHandler)
		{
			@Override
			public void runThread()
			{
				final Message msg = thread.obtainMessage();
				if (msg != null)
				{
					msg.what = HandlerStatus.REQUEST_DETAIL;
					Bundle bundle=getIntent().getExtras();
					id = bundle.getLong("id");
					ApiClent.caseDetail(id, new ApiClent.ClientCallback() {
						@Override
						public void onSuccess(Object data)
						{
							try {
								JSONObject jsonObject = new JSONObject(data.toString());
								JSONObject json = jsonObject.getJSONArray("data").getJSONObject(0);
								msg.obj = json;
								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);
				}
			}
		};
		thread.start();
	}

	private OnClickListener btnOnClick = new OnClickListener()
	{
		@Override
		public void onClick(View v){
			switch (v.getId()) {
				default:
					break;
			}
		}
	};


	@Override
	protected void onCancelProgress(DialogInterface arg0)
	{
		for (BaseThread thread : threadList.values())
		{
			if (thread != null)
			{
				thread.interrupt();
			}
		}
		threadList.clear();
	}

	private void finishActivity(boolean canClose)
	{
		this.finishActivity(canClose, false);
	}

	private void finishActivity(boolean canClose, boolean needCacheAudio)
	{
		if (canClose)
		{
			FrmProblemCheckFinish.this.finish();
		}
	}
}