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

import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.location.Location;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
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.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.Spinner;
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.BitmapConvert;
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.util.StringUtils;
import com.smartdot.cgt.view.ImagesLayout;
import com.smartdot.cgt.view.TitleBar;

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

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
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;

public class FrmProblemSuperviseDetail 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 final String THREAD_SUBMIT_PICTURE1 = "THREAD_SUBMIT_PICTURE1";
    private final String THREAD_SUBMIT_PICTURE2 = "THREAD_SUBMIT_PICTURE2";
    private final String THREAD_SUBMIT_AUDIO = "THREAD_SUBMIT_Audio";
    private final int RESULT_POINT = 1101;
    JSONObject casejson;
    TextView txtcasenum,txtovertime,txtaddress,txtdetail,txtstate;
    EditText txtremarks;
    LinearLayout handlehis;
    private View btnGetPosition;
    private ImagesLayout imagesLayout1;
    private LinearLayout mainLayout1;
    private Spinner spinCheckResult;
    public String nowstate,processId;

    public List<Map<String,String>> nextstate;
    private Button submit_bt;
    private String longitude,latitude;
    Long id;
    private String eventId;
    @Override
    protected void setLayout()
    {
        initActivity();
        setContentView(R.layout.problemoverdetail);

        titlebar = (TitleBar) this.findViewById(R.id.titlebar);
        titlebar.setTitleText("案卷详情");
        txtcasenum = (TextView) findViewById(R.id.casenum);
        txtaddress = (TextView) findViewById(R.id.txtAddress);
        txtdetail = (TextView) findViewById(R.id.txtEventDesc);
        txtremarks = (EditText) findViewById(R.id.txtOpinion);
        txtovertime = (TextView) findViewById(R.id.txtovertime);
        txtstate = (TextView) findViewById(R.id.txtstate);
        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);
        mainLayout1.setVisibility(View.GONE);
        handlehis = (LinearLayout)findViewById(R.id.handlehis_allow_button);
        spinCheckResult = (Spinner)findViewById(R.id.spinCheckResult);
        submit_bt.setClickable(true);
    }
    @Override
    protected void doInit()
    {
        initview();
    }


    @Override
    protected void addEventListener()
    {
        btnGetPosition.setOnClickListener(onClickListener);
        submit_bt.setOnClickListener(onClickListener);
        handlehis.setOnClickListener(onClickListener);
        spinCheckResult.setOnItemSelectedListener(onItemSelectedListener);
        imagesLayout1.setOnPreviewImage(imagesLayout1.new OnPreviewImage()
        {
            @Override
            public void previewImage(int viewIndex)
            {

                Intent intent = new Intent(FrmProblemSuperviseDetail.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(FrmProblemSuperviseDetail.this,FrmMap.class);
                Bundle bundle = new Bundle();
                bundle.putString("lng",longitude);
                bundle.putString("lat",latitude);
                intent.putExtras(bundle);
                startActivity(intent);
            }else if(arg0 == submit_bt){
                boolean bsub = true;
                submit_bt.setClickable(false);
                if(StringUtils.isNullOrEmpty(txtremarks.getText().toString().trim())){
                    Msg.showInfo(FrmProblemSuperviseDetail.this, "请填写督办意见!\n");
                    bsub = false;
                }
                if(txtremarks.getText().toString().length()>50){
                    Msg.showInfo(FrmProblemSuperviseDetail.this, "督办意见不能超过50字!\n");
                    bsub = false;
                }
                if(bsub){
                    submitcheck();
                }else{
                    submit_bt.setClickable(true);
                }
            }else if(arg0 == handlehis){
                Intent intent = new Intent();
                intent.setClass(FrmProblemSuperviseDetail.this,FrmProblemSupervisePr.class);
                Bundle bundle = new Bundle();
                bundle.putString("processId",processId);
                intent.putExtras(bundle);
                startActivity(intent);
            }
        }
    };

    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
                    {
                        String remarkers = txtremarks.getText().toString().trim();
                        ApiClent.updateSuperviseRemarks(id.toString(),remarkers,new ApiClent.ClientCallback() {
                                    @Override
                                    public void onSuccess(Object data)
                                    {
                                        try {
                                            JSONObject jsonObject = new JSONObject(data.toString());
                                            System.out.println(jsonObject);
                                            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;
    }


    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("value"));
            }
        }
        @Override
        public void onNothingSelected(AdapterView<?> arg0)
        {
        }
    };

    @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(FrmProblemSuperviseDetail.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(FrmProblemSuperviseDetail.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(FrmProblemSuperviseDetail.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"));
                    txtovertime.setText(casejson.getString("nodeLimittime"));
                    txtaddress .setText(casejson.getString("fieldintro"));
                    txtdetail.setText(casejson.getString("description"));
                    nowstate = casejson.getString("caseState");
                    txtstate.setText(casejson.getString("caseStateName"));
                    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("")){
                        mainLayout1.setVisibility(View.VISIBLE);
                        initpic(list);
                    }
                    initspin();
                }catch (JSONException e){
                    e.printStackTrace();
                }
            }
            else if (msg.arg1 == HandlerStatus.HANDLE_FAIL)
            {
                Msg.showInfo(FrmProblemSuperviseDetail.this, "获取案卷详情失败!");
            }
            else
            {
                Msg.showInfo(FrmProblemSuperviseDetail.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>(FrmProblemSuperviseDetail.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(FrmProblemSuperviseDetail.this, "获取常用语句失败!");
            }
            else
            {
                Msg.showInfo(FrmProblemSuperviseDetail.this, "获取常用语句时出现错误!");
            }
            checkIsNeedCloseProgress();
        }else if (msg.what == HandlerStatus.REQUEST_SUBMITCHECK)
        {
            threadList.get(THREAD_SUBMIT_FIELD).interrupt();
            if (msg.arg1 == HandlerStatus.HANDLE_OK)
            {
                Msg.showInfo(FrmProblemSuperviseDetail.this, "上报成功!");
                finishActivity(checkIsNeedCloseProgress());
            }
            else if (msg.arg1 == HandlerStatus.HANDLE_FAIL)
            {
                Msg.showInfo(FrmProblemSuperviseDetail.this, "案卷提交失败!");
            }
            else
            {
                Msg.showInfo(FrmProblemSuperviseDetail.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();
                        nextstate = typelistResult.getResultObj();
                        if (typelistResult.isSuccess())
                        {
                            for (int i=0;i<nextstate.size();i++)
                                data_list.add(nextstate.get(i).get("name"));
                            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 OnClickListener btnOnClick = new 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)
        {
            setResult(0x007);
            FrmProblemSuperviseDetail.this.finish();
        }
    }
}