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

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Array;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.location.Location;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.provider.MediaStore;
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.ImageButton;
import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.TextView;
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.BitmapConvert;
import com.smartdot.cgt.util.HandlerStatus;
import com.smartdot.cgt.util.Msg;
import com.smartdot.cgt.util.StringUtils;
import com.smartdot.cgt.view.ImagesLayout;
import com.smartdot.cgt.view.TitleBar;
import org.json.JSONException;
import org.json.JSONObject;

public class FrmProblemCheckDetail extends BaseActivity
{
    private TitleBar titlebar;
    private BaseThread thread;
    private HashMap<String, BaseThread> threadList = new HashMap<String, BaseThread>(5);
    private final String THREAD_SUBMIT_FIELD = "THREAD_SUBMIT_FIELD";
    private final String THREAD_SUBMIT_PICTURE0 = "THREAD_SUBMIT_PICTURE0";
    private Spinner spinProblemType,spinLargeClass,spinSmallClass;
    private String caseLClass = null,caseSClass = null;
    private List<String> picpaths;
    JSONObject casejson;
    TextView txtcasenum,txtcasetype,txtcaselclass,txtcasesclass;
    TextView txtshequ,txtaddress,txtdetail,txtsuggest,txttime;
    EditText txtremarks,editAddress;
    private View btnGetPosition;
    private ImagesLayout imagesLayout,imagesLayout1;
    private LinearLayout mainLayout,mainLayout1;
    private Spinner spinCheckResult;
    public String nowstate,processId;
    private ImageButton closeBtn1,closeBtn2,closeBtn3;
    public List<Map<String,String>> nextstate;
    private Button submit_bt;
    private View btnGetImage;
    private static int SELECT_PICTURE = 0,TAKE_PHOTO = 1;
    public int imgcount=0;
    private String longitude,latitude,shequid,gridId;
    Long id;
    private String eventId;
    private boolean hascasetype;
    public List<Map<String,String>> lclass,sclass;
    ArrayAdapter<String> type_arr_adapter;
    @Override
    protected void setLayout()
    {
        initActivity();
        setContentView(R.layout.problemcheckdetail);

        titlebar = (TitleBar) this.findViewById(R.id.titlebar);
        titlebar.setTitleText(R.string.module_problemcheck);

        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);
        txtsuggest = (TextView) findViewById(R.id.txtsuggest);
        txttime = (TextView) findViewById(R.id.txttime);
        txtdetail = (TextView) findViewById(R.id.txtEventDesc);
        txtremarks = (EditText) findViewById(R.id.txtOpinion);
        editAddress = (EditText) findViewById(R.id.editAddress);
        btnGetPosition = (View) findViewById(R.id.btnGetPosition);
        submit_bt = (Button)findViewById(R.id.submit_bt);
//        imageView = (ImageView) ApplicationMain.getInstance().inflateView(R.layout.imagelayout1);
        imagesLayout1 = (ImagesLayout) ApplicationMain.getInstance().inflateView(R.layout.imagelayout1);
        mainLayout1 = (LinearLayout) findViewById(R.id.layout_pic1);
        mainLayout1.addView(imagesLayout1);
        imagesLayout = (ImagesLayout) ApplicationMain.getInstance().inflateView(R.layout.imagelayout);
        closeBtn1 = (ImageButton) imagesLayout.findViewById(R.id.closeBtn1);
        closeBtn2 = (ImageButton) imagesLayout.findViewById(R.id.closeBtn2);
        closeBtn3 = (ImageButton) imagesLayout.findViewById(R.id.closeBtn3);
        btnGetImage = (View) findViewById(R.id.btnGetImage);
        mainLayout = (LinearLayout) findViewById(R.id.layout_pic);
        mainLayout.addView(imagesLayout);
        spinCheckResult = (Spinner)findViewById(R.id.spinCheckResult);
        spinCheckResult.setOnItemSelectedListener(onItemSelectedListener);
        imagesLayout.setVisibility(View.GONE);
        submit_bt.setClickable(true);
        spinProblemType = (Spinner) findViewById(R.id.spinProblemType);
        spinLargeClass = (Spinner) findViewById(R.id.spinLargeClass);
        spinSmallClass = (Spinner) findViewById(R.id.spinSmallClass);
        List<String> data_list = new ArrayList<String>();
        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);

    }
    @Override
    protected void doInit()
    {
//        getPosition();
        initview();
    }
    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
                    {
                        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"));
                        }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"));
                        }
                        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)
    {
        final String index = lclass.get(lclassSelectedIndex).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"));

                        }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"));
                        }
                        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 AdapterView.OnItemSelectedListener onItemSelectedListener = new AdapterView.OnItemSelectedListener()
    {
        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3)
        {
            TextView v1 = (TextView) arg1;
            if (arg0 == spinCheckResult)
            {
                txtremarks.setText(nextstate.get(arg2).get("nextOperation"));
            }else if (arg0 == spinProblemType)
            {
                spinProblemType.getChildAt(0).setVisibility(View.VISIBLE);
                caseLClass = null;
                caseSClass = null;
                changeLClassType(arg2);
                if(arg2 == 1){
                    spinLargeClass.setClickable(false);
                    spinSmallClass.setClickable(false);
                    spinLargeClass.setBackgroundResource(R.drawable.probleminput_et);
                    spinSmallClass.setBackgroundResource(R.drawable.probleminput_et);
                }else if(arg2 == 0){
                    spinLargeClass.setClickable(true);
                    spinSmallClass.setClickable(true);
                    spinLargeClass.setBackgroundResource(R.drawable.probleminput_spinner);
                    spinSmallClass.setBackgroundResource(R.drawable.probleminput_spinner);
                }
            }
            else if (arg0 == spinLargeClass)
            {
                changeSClassType(arg2);
                if(spinProblemType.getSelectedItemPosition()==0){
                    v1.setTextColor(Color.parseColor("#000000"));
                }else if(spinProblemType.getSelectedItemPosition()==1){
                    v1.setTextColor(Color.parseColor("#999999"));
                }
            }
            else if (arg0 == spinSmallClass)
            {
                if(spinProblemType.getSelectedItemPosition()==0){
                    v1.setTextColor(Color.parseColor("#000000"));
                }else if(spinProblemType.getSelectedItemPosition()==1){
                    v1.setTextColor(Color.parseColor("#999999"));
                }
            }
        }
        @Override
        public void onNothingSelected(AdapterView<?> arg0)
        {
        }
    };


    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
        if (resultCode == RESULT_OK) {
            if (requestCode == SELECT_PICTURE) {
                Bitmap yourSelectedImage = getImageFromReturnIntent(intent);
                if (yourSelectedImage != null) {
                    imagesLayout.addSelectedImage(yourSelectedImage);
                    if (imgcount < 3) {
                        imgcount++;
                        if (imgcount == 1) closeBtn1.setVisibility(View.VISIBLE);
                        else if (imgcount == 2) closeBtn2.setVisibility(View.VISIBLE);
                        else if (imgcount == 3) closeBtn3.setVisibility(View.VISIBLE);
                    }
                }
            } else if (requestCode == TAKE_PHOTO) {
                Bitmap bitmap = getImageFromCameraIntent(intent);
                if (bitmap != null) {
                    imagesLayout.addSelectedImage(bitmap);
                    if (imgcount < 3) {
                        imgcount++;
                        if (imgcount == 1) closeBtn1.setVisibility(View.VISIBLE);
                        else if (imgcount == 2) closeBtn2.setVisibility(View.VISIBLE);
                        else if (imgcount == 3) closeBtn3.setVisibility(View.VISIBLE);
                    }
                }
            }else if (requestCode == ActivityTools.GETLOCATION_EVENT
                    || requestCode == ActivityTools.GETLOCATION_PART)
            {
                Bundle bundle = intent.getExtras();
                if (bundle != null && bundle.containsKey("MapReturn_X"))
                {
                    longitude=String.valueOf(bundle.get("MapReturn_X"));
                    latitude=String.valueOf(bundle.get("MapReturn_Y"));
                }
                gridId = bundle.getString(MapReturn_GridId);
                shequid = bundle.getString(MapReturn_SheQuId);
                txtshequ.setText(bundle.getString(MapReturn_SheQu));
                caseLClass = bundle.getString(MapReturn_LClass);
                caseSClass = bundle.getString(MapReturn_SClass);
                if (!StringUtils.isNullOrEmpty(caseLClass) && !StringUtils.isNullOrEmpty(caseSClass))
                {
                    for(int i=0; i<lclass.size(); i++){
                        if(caseLClass.equals(lclass.get(i).get("typeName"))){
                            spinLargeClass.setSelection(i,true);
                            changeSClassType(i);
                            break;
                        }
                    }
                }
                Msg.showInfo(FrmProblemCheckDetail.this, "已获取指定点信息!");
            }
        }
    }

    @Override
    protected void addEventListener()
    {
        spinProblemType.setOnItemSelectedListener(onItemSelectedListener);
        spinProblemType.setSelection(0, true);
        spinLargeClass.setSelection(0, true);
        spinLargeClass.setOnItemSelectedListener(onItemSelectedListener);
        spinSmallClass.setSelection(0, true);
        spinSmallClass.setOnItemSelectedListener(onItemSelectedListener);

        btnGetPosition.setOnClickListener(onClickListener);
        submit_bt.setOnClickListener(onClickListener);
        btnGetImage.setOnClickListener(onClickListener);
        closeBtn1.setOnClickListener(onClickListener);
        closeBtn2.setOnClickListener(onClickListener);
        closeBtn3.setOnClickListener(onClickListener);

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

                Intent intent = new Intent(FrmProblemCheckDetail.this, FrmViewImage.class);
                intent.putExtra(FrmViewImage.BITMAPKEY, imagesLayout1.getSelectedImagesPath());
                intent.putExtra(FrmViewImage.FIRSTSHOWINDEX, viewIndex);
                startActivity(intent);
            }
        });
        imagesLayout.setOnCountChange(imagesLayout.new OnCountChange()
        {
            @Override
            public void getNowCount(int nowCount)
            {
                imagesLayout.setVisibility(nowCount == 0 ? View.GONE
                        : View.VISIBLE);
                btnGetImage.setEnabled(nowCount < 3);
                imagesLayout.requestFocus();
            }
        });
        imagesLayout.setOnPreviewImage(imagesLayout.new OnPreviewImage()
        {
            @Override
            public void previewImage(int viewIndex)
            {

                Intent intent = new Intent(FrmProblemCheckDetail.this, FrmViewImage.class);
                intent.putExtra(FrmViewImage.BITMAPKEY, imagesLayout


                        .getSelectedImagesPath());
                intent.putExtra(FrmViewImage.FIRSTSHOWINDEX, viewIndex);
                startActivity(intent);
            }
        });
    }

    private OnClickListener onClickListener = new OnClickListener() {
        @Override
        public void onClick(View arg0) {
            if (arg0 == btnGetPosition) {
                if(hascasetype){
                    //地图和百度地图切换
                    int getLocationId = ActivityTools.GETLOCATION_NONE;
                    Intent intent = new Intent();
                    intent.setClass(FrmProblemCheckDetail.this,FrmMap.class);
                    Bundle bundle = new Bundle();
                    bundle.putString("lng",longitude);
                    bundle.putString("lat",latitude);
                    intent.putExtras(bundle);
                    startActivity(intent);
                }else{
                    //地图和百度地图切换
                    String type = spinProblemType.getSelectedItem().toString();
                    int getLocationId;
                    if ("部件".equals(type))
                    {
                        getLocationId = ActivityTools.GETLOCATION_PART;
                        Intent intent = new Intent(FrmProblemCheckDetail.this, FrmMap.class);
                        intent.putExtra("needGetLocation", getLocationId);
                        startActivityForResult(intent, getLocationId);
                    }
                    else if ("事件".equals(type))
                    {
                        getLocationId = ActivityTools.GETLOCATION_EVENT;
                        Intent intent = new Intent(FrmProblemCheckDetail.this, FrmMap.class);
                        intent.putExtra("needGetLocation", getLocationId);
                        startActivityForResult(intent, getLocationId);
                    }
                }
            }else if(arg0 == submit_bt){
                boolean bsub = true;
                submit_bt.setClickable(false);
                if(StringUtils.isNullOrEmpty(shequid) && !hascasetype){
                    Msg.showInfo(FrmProblemCheckDetail.this,"请先通过地图获取社区信息!\n");
                    bsub = false;
                }
                if(StringUtils.isNullOrEmpty(editAddress.getText().toString().trim())){
                    Msg.showInfo(FrmProblemCheckDetail.this,"请填写发生地点!\n");
                }
                if(editAddress.getText().toString().length()>50){
                    Msg.showInfo(FrmProblemCheckDetail.this,"发生地点不能超过50字!\n");
                }
                if(StringUtils.isNullOrEmpty(txtremarks.getText().toString().trim())){
                    Msg.showInfo(FrmProblemCheckDetail.this, "请填写核实意见!\n");
                    bsub = false;
                }
                if(txtremarks.getText().toString().length()>50){
                    Msg.showInfo(FrmProblemCheckDetail.this, "核实意见不能超过50字!\n");
                }
                if (imagesLayout.getSelectedImageCount() <2)
                {
                    Msg.showInfo(FrmProblemCheckDetail.this, "请上传二张图片!\n");
                    bsub = false;
                }
                if(bsub){
                    picpaths = new ArrayList<String>();
                    submitPicture();
                    submitcheck();
                }else{
                    submit_bt.setClickable(true);
                }
            }else if (arg0 == btnGetImage)
            {// 点击获取图片
                ActivityTools.getInstance().takePicture(SELECT_PICTURE,
                        TAKE_PHOTO, FrmProblemCheckDetail.this);
            }
            else if(arg0 == closeBtn1) {
                imagesLayout.removeSelectedImage(0);
                if(imgcount==1) closeBtn1.setVisibility(View.INVISIBLE);
                else if(imgcount==2) closeBtn2.setVisibility(View.INVISIBLE);
                else if(imgcount==3) closeBtn3.setVisibility(View.INVISIBLE);
                imgcount--;
            }
            else if(arg0 == closeBtn2) {
                imagesLayout.removeSelectedImage(1);
                if(imgcount==1) closeBtn1.setVisibility(View.INVISIBLE);
                else if(imgcount==2) closeBtn2.setVisibility(View.INVISIBLE);
                else if(imgcount==3) closeBtn3.setVisibility(View.INVISIBLE);
                imgcount--;
            }
            else if(arg0 == closeBtn3) {
                imagesLayout.removeSelectedImage(2);
                if(imgcount==1) closeBtn1.setVisibility(View.INVISIBLE);
                else if(imgcount==2) closeBtn2.setVisibility(View.INVISIBLE);
                else if(imgcount==3) closeBtn3.setVisibility(View.INVISIBLE);
                imgcount--;
            }
        }
    };
    public File getFile(Bitmap bm) {
        Long random = System.currentTimeMillis();
        String randomstr = random.toString();
        String path = Environment.getExternalStorageDirectory() + "/Ask";
        File dirFile = new File(path);
        if(!dirFile.exists()){
            dirFile.mkdir();
        }
        File myCaptureFile = new File(path +"/" + randomstr +".jpg");
        try {
            BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(myCaptureFile));
            bm.compress(Bitmap.CompressFormat.JPEG, 80, bos);
            bos.flush();
            bos.close();
        }catch (Exception e){
            e.printStackTrace();
        }
        return myCaptureFile;
    }

    private void submitPicture(){
        final Bitmap[] bitmapList = imagesLayout.getSelectedImages();
        BaseThread thread = new BaseThread(baseHandler) {
            @Override
            public void runThread() {
                final Message msg = this.obtainMessage();
                if (msg != null) {
                    msg.what = HandlerStatus.SUBMIT_PICTURE0;
                    try {
                        for (int i = 0, count = imagesLayout.getSelectedImageCount(); i < count; i++){
                            final int nowIndex = i;
                            File file = getFile(bitmapList[nowIndex]);
                            ApiClent.fileupload(file, new ApiClent.ClientCallback() {
                                @Override
                                public void onSuccess(Object data)
                                {
                                    try {
                                        JSONObject jsonObject = new JSONObject(data.toString());
                                        picpaths.add(jsonObject.getString("data"));
                                        msg.arg1 = HandlerStatus.HANDLE_OK;
                                    } catch (JSONException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                        Log.i("fileupload", e.getMessage());
                                        msg.arg1 = HandlerStatus.HANDLE_FAIL;
                                    }
                                }
                                @Override
                                public void onFailure(String message) {
                                    System.out.println("fileupload.message------------------ " + message);
                                    msg.arg1 = HandlerStatus.HANDLE_FAIL;
                                }
                                @Override
                                public void onError(Exception e) {
                                    System.out.println("fileupload.e.getMessage()------------------ " + e.getMessage());
                                    msg.arg1 = HandlerStatus.HANDLE_FAIL;
                                }
                            });
                        }
                    }
                    catch (Exception e)
                    {
                        msg.arg1 = HandlerStatus.HANDLE_ERROR;
                    }
                    this.sendMessage(msg);
                }
            }
        };
        showProgress("图片上传中。。。", "案卷录入");
        thread.start();
        final String key = "THREAD_SUBMIT_PICTURE0";
        threadList.put(key, thread);
    }


    private void submitcheck(){
        thread = new BaseThread(baseHandler)
        {
            @Override
            public void runThread()
            {
                final Message msg = thread.obtainMessage();
                if (msg != null)
                {
                    msg.what = HandlerStatus.REQUEST_SUBMITCHECK;
                    try
                    {
                        while(picpaths.size()<imagesLayout.getSelectedImageCount()){
                            Thread.currentThread().sleep(500);
                        }
                        String picstr ="" ;
                        for(int i=0; i<picpaths.size(); i++){
                            if(i>0) picstr+=",";
                            picstr+=picpaths.get(i);
                        }
                        String changeState = nextstate.get(spinCheckResult.getSelectedItemPosition()).get("nextState");
                        String remarkers = txtremarks.getText().toString().trim();
                        if(hascasetype){
                            ApiClent.completeCaseTask(processId,id.toString(),nowstate, changeState,
                                    remarkers,picstr,new ApiClent.ClientCallback() {
                                        @Override
                                        public void onSuccess(Object data)
                                        {
                                            try {
                                                JSONObject jsonObject = new JSONObject(data.toString());
                                                msg.arg1 = HandlerStatus.HANDLE_OK;
                                            } catch (JSONException e) {
                                                // TODO Auto-generated catch block
                                                e.printStackTrace();
                                                Log.i("inputNewCase", e.getMessage());
                                                msg.arg1 = HandlerStatus.HANDLE_FAIL;
                                            }
                                        }
                                        @Override
                                        public void onFailure(String message) {
                                            System.out.println("inputNewCase.message------------------ " + message);
                                            msg.arg1 = HandlerStatus.HANDLE_FAIL;
                                        }
                                        @Override
                                        public void onError(Exception e) {
                                            System.out.println("inputNewCase.e.getMessage()------------------ " + e.getMessage());
                                            msg.arg1 = HandlerStatus.HANDLE_FAIL;
                                        }
                                    });
                        }else{
                            String casetype = (String)spinProblemType.getSelectedItem();
                            String eorc;
                            if(casetype.equals("事件")){
                                eorc = "1";
                            }else{
                                eorc = "2";
                            }
                            String caselclassid = lclass.get(spinLargeClass.getSelectedItemPosition()).get("typeCode");
                            String casesclassid = sclass.get(spinSmallClass.getSelectedItemPosition()).get("typeDetailCode");

                            ApiClent.completeCaseCheck(processId,id.toString(),nowstate, changeState,
                                    remarkers,picstr,eorc,caselclassid,casesclassid,longitude,latitude,"1",
                                    gridId.substring(0,6),gridId.substring(0,9),shequid,gridId,
                                    editAddress.getText().toString().trim(), new ApiClent.ClientCallback() {
                                        @Override
                                        public void onSuccess(Object data)
                                        {
                                            try {
                                                JSONObject jsonObject = new JSONObject(data.toString());
                                                msg.arg1 = HandlerStatus.HANDLE_OK;
                                            } catch (JSONException e) {
                                                // TODO Auto-generated catch block
                                                e.printStackTrace();
                                                Log.i("inputNewCase", e.getMessage());
                                                msg.arg1 = HandlerStatus.HANDLE_FAIL;
                                            }
                                        }
                                        @Override
                                        public void onFailure(String message) {
                                            System.out.println("inputNewCase.message------------------ " + message);
                                            msg.arg1 = HandlerStatus.HANDLE_FAIL;
                                        }
                                        @Override
                                        public void onError(Exception e) {
                                            System.out.println("inputNewCase.e.getMessage()------------------ " + e.getMessage());
                                            msg.arg1 = HandlerStatus.HANDLE_FAIL;
                                        }
                                    });
                        }
                    }
                    catch (Exception e)
                    {
                        msg.arg1 = HandlerStatus.HANDLE_ERROR;
                    }
                    this.sendMessage(msg);
                }
            }
        };
        showProgress("核实提交中。。。", "案卷核实");
        thread.start();
        threadList.put(THREAD_SUBMIT_FIELD, thread);
    }

    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(FrmProblemCheckDetail.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(FrmProblemCheckDetail.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(FrmProblemCheckDetail.this, "案卷图片加载失败!");
            }
            checkIsNeedCloseProgress();
        }else if (msg.what == HandlerStatus.SUBMIT_PICTURE0)
        {
            threadList.get(THREAD_SUBMIT_PICTURE0).interrupt();
            if (msg.arg1 == HandlerStatus.HANDLE_OK)
            {
//                Msg.showInfo(FrmProblemCheckDetail.this, "图片上传成功!");
                finishActivity(checkIsNeedCloseProgress());
            }
            else if (msg.arg1 == HandlerStatus.HANDLE_FAIL)
            {
                Msg.showInfo(FrmProblemCheckDetail.this, "上传图片失败!");
            }
            else
            {
                Msg.showInfo(FrmProblemCheckDetail.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"));
                    if(casejson.getInt("source") == 12 || casejson.getInt("source") == 11){
                        hascasetype = false;
                        spinProblemType.setVisibility(View.VISIBLE);
                        spinLargeClass.setVisibility(View.VISIBLE);
                        spinSmallClass.setVisibility(View.VISIBLE);
                        editAddress.setVisibility(View.VISIBLE);
                        txtcasetype.setVisibility(View.GONE);
                        txtcaselclass.setVisibility(View.GONE);
                        txtcasesclass.setVisibility(View.GONE);
                        txtaddress.setVisibility(View.GONE);
                    }else{
                        hascasetype = true;
                    }
                    txtcasesclass.setText(casejson.getString("casetypeDetailName"));
                    txtshequ.setText(casejson.getString("communityName"));
                    txtsuggest.setText(casejson.getString("registerRemarks"));
                    txttime.setText(casejson.getString("nodeLimittime"));
                    txtaddress .setText(casejson.getString("fieldintro"));
                    editAddress .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);
                    }
                    initspin();
                }catch (JSONException e){
                    e.printStackTrace();
                }
            }
            else if (msg.arg1 == HandlerStatus.HANDLE_FAIL)
            {
                Msg.showInfo(FrmProblemCheckDetail.this, "获取案卷详情失败!");
            }
            else
            {
                Msg.showInfo(FrmProblemCheckDetail.this, "获取案卷详情时出现错误!");
            }
            checkIsNeedCloseProgress();
        }else if (msg.what == HandlerStatus.REQUEST_SPINSTATE)
        {

            if (msg.arg1 == HandlerStatus.HANDLE_OK)
            {
                try {
                    List<String> data_list = (List<String>) msg.obj;
                    ArrayAdapter<String> arr_adapter = new ArrayAdapter<String>(FrmProblemCheckDetail.this,
                            android.R.layout.simple_spinner_item, data_list);
                    arr_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                    spinCheckResult.setAdapter(arr_adapter);
                    arr_adapter.notifyDataSetChanged();
                    spinCheckResult.setSelection(0,true);
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
            else if (msg.arg1 == HandlerStatus.HANDLE_FAIL)
            {
                Msg.showInfo(FrmProblemCheckDetail.this, "获取核实情况信息失败!");
            }
            else
            {
                Msg.showInfo(FrmProblemCheckDetail.this, "获取核实情况信息时出现错误!");
            }
            checkIsNeedCloseProgress();
        }else if (msg.what == HandlerStatus.REQUEST_SUBMITCHECK)
        {
            threadList.get(THREAD_SUBMIT_FIELD).interrupt();
            if (msg.arg1 == HandlerStatus.HANDLE_OK)
            {
                Msg.showInfo(FrmProblemCheckDetail.this, "上报成功!");
                finishActivity(checkIsNeedCloseProgress());
            }
            else if (msg.arg1 == HandlerStatus.HANDLE_FAIL)
            {
                Msg.showInfo(FrmProblemCheckDetail.this, "案卷核实失败!");
            }
            else
            {
                Msg.showInfo(FrmProblemCheckDetail.this, "案卷核实时出现错误!");
            }
            checkIsNeedCloseProgress();
        }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>(FrmProblemCheckDetail.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(FrmProblemCheckDetail.this, "获取大类信息失败!");
            }
            else
            {
                Msg.showInfo(FrmProblemCheckDetail.this, "获取大类信息时出现错误!");
            }
            checkIsNeedCloseProgress();
        }
        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>(FrmProblemCheckDetail.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();
                    if(!StringUtils.isNullOrEmpty(caseLClass)){
                        for(int i=0; i<sclass.size(); i++){
                            if(caseSClass.equals(sclass.get(i).get("typeDetailName"))){
                                spinSmallClass.setSelection(i,true);
                                break;
                            }
                        }
                    }else{
                        spinSmallClass.setSelection(0,true);
                    }
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
            else if (msg.arg1 == HandlerStatus.HANDLE_FAIL)
            {
                Msg.showInfo(FrmProblemCheckDetail.this, "获取小类信息失败!");
            }
            else
            {
                Msg.showInfo(FrmProblemCheckDetail.this, "获取小类信息时出现错误!");
            }
            checkIsNeedCloseProgress();
        }
    }

    private void initspin(){
        thread = new BaseThread(baseHandler)
        {
            @Override
            public void runThread()
            {
                Message msg = thread.obtainMessage();
                if (msg != null)
                {
                    msg.what = HandlerStatus.REQUEST_SPINSTATE;
                    ResponseResult< List<Map<String,String>>> typelistResult = null;
                    List<String> data_list = new ArrayList<String>();
                    try
                    {
                        typelistResult = Request.getRequest().nextNodes(nowstate);
                        nextstate = typelistResult.getResultObj();
                        if (typelistResult.isSuccess())
                        {
                            for (int i=0;i<nextstate.size();i++)
                                data_list.add(nextstate.get(i).get("nextOperation"));
                            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 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 View.OnClickListener btnOnClick = new View.OnClickListener()
    {
        @Override
        public void onClick(View v){
            switch (v.getId()) {
                default:
                    break;
            }
        }
    };

    /**
     //	 * @param imageReturnedIntent
     * @return
     */
    private Bitmap getImageFromCameraIntent(Intent imageReturnedIntent)
    {
        Bitmap bitmap = BitmapConvert.resizeBitmap(ApplicationMain
                .getInstance().getImageTempPath());
        if (bitmap == null)
        {
            Msg.showInfo(this, "未能获取所拍摄的图片!");
        }
        return bitmap;
    }

    /**
     * @param imageReturnedIntent
     * @return
     */
    private Bitmap getImageFromReturnIntent(Intent imageReturnedIntent)
    {
        Bitmap yourSelectedImage = null;
        try
        {
            String filePath = "";
            Uri selectedImage = imageReturnedIntent.getData();
            String[] filePathColumn = { MediaStore.Images.Media.DATA };

            Cursor cursor = getContentResolver().query(selectedImage,
                    filePathColumn, null, null, null);
            if (cursor != null)
            {
                cursor.moveToFirst();
                int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
                filePath = cursor.getString(columnIndex);
                cursor.close();
            }
            else
            {
                filePath = selectedImage.getPath();
            }
            yourSelectedImage = BitmapConvert.resizeBitmap(filePath);

        }
        catch (Exception e)
        {
            Msg.showInfo(this, "未找到图片!");
        }
        return yourSelectedImage;
    }


    @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)
        {
            if (imagesLayout.getSelectedImageCount() > 0)
            {
                try
                {
                    Request.getRequest().saveImageCache(imagesLayout.getSelectedImages(), eventId, null);
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
            }
            setResult(0x007);
            FrmProblemCheckDetail.this.finish();
        }
    }
}