package cn.flightfeather.thirdapp.activity;
|
|
import android.content.ClipData;
|
import android.content.ClipboardManager;
|
import android.content.Context;
|
import android.content.DialogInterface;
|
import android.content.Intent;
|
import android.graphics.Bitmap;
|
import android.graphics.BitmapFactory;
|
import android.graphics.Matrix;
|
import android.net.Uri;
|
import android.os.Build;
|
import android.os.Bundle;
|
import android.os.Environment;
|
import android.os.StrictMode;
|
import android.support.annotation.RequiresApi;
|
import android.support.constraint.ConstraintLayout;
|
import android.support.v7.app.AlertDialog;
|
import android.support.v7.app.AppCompatActivity;
|
import android.view.MenuItem;
|
import android.view.View;
|
import android.widget.ArrayAdapter;
|
import android.widget.Button;
|
import android.widget.CompoundButton;
|
import android.widget.EditText;
|
import android.widget.ImageView;
|
import android.widget.LinearLayout;
|
import android.widget.Spinner;
|
import android.widget.Switch;
|
import android.widget.TextView;
|
import android.widget.Toast;
|
|
import com.amap.api.maps.AMap;
|
import com.amap.api.maps.CameraUpdateFactory;
|
import com.amap.api.maps.TextureMapView;
|
import com.amap.api.maps.model.BitmapDescriptorFactory;
|
import com.amap.api.maps.model.LatLng;
|
import com.amap.api.maps.model.Marker;
|
import com.amap.api.maps.model.MarkerOptions;
|
import com.ping.greendao.gen.DaoSession;
|
import com.ping.greendao.gen.MediafileDao;
|
|
import org.greenrobot.eventbus.EventBus;
|
|
import java.io.File;
|
import java.io.IOException;
|
import java.io.Serializable;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
|
import cn.flightfeather.thirdapp.CommonApplication;
|
import cn.flightfeather.thirdapp.R;
|
import cn.flightfeather.thirdapp.bean.Mediafile;
|
import cn.flightfeather.thirdapp.bean.Subtask;
|
import cn.flightfeather.thirdapp.bean.vo.ProblemlistVo;
|
import cn.flightfeather.thirdapp.model.event.ProblemEvent;
|
import cn.flightfeather.thirdapp.module.base.BaseTakePicActivity;
|
import cn.flightfeather.thirdapp.module.inspection.InspectionDetailActivity;
|
import cn.flightfeather.thirdapp.task.DownloadAndSetImageTask;
|
import cn.flightfeather.thirdapp.task.SetImageTask;
|
import cn.flightfeather.thirdapp.util.DateFormatter;
|
import cn.flightfeather.thirdapp.util.Domain;
|
import cn.flightfeather.thirdapp.util.UUIDGenerator;
|
import cn.flightfeather.thirdapp.util.file.FileUtil;
|
import cn.flightfeather.thirdapp.util.photo.PhotoUtil;
|
import okhttp3.ResponseBody;
|
import retrofit2.Call;
|
import retrofit2.Callback;
|
import retrofit2.Response;
|
import retrofit2.http.Body;
|
import retrofit2.http.DELETE;
|
import retrofit2.http.GET;
|
import retrofit2.http.POST;
|
import retrofit2.http.Path;
|
import retrofit2.http.Url;
|
|
public class ProblemDetailActivity extends AppCompatActivity implements View.OnClickListener{
|
private TextView tv_problemName;
|
private TextView tv_location;
|
private TextView tv_problemChange;
|
private TextView tv_problemRecheck;
|
private TextView tv_problemTime;
|
private ProblemlistVo problemlistVoCurrent;
|
private Subtask subTaskSelected;
|
private List<Mediafile> mediafileList;
|
private ImageView iv_problemPhoto1;
|
private ImageView iv_problemPhoto2;
|
private ImageView iv_problemPhoto3;
|
private ImageView iv_changePhoto1;
|
private ImageView iv_changePhoto2;
|
private ImageView iv_changePhoto3;
|
private MediafileDao mediafileDao;
|
private CommonApplication application;
|
private List<ImageView> imageViewProblemList;
|
private List<ImageView> imageViewChangeList;
|
private ProblemDetailService problemImageService;
|
private ProblemDetailService problemDataService;
|
private final int PROBLEM_PHOTO =11;
|
private final int CHANGE_PHOTO = 12;
|
private final int VIEW_PROBLEM_PHOTO =17;
|
private final int VIEW_CHANGE_PHOTO =18;
|
private Button btn_test;
|
private Mediafile mediafileCurrent;
|
private int imageViewPosition =0;
|
private TextureMapView tmv_main;
|
private AMap aMap;
|
private LinearLayout ll_shareAllProblem;
|
private LinearLayout ll_shareAllChange;
|
private boolean editable = false;
|
private LinearLayout ll_change;
|
private Switch sw_change;
|
private TextView tv_editChangeType;
|
private TextView tv_editChangeResult;
|
private TextView tv_editChangeAdvise;
|
private TextView tv_changeType;
|
private TextView tv_changeResult;
|
private TextView tv_changeAdvise;
|
private boolean isEdited = false;
|
private List<Mediafile> problemMediaFileList;
|
private List<Mediafile> changeMediaFileList;
|
private Switch sw_recheck;
|
private LinearLayout ll_recheck;
|
private TextView tv_recheckResult;
|
private TextView tv_editRecheckResult;
|
private TextView tv_recheckDes;
|
private TextView tv_editRecheckDes;
|
|
private LinearLayout ll_change_advise_read;
|
private TextView tv_change_advise_read;
|
|
private ConstraintLayout cl_submit;
|
private Button btn_fail;
|
private Button btn_pass;
|
|
private Intent intent;
|
private int type;
|
@Override
|
protected void onCreate(Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
setContentView(R.layout.activity_problem_detail);
|
application = (CommonApplication) getApplication();
|
|
intent = getIntent();
|
problemlistVoCurrent = (ProblemlistVo) intent.getSerializableExtra("problemlistVo");
|
subTaskSelected = (Subtask) intent.getSerializableExtra("subTaskSelected");
|
type = intent.getIntExtra("type",0);
|
|
if (getSupportActionBar() != null) {
|
String title = "问题详情";
|
switch (type) {
|
case InspectionDetailActivity.PROBLEM_LIST:
|
title = "问题详情";
|
break;
|
case InspectionDetailActivity.PROBLEM_RECHECK:
|
title = "问题复核";
|
break;
|
case InspectionDetailActivity.PROBLEM_CHANGE:
|
title = "问题整改";
|
break;
|
case InspectionDetailActivity.PROBLEM_CHECK:
|
title = "问题审核";
|
break;
|
case InspectionDetailActivity.CHANGE_CHECK:
|
title = "整改审核";
|
break;
|
}
|
getSupportActionBar().setTitle(title);
|
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
}
|
|
initUI();
|
initDataBase();
|
initMap(savedInstanceState);
|
initData();
|
|
}
|
//初始化界面
|
private void initUI() {
|
tv_problemName = (TextView) findViewById(R.id.tv_problem_name);
|
tv_location = (TextView) findViewById(R.id.tv_problem_location);
|
tv_problemChange = (TextView) findViewById(R.id.tv_problem_change);
|
tv_problemRecheck = (TextView) findViewById(R.id.tv_problem_recheck);
|
tv_problemTime = (TextView) findViewById(R.id.tv_problem_time);
|
iv_problemPhoto1 = (ImageView) findViewById(R.id.iv_problem_photo1);
|
iv_problemPhoto2 = (ImageView) findViewById(R.id.iv_problem_photo2);
|
iv_problemPhoto3 = (ImageView) findViewById(R.id.iv_problem_photo3);
|
|
cl_submit = findViewById(R.id.cl_submit);
|
btn_fail = findViewById(R.id.btn_fail);
|
btn_pass = findViewById(R.id.btn_pass);
|
|
btn_pass.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (type == InspectionDetailActivity.PROBLEM_CHECK) {
|
problemlistVoCurrent.setExtension3(Domain.PROBLEM_CHECK_PASS);
|
problemlistVoCurrent.setRemark(application.getCurrentUser().getAcountname());
|
} else if (type == InspectionDetailActivity.CHANGE_CHECK) {
|
problemlistVoCurrent.setExtension3(Domain.CHANGE_CHECK_PASS);
|
}
|
isEdited = true;
|
saveCheck();
|
}
|
});
|
|
btn_fail.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (type == InspectionDetailActivity.PROBLEM_CHECK) {
|
problemlistVoCurrent.setExtension3(Domain.PROBLEM_CHECK_FAIL);
|
problemlistVoCurrent.setRemark(application.getCurrentUser().getAcountname());
|
} else if (type == InspectionDetailActivity.CHANGE_CHECK) {
|
problemlistVoCurrent.setExtension3(Domain.CHANGE_CHECK_FAIL);
|
}
|
isEdited = true;
|
saveCheck();
|
}
|
});
|
|
if (type == InspectionDetailActivity.PROBLEM_LIST
|
|| type == InspectionDetailActivity.PROBLEM_CHANGE
|
|| type == InspectionDetailActivity.PROBLEM_CHECK
|
|| type == InspectionDetailActivity.CHANGE_CHECK) {
|
iv_changePhoto1 = (ImageView) findViewById(R.id.iv_problem_change_photo1);
|
iv_changePhoto2 = (ImageView) findViewById(R.id.iv_problem_change_photo2);
|
iv_changePhoto3 = (ImageView) findViewById(R.id.iv_problem_change_photo3);
|
ll_shareAllChange = (LinearLayout) findViewById(R.id.ll_share_all_change);
|
} else if (type == InspectionDetailActivity.PROBLEM_RECHECK) {
|
iv_changePhoto1 = (ImageView) findViewById(R.id.iv_recheck_photo1);
|
iv_changePhoto2 = (ImageView) findViewById(R.id.iv_recheck_photo2);
|
iv_changePhoto3 = (ImageView) findViewById(R.id.iv_recheck_photo3);
|
ll_shareAllChange = (LinearLayout) findViewById(R.id.ll_share_all_recheck);
|
}
|
|
tmv_main = (TextureMapView) findViewById(R.id.tmv_main);
|
ll_shareAllProblem = (LinearLayout) findViewById(R.id.ll_share_all_problem);
|
|
ll_change_advise_read = findViewById(R.id.ll_change_advise_read);
|
tv_change_advise_read = findViewById(R.id.tv_change_advise_read);
|
|
ll_change = (LinearLayout) findViewById(R.id.ll_change);
|
sw_change = (Switch) findViewById(R.id.sw_change);
|
tv_editChangeType = (TextView) findViewById(R.id.tv_edit_change_type);
|
tv_editChangeResult = (TextView) findViewById(R.id.tv_edit_change_result);
|
tv_editChangeAdvise = (TextView) findViewById(R.id.tv_edit_change_advise);
|
tv_changeType = (TextView) findViewById(R.id.tv_change_type);
|
tv_changeResult = (TextView) findViewById(R.id.tv_change_result);
|
tv_changeAdvise = (TextView) findViewById(R.id.tv_change_advise);
|
sw_recheck = (Switch) findViewById(R.id.sw_recheck);
|
ll_recheck = (LinearLayout) findViewById(R.id.ll_recheck);
|
tv_recheckResult = (TextView) findViewById(R.id.tv_recheck_result);
|
tv_recheckDes = (TextView) findViewById(R.id.tv_recheck_des);
|
tv_editRecheckResult = (TextView) findViewById(R.id.tv_edit_recheck_result);
|
tv_editRecheckDes = (TextView) findViewById(R.id.tv_edit_recheck_des);
|
btn_test = (Button) findViewById(R.id.btn_test);
|
imageViewProblemList = new ArrayList<>();
|
imageViewProblemList.add(iv_problemPhoto1);
|
imageViewProblemList.add(iv_problemPhoto2);
|
imageViewProblemList.add(iv_problemPhoto3);
|
imageViewChangeList = new ArrayList<>();
|
imageViewChangeList.add(iv_changePhoto1);
|
imageViewChangeList.add(iv_changePhoto2);
|
imageViewChangeList.add(iv_changePhoto3);
|
|
tv_editChangeType.setOnClickListener(this);
|
tv_editChangeResult.setOnClickListener(this);
|
tv_editChangeAdvise.setOnClickListener(this);
|
tv_editRecheckResult.setOnClickListener(this);
|
tv_editRecheckDes.setOnClickListener(this);
|
|
btn_test.setVisibility(View.GONE);
|
btn_test.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View view) {
|
problemlistVoCurrent.setIschanged(true);
|
problemlistVoCurrent.setIsrechecked(true);
|
Call<ResponseBody> deleteMediaFile = problemDataService.updateProblemList(problemlistVoCurrent);
|
deleteMediaFile.enqueue(new Callback<ResponseBody>() {
|
@Override
|
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
|
if (response.body()!=null){
|
Toast.makeText(application, "", Toast.LENGTH_SHORT).show();
|
}else if (response.errorBody()!=null){
|
Toast.makeText(application, "", Toast.LENGTH_SHORT).show();
|
}
|
}
|
|
@Override
|
public void onFailure(Call<ResponseBody> call, Throwable t) {
|
Toast.makeText(application, "", Toast.LENGTH_SHORT).show();
|
}
|
});
|
}
|
});
|
ll_shareAllProblem.setOnClickListener(shareListener(false));
|
ll_shareAllChange.setOnClickListener(shareListener(true));
|
|
sw_change.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
@Override
|
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
|
if (b){
|
isEdited = true;
|
ll_change.setVisibility(View.VISIBLE);
|
loadChangeStatus();
|
}else {
|
isEdited = false;
|
problemlistVoCurrent.setIschanged(false);
|
ll_change.setVisibility(View.GONE);
|
}
|
}
|
});
|
sw_recheck.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
@Override
|
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
|
if (b){
|
isEdited = true;
|
ll_recheck.setVisibility(View.VISIBLE);
|
loadRecheckStatus();
|
}else {
|
isEdited = false;
|
ll_recheck.setVisibility(View.GONE);
|
}
|
}
|
});
|
}
|
//加载整改状态信息并显示
|
private void loadChangeStatus(){
|
ll_change_advise_read.setVisibility(View.GONE);
|
if (problemlistVoCurrent.getChangecatalog()!=null){
|
tv_changeType.setText(problemlistVoCurrent.getChangecatalog());
|
}else {
|
tv_changeType.setText("待填写");
|
}
|
if (problemlistVoCurrent.getChangedresult()!=null){
|
tv_changeResult.setText(problemlistVoCurrent.getChangedresult());
|
}else {
|
tv_changeResult.setText("待填写");
|
}
|
if (problemlistVoCurrent.getAdvise()!=null){
|
tv_changeAdvise.setText(problemlistVoCurrent.getAdvise());
|
}else {
|
tv_changeAdvise.setText("待填写");
|
}
|
}
|
//加载复核状态信息并显示
|
private void loadRecheckStatus(){
|
if (problemlistVoCurrent.getRecheckresult()!=null){
|
tv_recheckResult.setText(problemlistVoCurrent.getRecheckresult());
|
}else {
|
tv_recheckResult.setText("待填写");
|
}
|
if (problemlistVoCurrent.getRecheckdescription()!=null){
|
tv_recheckDes.setText(problemlistVoCurrent.getRecheckdescription());
|
}else {
|
tv_recheckDes.setText("待填写");
|
}
|
}
|
//初始化数据库
|
private void initDataBase() {
|
DaoSession daoSession = application.getDaoSession();
|
mediafileDao = daoSession.getMediafileDao();
|
}
|
//初始化地图
|
private void initMap(Bundle savedInstanceState) {
|
tmv_main.onCreate(savedInstanceState);
|
aMap = tmv_main.getMap();
|
}
|
//初始化数据
|
private void initData() {
|
problemMediaFileList = new ArrayList<>();
|
changeMediaFileList = new ArrayList<>();
|
|
problemImageService = application.getRetrofitImage().create(ProblemDetailService.class);
|
problemDataService = application.getRetrofit().create(ProblemDetailService.class);
|
|
|
editable = intent.getBooleanExtra("editable",false);
|
if (editable){
|
tv_editChangeAdvise.setVisibility(View.VISIBLE);
|
tv_editChangeResult.setVisibility(View.VISIBLE);
|
tv_editChangeType.setVisibility(View.VISIBLE);
|
}else {
|
tv_editChangeAdvise.setVisibility(View.GONE);
|
tv_editChangeResult.setVisibility(View.GONE);
|
tv_editChangeType.setVisibility(View.GONE);
|
}
|
|
if (problemlistVoCurrent!=null){
|
tv_problemName.setText(problemlistVoCurrent.getProblemname());
|
tv_location.setText(problemlistVoCurrent.getLocation());
|
tv_problemTime.setText(DateFormatter.dateTimeFormat.format(problemlistVoCurrent.getTime()));
|
|
if (type == InspectionDetailActivity.PROBLEM_LIST ) {
|
sw_change.setVisibility(View.GONE);
|
sw_recheck.setVisibility(View.GONE);
|
cl_submit.setVisibility(View.GONE);
|
} else if (type == InspectionDetailActivity.PROBLEM_CHECK || type == InspectionDetailActivity.CHANGE_CHECK) {
|
sw_change.setVisibility(View.GONE);
|
sw_recheck.setVisibility(View.GONE);
|
cl_submit.setVisibility(View.VISIBLE);
|
} else if (type == InspectionDetailActivity.PROBLEM_RECHECK) {
|
sw_recheck.setVisibility(View.VISIBLE);
|
sw_change.setVisibility(View.GONE);
|
cl_submit.setVisibility(View.GONE);
|
} else if (type == InspectionDetailActivity.PROBLEM_CHANGE) {
|
sw_change.setVisibility(View.VISIBLE);
|
sw_recheck.setVisibility(View.GONE);
|
ll_change_advise_read.setVisibility(View.GONE);
|
cl_submit.setVisibility(View.GONE);
|
}
|
if (problemlistVoCurrent.getIschanged()){
|
tv_problemChange.setText("已整改");
|
ll_change.setVisibility(View.VISIBLE);
|
loadChangeStatus();
|
sw_change.setVisibility(View.GONE);
|
if (type == InspectionDetailActivity.PROBLEM_CHECK) {
|
cl_submit.setVisibility(View.GONE);
|
}
|
}else {
|
tv_problemChange.setText("未整改");
|
ll_change.setVisibility(View.GONE);
|
if (type == InspectionDetailActivity.CHANGE_CHECK) {
|
cl_submit.setVisibility(View.GONE);
|
}
|
}
|
if (problemlistVoCurrent.getAdvise()!=null){
|
tv_change_advise_read.setText(problemlistVoCurrent.getAdvise());
|
}else {
|
tv_change_advise_read.setText("暂无建议");
|
}
|
if (problemlistVoCurrent.getIsrechecked()){
|
tv_problemRecheck.setText("已复核");
|
ll_recheck.setVisibility(View.VISIBLE);
|
sw_recheck.setVisibility(View.GONE);
|
loadRecheckStatus();
|
}else {
|
tv_problemRecheck.setText("未复核");
|
ll_recheck.setVisibility(View.GONE);
|
}
|
mediafileList = new ArrayList<>();
|
mediafileList = problemlistVoCurrent.getMediafileList();
|
mediafileList.addAll
|
(mediafileDao.queryBuilder()
|
.where(MediafileDao.Properties.Businessguid.eq(problemlistVoCurrent.getGuid()))
|
.where(MediafileDao.Properties.Remark.eq("未上传"))
|
.list()
|
);
|
|
loadImage(mediafileList);
|
|
LatLng latLng = null;
|
MarkerOptions options = new MarkerOptions();
|
Bitmap bm = null;
|
|
latLng = new LatLng(problemlistVoCurrent.getLatitude(), problemlistVoCurrent.getLongitude());
|
bm = BitmapFactory.decodeResource(getResources(), R.drawable.icon_mark_red);
|
|
Matrix matrix = new Matrix();
|
matrix.setScale(0.28f, 0.28f);
|
Bitmap bmBig = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(),
|
bm.getHeight(), matrix, true);
|
options.icon(BitmapDescriptorFactory.fromBitmap(bmBig));
|
|
options.position(latLng);
|
Marker marker = aMap.addMarker(options);
|
marker.setInfoWindowEnable(false);
|
aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 14f));
|
|
double scenseLat = intent.getDoubleExtra("scenseLat",0);
|
double scenseLng = intent.getDoubleExtra("scenseLng",0);
|
MarkerOptions siteMarkeroptions = new MarkerOptions().position(new LatLng(scenseLat,scenseLng));
|
aMap.addMarker(siteMarkeroptions);
|
}
|
}
|
|
//显示整改类别的dialog
|
private void showChangeTypeDialog(){
|
final AlertDialog.Builder dialog = new AlertDialog.Builder(this);
|
dialog.setTitle("整改类别");
|
final int[] position = {-1};
|
final String[] items = {"现场整改","承诺整改"};
|
dialog.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialogInterface, int i) {
|
position[0] = i;
|
}
|
});
|
dialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialogInterface, int i) {
|
isEdited = true;
|
tv_changeType.setText(items[position[0]]);
|
problemlistVoCurrent.setChangecatalog(items[position[0]]);
|
}
|
});
|
dialog.setNegativeButton("取消",null);
|
dialog.show();
|
}
|
//显示整改效果的dialog
|
private void showChangeResultDialog(){
|
AlertDialog.Builder dialog = new AlertDialog.Builder(this);
|
dialog.setTitle("整改效果");
|
final EditText editText = new EditText(this);
|
dialog.setView(editText);
|
if (problemlistVoCurrent.getChangedresult()!=null){
|
editText.setText(problemlistVoCurrent.getChangedresult());
|
}
|
dialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialogInterface, int i) {
|
if (editText.getText().length()>0){
|
isEdited = true;
|
tv_changeResult.setText(editText.getText().toString());
|
problemlistVoCurrent.setChangedresult(editText.getText().toString());
|
}else {
|
Toast.makeText(application, "请填写内容", Toast.LENGTH_SHORT).show();
|
}
|
}
|
});
|
dialog.setNegativeButton("取消",null);
|
dialog.show();
|
}
|
//显示整改建议
|
private void showChangeAdviseDialog(){
|
AlertDialog.Builder dialog = new AlertDialog.Builder(this);
|
dialog.setTitle("整改建议");
|
Spinner spinner = new Spinner(this);
|
List<String> items = new ArrayList<>();
|
items.add("无");
|
items.add("aaaaaaaa");
|
ArrayAdapter adapter = new ArrayAdapter(this,R.layout.item_spinner_drop_down,items);
|
spinner.setAdapter(adapter);
|
dialog.setView(spinner);
|
dialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialogInterface, int i) {
|
|
}
|
});
|
dialog.setNegativeButton("取消",null);
|
dialog.show();
|
}
|
//显示复核结果dialog
|
private void showRecheckResultDialog(){
|
final AlertDialog.Builder dialog = new AlertDialog.Builder(this);
|
dialog.setTitle("复核结论");
|
final int[] position = {-1};
|
final String[] items = {"未整改","部分整改","大部分整改","全部整改"};
|
dialog.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialogInterface, int i) {
|
position[0] = i;
|
}
|
});
|
dialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialogInterface, int i) {
|
isEdited = true;
|
tv_recheckResult.setText(items[position[0]]);
|
problemlistVoCurrent.setRecheckresult(items[position[0]]);
|
}
|
});
|
dialog.setNegativeButton("取消",null);
|
dialog.show();
|
}
|
//显示复核描述的dialog
|
private void showRecheckDesDialog(){
|
AlertDialog.Builder dialog = new AlertDialog.Builder(this);
|
dialog.setTitle("复核描述");
|
final EditText editText = new EditText(this);
|
dialog.setView(editText);
|
if (problemlistVoCurrent.getRecheckdescription()!=null){
|
editText.setText(problemlistVoCurrent.getRecheckdescription());
|
}
|
dialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialogInterface, int i) {
|
if (editText.getText().length()>0){
|
isEdited = true;
|
tv_recheckDes.setText(editText.getText().toString());
|
problemlistVoCurrent.setRecheckdescription(editText.getText().toString());
|
}else {
|
Toast.makeText(application, "请填写内容", Toast.LENGTH_SHORT).show();
|
}
|
}
|
});
|
dialog.setNegativeButton("取消",null);
|
dialog.show();
|
}
|
|
//从mediafileList中取出图片并显示
|
private void loadImage(List<Mediafile> mediafileList){
|
if (mediafileList!=null&&mediafileList.size()>0){
|
for (Mediafile mediaFile :mediafileList){
|
mediafileCurrent = mediaFile;
|
if (mediaFile.getIschanged()){
|
//已整改的图片
|
File file = getFileFromMediaFile(mediaFile);
|
if (file.exists()){
|
SetImageTask task1 = new SetImageTask(file, imageViewChangeList.get(changeMediaFileList.size()));
|
task1.execute();
|
}else {
|
DownloadAndSetImageTask task = new DownloadAndSetImageTask(mediaFile,imageViewChangeList.get(changeMediaFileList.size()),this);
|
task.execute();
|
}
|
changeMediaFileList.add(mediaFile);
|
}else {
|
//未整改的图片
|
File file = getFileFromMediaFile(mediaFile);
|
if (file.exists()){
|
//文件本地存在直接读取显示
|
SetImageTask task1 = new SetImageTask(file, imageViewProblemList.get(problemMediaFileList.size()));
|
task1.execute();
|
}else {
|
DownloadAndSetImageTask task = new DownloadAndSetImageTask(mediaFile, imageViewProblemList.get(problemMediaFileList.size()),this);
|
task.execute();
|
}
|
problemMediaFileList.add(mediaFile);
|
}
|
}
|
}
|
refreshPhotoAndClicker(false);
|
}
|
|
//跳转到photoviewer
|
private View.OnClickListener showPhotoClicker(final List<File> files, final int position, final List<Mediafile> mediafiles, final int type){
|
View.OnClickListener listener = new View.OnClickListener() {
|
@Override
|
public void onClick(View view) {
|
Intent intent = new Intent(ProblemDetailActivity.this,PhotoViewerActivity.class);
|
intent.putExtra("position",position);
|
if (editable){
|
intent.putExtra("deletable",true);
|
}else {
|
intent.putExtra("deletable",false);
|
}
|
// intent.putExtra("mediaFile",mediafiles);
|
// intent.putExtra("file",files);
|
intent.putExtra(PhotoViewerActivity.PARA_MEDIAS, (Serializable) mediafiles);
|
intent.putExtra(PhotoViewerActivity.PARA_FILES, (Serializable) files);
|
if (type ==VIEW_PROBLEM_PHOTO){
|
intent.putExtra("type",PhotoViewerActivity.PROBLEM_PHOTO);
|
startActivityForResult(intent,type);
|
}else if (type ==VIEW_CHANGE_PHOTO){
|
intent.putExtra("type",PhotoViewerActivity.CHANGE_PHOTO);
|
startActivityForResult(intent,type);
|
}
|
|
}
|
};
|
return listener;
|
}
|
|
private void refreshPhotoAndClicker(boolean resetImage) {
|
for (int i = 0; i < problemMediaFileList.size(); i++) {
|
if (resetImage){
|
SetImageTask task1 = new SetImageTask(getFileFromMediaFile(problemMediaFileList.get(i)), imageViewProblemList.get(i));
|
task1.execute();
|
}
|
imageViewProblemList.get(i).setOnClickListener(showPhotoClicker(getFilesFromMediaFiles(problemMediaFileList),i,problemMediaFileList,VIEW_PROBLEM_PHOTO));
|
}
|
for (int i = 0; i < changeMediaFileList.size(); i++) {
|
if (resetImage){
|
SetImageTask task1 = new SetImageTask(getFileFromMediaFile(changeMediaFileList.get(i)), imageViewChangeList.get(i));
|
task1.execute();
|
}
|
imageViewChangeList.get(i).setOnClickListener(showPhotoClicker(getFilesFromMediaFiles(changeMediaFileList),i,changeMediaFileList,VIEW_CHANGE_PHOTO));
|
}
|
|
if (problemMediaFileList.size() < 3) {
|
if (editable) {
|
ImageView iv_addProblemPhoto = imageViewProblemList.get(problemMediaFileList.size());
|
iv_addProblemPhoto.setImageResource(R.drawable.icon_add_photo);
|
iv_addProblemPhoto.setOnClickListener(addPhotoClickListener(PROBLEM_PHOTO, 3 - problemMediaFileList.size()));
|
} else {
|
ImageView iv_addProblemPhoto = imageViewProblemList.get(problemMediaFileList.size());
|
iv_addProblemPhoto.setImageResource(R.drawable.icon_add_photo_blank);
|
}
|
|
}
|
if (changeMediaFileList.size() < 3) {
|
if (editable) {
|
ImageView iv_addChangePhoto = imageViewChangeList.get(changeMediaFileList.size());
|
iv_addChangePhoto.setImageResource(R.drawable.icon_add_photo);
|
iv_addChangePhoto.setOnClickListener(addPhotoClickListener(CHANGE_PHOTO, 3 - changeMediaFileList.size()));
|
} else {
|
ImageView iv_addChangePhoto = imageViewChangeList.get(changeMediaFileList.size());
|
iv_addChangePhoto.setImageResource(R.drawable.icon_add_photo_blank);
|
}
|
|
}
|
|
}
|
|
//添加图片用的点击事件
|
public View.OnClickListener addPhotoClickListener(final int type, final int picNum) {
|
return new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
PhotoUtil.pickPhoto2(ProblemDetailActivity.this, type, picNum);
|
}
|
};
|
}
|
|
private File getNewChangeFile(){
|
File newFile =null;
|
if (subTaskSelected!=null){
|
java.util.Calendar calendar = java.util.Calendar.getInstance();
|
calendar.setTime(subTaskSelected.getExecutionstarttime());
|
String parent = "FlightFeather/Photo/" + subTaskSelected.getDistrictname() + "/" + calendar.get(java.util.Calendar.YEAR) + "年" + (calendar.get(java.util.Calendar.MONTH) + 1) + "月/" + (calendar.get(java.util.Calendar.MONTH) + 1) + "月" + calendar.get(java.util.Calendar.DAY_OF_MONTH) + "日/" + subTaskSelected.getScensename() + "/整改/";
|
String fileName = problemlistVoCurrent.getProblemname() + " " + problemlistVoCurrent.getLocation()+" 整改 " + UUIDGenerator.generateUUID(4)+".jpg";
|
newFile = new File(Environment.getExternalStorageDirectory(), (parent + fileName));
|
newFile.getParentFile().mkdirs();
|
}else {
|
Toast.makeText(application, "无subtassk", Toast.LENGTH_SHORT).show();
|
}
|
return newFile;
|
}
|
private File getNewProblemFile(){
|
File newFile = null;
|
|
if (subTaskSelected!=null){
|
java.util.Calendar calendar = java.util.Calendar.getInstance();
|
calendar.setTime(subTaskSelected.getExecutionstarttime());
|
String parent = "FlightFeather/Photo/" + subTaskSelected.getDistrictname() + "/" + calendar.get(java.util.Calendar.YEAR) + "年" + (calendar.get(java.util.Calendar.MONTH) + 1) + "月/" + (calendar.get(java.util.Calendar.MONTH) + 1) + "月" + calendar.get(java.util.Calendar.DAY_OF_MONTH) + "日/" + subTaskSelected.getScensename() + "/";
|
String fileName = problemlistVoCurrent.getProblemname() + " " + problemlistVoCurrent.getLocation() + " "+UUIDGenerator.generateUUID(4)+".jpg";
|
newFile = new File(Environment.getExternalStorageDirectory(), (parent + fileName));
|
newFile.getParentFile().mkdirs();
|
}else {
|
Toast.makeText(application, "无subtask", Toast.LENGTH_SHORT).show();
|
}
|
|
return newFile;
|
}
|
|
//从相册中选择图片
|
public void pickPhoto(int type) {
|
Intent intent = new Intent();
|
intent.setAction(Intent.ACTION_PICK);//Pick an item fromthe data
|
intent.setType("image/*");//从所有图片中进行选择
|
startActivityForResult(intent, type);
|
}
|
|
private View.OnClickListener shareListener(final boolean isChange){
|
View.OnClickListener onClickListener = new View.OnClickListener() {
|
@Override
|
public void onClick(View view) {
|
ClipboardManager clipboardManager = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);
|
//创建ClipData对象
|
ClipData clipData = null;
|
String text = "工地名称:"+problemlistVoCurrent.getSensename()+"\n建筑地址:"+problemlistVoCurrent.getSenseaddress()+"\n问题描述:"+problemlistVoCurrent.getProblemname();
|
|
if (isChange){
|
clipData = ClipData.newPlainText("problemName", text+" 整改");
|
}else {
|
clipData = ClipData.newPlainText("problemName", text);
|
}
|
//添加ClipData对象到剪切板中
|
clipboardManager.setPrimaryClip(clipData);
|
Toast.makeText(application, "已复制问题到剪贴板", Toast.LENGTH_SHORT).show();
|
|
|
ArrayList<Uri> uriList =new ArrayList<Uri>();
|
if (isChange){
|
if (changeMediaFileList!=null&&changeMediaFileList.size()>0){
|
for (Mediafile mediafile:changeMediaFileList){
|
Uri imageUri = getImageUri(mediafile);
|
uriList.add(imageUri);
|
}
|
}else {
|
Toast.makeText(application, "无图片分享", Toast.LENGTH_SHORT).show();
|
return;
|
}
|
}else {
|
if (problemMediaFileList!=null&&problemMediaFileList.size()>0){
|
for (Mediafile mediafile:problemMediaFileList){
|
Uri imageUri = getImageUri(mediafile);
|
uriList.add(imageUri);
|
}
|
}else {
|
Toast.makeText(application, "无图片分享", Toast.LENGTH_SHORT).show();
|
return;
|
}
|
|
}
|
Intent intent = new Intent();
|
intent.setAction(Intent.ACTION_SEND_MULTIPLE);
|
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM,uriList);
|
intent.setType("image/*");
|
startActivity(Intent.createChooser(intent, "分享多张图片"));
|
}
|
};
|
return onClickListener;
|
}
|
|
private Uri getImageUri(Mediafile mediafile) {
|
Uri imageUri = Uri.EMPTY;
|
// File file = FileUtil.writeResponseBodyToDisk(getApplication(), getFileFromMediaFile(mediafile), mediafile);
|
// File newFile = FileUtil.sendMediaScanBroadcast(getApplication(), getFileFromMediaFile(mediafile));
|
// String newPath = FileUtil.sendMediaScanBroadcast(getApplication(), getFileFromMediaFile(mediafile));
|
imageUri = Uri.fromFile(getFileFromMediaFile(mediafile));
|
// String path = FileUtil.getRealPathFromUri(application, imageUri);
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
|
StrictMode.setVmPolicy(builder.build());
|
}
|
return imageUri;
|
}
|
|
|
private Mediafile newMediaFile(File file,boolean ischange){
|
Mediafile mediaFile = new Mediafile();
|
mediaFile.setGuid(UUIDGenerator.generate16ShortUUID());
|
mediaFile.setIguid(problemlistVoCurrent.getIguid());
|
mediaFile.setBusinessguid(problemlistVoCurrent.getGuid());
|
mediaFile.setLongitude(problemlistVoCurrent.getLongitude());
|
mediaFile.setLatitude(problemlistVoCurrent.getLatitude());
|
mediaFile.setAddress(problemlistVoCurrent.getSenseaddress());
|
mediaFile.setFiletype(1);
|
mediaFile.setBusinesstype("问题");
|
mediaFile.setBusinesstypeid(intToByte(1));
|
String path = file.getParent().substring(20)+"/";
|
mediaFile.setPath(path);
|
mediaFile.setDescription(file.getName());
|
mediaFile.setSavetime(new Date());
|
mediaFile.setIschanged(ischange);
|
String exetension1 =subTaskSelected.getCitycode()+"/"+subTaskSelected.getDistrictcode()+"/"+ DateFormatter.dateFormat2.format(subTaskSelected.getExecutionstarttime())+"/"+subTaskSelected.getScenseid()+"/";
|
mediaFile.setExtension1(exetension1);
|
mediaFile.setRemark("未上传");
|
return mediaFile;
|
|
}
|
|
private File getFileFromMediaFile(Mediafile mediafile){
|
File file = new File(Environment.getExternalStorageDirectory(), (mediafile.getPath() + mediafile.getDescription()));
|
return file;
|
}
|
|
private List<File> getFilesFromMediaFiles(List<Mediafile> mediafiles){
|
List<File> files = new ArrayList<>();
|
for (Mediafile m :
|
mediafiles) {
|
File file = new File(Environment.getExternalStorageDirectory(), (m.getPath() + m.getDescription()));
|
files.add(file);
|
}
|
return files;
|
}
|
public static byte intToByte(int x) {
|
return (byte) x;
|
}
|
|
|
@Override
|
public void onClick(View view) {
|
switch (view.getId()){
|
case R.id.tv_edit_change_type:
|
showChangeTypeDialog();
|
break;
|
case R.id.tv_edit_change_result:
|
showChangeResultDialog();
|
break;
|
case R.id.tv_edit_change_advise:
|
showChangeAdviseDialog();
|
break;
|
case R.id.tv_edit_recheck_result:
|
showRecheckResultDialog();
|
break;
|
case R.id.tv_edit_recheck_des:
|
showRecheckDesDialog();
|
break;
|
}
|
|
}
|
|
|
interface ProblemDetailService{
|
@GET
|
Call<ResponseBody> downloadImage(@Url String fileUrl);
|
|
@DELETE("mediafile/{id}/")
|
Call<ResponseBody> deleteMediaFile(@Path("id") String guid);
|
|
@POST("problemlist/")
|
Call<ResponseBody> updateProblemList(@Body ProblemlistVo problemlistVo);
|
}
|
@RequiresApi(api = Build.VERSION_CODES.N)
|
@Override
|
public boolean onOptionsItemSelected(MenuItem item) {
|
switch (item.getItemId()) {
|
case android.R.id.home:
|
saveCheck();
|
break;
|
default:
|
break;
|
}
|
return super.onOptionsItemSelected(item);
|
}
|
|
@Override
|
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
super.onActivityResult(requestCode, resultCode, data);
|
if (requestCode ==PROBLEM_PHOTO){
|
if (resultCode ==RESULT_OK && data != null){
|
ArrayList<String> paths = data.getStringArrayListExtra(BaseTakePicActivity.EXTRA_SELECT_IMAGES);
|
for (String p : paths) {
|
File oldFile = new File(p);
|
File newFile = getNewProblemFile();
|
try {
|
FileUtil.copyFile(oldFile, newFile);
|
Mediafile mediafile = newMediaFile(newFile,false);
|
problemMediaFileList.add(mediafile);
|
mediafileDao.insert(mediafile);
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
imageViewProblemList.get(problemMediaFileList.size()-1).setImageResource(R.drawable.icon_add_photo_blank);
|
refreshPhotoAndClicker(true);
|
}
|
}else if (requestCode ==CHANGE_PHOTO){
|
if (resultCode == RESULT_OK && data != null) {
|
isEdited = true;
|
|
ArrayList<String> paths = data.getStringArrayListExtra(BaseTakePicActivity.EXTRA_SELECT_IMAGES);
|
for (String p : paths) {
|
File oldFile = new File(p);
|
File newFile = getNewChangeFile();
|
try {
|
FileUtil.copyFile(oldFile, newFile);
|
Mediafile mediafile = newMediaFile(newFile, true);
|
changeMediaFileList.add(mediafile);
|
mediafileDao.insert(mediafile);
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
|
if (changeMediaFileList.size() > 0) {
|
if (type == InspectionDetailActivity.PROBLEM_CHANGE) {
|
sw_change.setVisibility(View.GONE);
|
tv_problemChange.setText("已整改");
|
problemlistVoCurrent.setIschanged(true);
|
problemlistVoCurrent.setExtension3(Domain.PROBLEM_CHECK_PASS);
|
problemlistVoCurrent.setRemark(application.getCurrentUser().getAcountname());
|
} else if (type == InspectionDetailActivity.PROBLEM_RECHECK) {
|
sw_recheck.setVisibility(View.GONE);
|
tv_problemRecheck.setText("已复核");
|
problemlistVoCurrent.setIsrechecked(true);
|
}
|
}
|
|
imageViewChangeList.get(changeMediaFileList.size() - 1).setImageResource(R.drawable.icon_add_photo_blank);
|
refreshPhotoAndClicker(true);
|
}
|
}else if (requestCode == VIEW_PROBLEM_PHOTO&&resultCode ==RESULT_OK){
|
if (data!=null){
|
int position = data.getIntExtra("position",-1);
|
if (position>-1){
|
problemMediaFileList.remove(position);
|
refreshPhotoAndClicker(true);
|
}
|
}
|
}else if (requestCode ==VIEW_CHANGE_PHOTO&&resultCode ==RESULT_OK){
|
if (data!=null){
|
int position = data.getIntExtra("position",-1);
|
if (position>-1){
|
changeMediaFileList.remove(position);
|
refreshPhotoAndClicker(true);
|
}
|
}
|
}
|
}
|
|
private void saveCheck(){
|
if (isEdited){
|
Toast.makeText(application, "正在保存,请稍后", Toast.LENGTH_SHORT).show();
|
Call<ResponseBody> deleteMediaFile = problemDataService.updateProblemList(problemlistVoCurrent);
|
String a = problemlistVoCurrent.getPtguid();
|
deleteMediaFile.enqueue(new Callback<ResponseBody>() {
|
@Override
|
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
|
if (response.body() != null) {
|
Toast.makeText(application, "提交成功", Toast.LENGTH_SHORT).show();
|
|
EventBus.getDefault().post(new ProblemEvent(problemlistVoCurrent.voToEntity(), type));
|
|
finish();
|
} else if (response.errorBody() != null) {
|
Toast.makeText(application, "提交失败", Toast.LENGTH_SHORT).show();
|
}
|
}
|
|
@Override
|
public void onFailure(Call<ResponseBody> call, Throwable t) {
|
Toast.makeText(application, "网路连接出错", Toast.LENGTH_SHORT).show();
|
}
|
});
|
}else {
|
finish();
|
}
|
|
}
|
|
@Override
|
public void onBackPressed() {
|
saveCheck();
|
}
|
}
|