diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java deleted file mode 100644 index a5f468d..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ /dev/null @@ -1,458 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.bean.CaseNextNodeBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl; -import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl; -import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailHandleView; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.mvp.view.ICaseNextNodeView; -import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.ui.fragment.check.CaseCheckFragment; -import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.luck.picture.lib.PictureSelector; -import com.luck.picture.lib.config.PictureConfig; -import com.luck.picture.lib.entity.LocalMedia; -import com.luck.picture.lib.tools.PictureFileUtils; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.dialog.QMUIDialog; -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, - IUploadFileView, ICaseNextNodeView, ICaseDetailHandleView { - - private Context context = this; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.caseHandleResultView) - TextView caseHandleResultView; - @BindView(R.id.caseHandleTimeView) - TextView caseHandleTimeView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.addImageView) - ImageView addImageView; - @BindView(R.id.caseCheckOptView) - TextView caseCheckOptView; - @BindView(R.id.caseCheckStatusView) - TextView caseCheckStatusView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private CaseDetailPresenterImpl caseDetailPresenter; - private UploadImagePresenterImpl uploadImagePresenter; - private CaseNextNodePresenterImpl caseNextNodePresenter; - private CaseHandlePresenterImpl caseHandlePresenter; - - private String id; - private String changeState; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private ArrayList realPaths = new ArrayList<>();//真实图片路径 - private List mediaList = new ArrayList<>();//上传到服务器的数据集 - private QMUITipDialog submitDialog; - private ImageGridViewAdapter checkImageAdapter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_check_detail; - } - - @Override - protected String setTitleName() { - return "案卷核查"; - } - - @Override - public void initData() { - id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - - uploadImagePresenter = new UploadImagePresenterImpl(this); - caseNextNodePresenter = new CaseNextNodePresenterImpl(this); - caseHandlePresenter = new CaseHandlePresenterImpl(this); - submitDialog = new QMUITipDialog.Builder(this) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord("处理中,请稍后") - .create(); - checkImageAdapter = new ImageGridViewAdapter(this); - checkGridView.setAdapter(checkImageAdapter); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.addImageView: - new QMUIDialog.MenuDialogBuilder(this) - .addItem("相册中选取", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.selectPicture(CaseCheckDetailActivity.this); - } - }) - .addItem("相机拍照", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.takePicture(CaseCheckDetailActivity.this); - } - }) - .create().show(); - break; - case R.id.caseCheckLayout: - caseNextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); - break; - case R.id.submitButton: - submitCase();//案卷提交 - break; - default: - break; - } - } - - private void submitCase() { - String remarks = caseCheckOptView.getText().toString(); - if (TextUtils.isEmpty(remarks)) { - ToastHelper.showToast("核查意见不能为空", ToastHelper.WARING); - return; - } - if (TextUtils.isEmpty(changeState)) { - ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); - return; - } - if (checkImageAdapter.getCount() != 2) { - ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); - return; - } - caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), - changeState, remarks, StringHelper.reformatURL(mediaList)); - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - switch (requestCode) { - case PictureConfig.CHOOSE_REQUEST: - List selectList = PictureSelector.obtainMultipleResult(data); - for (LocalMedia media : selectList) { - File file = new File(media.getCompressPath()); - if (file.length() <= Constant.IMAGE_MINUS_SIZE) { - ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); - continue; - } - uploadImagePresenter.onReadyRetrofitRequest(file); - } - break; - case PictureConfig.REQUEST_CAMERA: - LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); - break; - default: - break; - } - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - - /** - * 图片 - * */ - //核实照片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - - //处理照片 - String processImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(processImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = processImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - caseHandleResultView.setText(data.getProcessRemarks().equals("") ? "无处理意见" : data.getProcessRemarks()); - //TODO 服务器返回数据缺少此字段,暂时注掉 -// caseHandleTimeView.setText(); - } - } - - @Override - public void showProgress() { - submitDialog.show(); - } - - @Override - public void hideProgress() { - submitDialog.dismiss(); - } - - @Override - public void obtainCaseHandleResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("案卷核查提交成功", ToastHelper.SUCCESS); - //案卷办完以后通知待办和已办刷新数据 - CaseCheckFragment.sendEmptyMessage(Constant.CASE_CHECK_OK); - CaseCheckedFragment.sendEmptyMessage(Constant.CASE_CHECK_OK); - finish(); - } else { - ToastHelper.showToast("案卷核查提交失败,请检查", ToastHelper.ERROR); - } - } - - @Override - public void obtainUploadAudioResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainUploadImageResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - PictureFileUtils.deleteAllCacheDirFile(this); - /** - * 系统路径static拼接图片返回路径 - * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg - */ - //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg - int sumItemCount = checkImageAdapter.getCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 2) { - String url = resultBean.getData(); - mediaList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - if (realPaths.size() == 2) { - addImageView.setVisibility(View.GONE); - } - checkImageAdapter.setImageList(realPaths); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, realPaths); - } - }); - //删除按钮点击事件 - checkImageAdapter.isDeleteVisible(true); - checkImageAdapter.setOnDeleteClickListener(new ImageGridViewAdapter.OnDeleteItemClickListener() { - @Override - public void onClick(int position) { - mediaList.remove(position); - realPaths.remove(position); - checkImageAdapter.setImageList(realPaths); - if (realPaths.size() != 2) { - addImageView.setVisibility(View.VISIBLE); - } - } - }); - } else { - ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); - } - } - } - - @Override - public void obtainUploadVideoResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainNextNodeData(CaseNextNodeBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("核实情况"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - caseCheckStatusView.setText(dataBean.getNextOperation()); - caseCheckOptView.setText(dataBean.getNextOperation()); - changeState = String.valueOf(dataBean.getNextState()); - } - }).build().show(); - } else { - ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("上传失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (uploadImagePresenter != null) { - uploadImagePresenter.disposeRetrofitRequest(); - } - if (caseNextNodePresenter != null) { - caseNextNodePresenter.disposeRetrofitRequest(); - } - if (caseHandlePresenter != null) { - caseHandlePresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java deleted file mode 100644 index a5f468d..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ /dev/null @@ -1,458 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.bean.CaseNextNodeBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl; -import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl; -import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailHandleView; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.mvp.view.ICaseNextNodeView; -import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.ui.fragment.check.CaseCheckFragment; -import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.luck.picture.lib.PictureSelector; -import com.luck.picture.lib.config.PictureConfig; -import com.luck.picture.lib.entity.LocalMedia; -import com.luck.picture.lib.tools.PictureFileUtils; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.dialog.QMUIDialog; -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, - IUploadFileView, ICaseNextNodeView, ICaseDetailHandleView { - - private Context context = this; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.caseHandleResultView) - TextView caseHandleResultView; - @BindView(R.id.caseHandleTimeView) - TextView caseHandleTimeView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.addImageView) - ImageView addImageView; - @BindView(R.id.caseCheckOptView) - TextView caseCheckOptView; - @BindView(R.id.caseCheckStatusView) - TextView caseCheckStatusView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private CaseDetailPresenterImpl caseDetailPresenter; - private UploadImagePresenterImpl uploadImagePresenter; - private CaseNextNodePresenterImpl caseNextNodePresenter; - private CaseHandlePresenterImpl caseHandlePresenter; - - private String id; - private String changeState; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private ArrayList realPaths = new ArrayList<>();//真实图片路径 - private List mediaList = new ArrayList<>();//上传到服务器的数据集 - private QMUITipDialog submitDialog; - private ImageGridViewAdapter checkImageAdapter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_check_detail; - } - - @Override - protected String setTitleName() { - return "案卷核查"; - } - - @Override - public void initData() { - id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - - uploadImagePresenter = new UploadImagePresenterImpl(this); - caseNextNodePresenter = new CaseNextNodePresenterImpl(this); - caseHandlePresenter = new CaseHandlePresenterImpl(this); - submitDialog = new QMUITipDialog.Builder(this) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord("处理中,请稍后") - .create(); - checkImageAdapter = new ImageGridViewAdapter(this); - checkGridView.setAdapter(checkImageAdapter); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.addImageView: - new QMUIDialog.MenuDialogBuilder(this) - .addItem("相册中选取", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.selectPicture(CaseCheckDetailActivity.this); - } - }) - .addItem("相机拍照", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.takePicture(CaseCheckDetailActivity.this); - } - }) - .create().show(); - break; - case R.id.caseCheckLayout: - caseNextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); - break; - case R.id.submitButton: - submitCase();//案卷提交 - break; - default: - break; - } - } - - private void submitCase() { - String remarks = caseCheckOptView.getText().toString(); - if (TextUtils.isEmpty(remarks)) { - ToastHelper.showToast("核查意见不能为空", ToastHelper.WARING); - return; - } - if (TextUtils.isEmpty(changeState)) { - ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); - return; - } - if (checkImageAdapter.getCount() != 2) { - ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); - return; - } - caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), - changeState, remarks, StringHelper.reformatURL(mediaList)); - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - switch (requestCode) { - case PictureConfig.CHOOSE_REQUEST: - List selectList = PictureSelector.obtainMultipleResult(data); - for (LocalMedia media : selectList) { - File file = new File(media.getCompressPath()); - if (file.length() <= Constant.IMAGE_MINUS_SIZE) { - ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); - continue; - } - uploadImagePresenter.onReadyRetrofitRequest(file); - } - break; - case PictureConfig.REQUEST_CAMERA: - LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); - break; - default: - break; - } - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - - /** - * 图片 - * */ - //核实照片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - - //处理照片 - String processImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(processImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = processImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - caseHandleResultView.setText(data.getProcessRemarks().equals("") ? "无处理意见" : data.getProcessRemarks()); - //TODO 服务器返回数据缺少此字段,暂时注掉 -// caseHandleTimeView.setText(); - } - } - - @Override - public void showProgress() { - submitDialog.show(); - } - - @Override - public void hideProgress() { - submitDialog.dismiss(); - } - - @Override - public void obtainCaseHandleResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("案卷核查提交成功", ToastHelper.SUCCESS); - //案卷办完以后通知待办和已办刷新数据 - CaseCheckFragment.sendEmptyMessage(Constant.CASE_CHECK_OK); - CaseCheckedFragment.sendEmptyMessage(Constant.CASE_CHECK_OK); - finish(); - } else { - ToastHelper.showToast("案卷核查提交失败,请检查", ToastHelper.ERROR); - } - } - - @Override - public void obtainUploadAudioResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainUploadImageResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - PictureFileUtils.deleteAllCacheDirFile(this); - /** - * 系统路径static拼接图片返回路径 - * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg - */ - //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg - int sumItemCount = checkImageAdapter.getCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 2) { - String url = resultBean.getData(); - mediaList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - if (realPaths.size() == 2) { - addImageView.setVisibility(View.GONE); - } - checkImageAdapter.setImageList(realPaths); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, realPaths); - } - }); - //删除按钮点击事件 - checkImageAdapter.isDeleteVisible(true); - checkImageAdapter.setOnDeleteClickListener(new ImageGridViewAdapter.OnDeleteItemClickListener() { - @Override - public void onClick(int position) { - mediaList.remove(position); - realPaths.remove(position); - checkImageAdapter.setImageList(realPaths); - if (realPaths.size() != 2) { - addImageView.setVisibility(View.VISIBLE); - } - } - }); - } else { - ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); - } - } - } - - @Override - public void obtainUploadVideoResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainNextNodeData(CaseNextNodeBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("核实情况"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - caseCheckStatusView.setText(dataBean.getNextOperation()); - caseCheckOptView.setText(dataBean.getNextOperation()); - changeState = String.valueOf(dataBean.getNextState()); - } - }).build().show(); - } else { - ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("上传失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (uploadImagePresenter != null) { - uploadImagePresenter.disposeRetrofitRequest(); - } - if (caseNextNodePresenter != null) { - caseNextNodePresenter.disposeRetrofitRequest(); - } - if (caseHandlePresenter != null) { - caseHandlePresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.kt new file mode 100644 index 0000000..c7d9d48 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.kt @@ -0,0 +1,340 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.bean.CaseNextNodeBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl +import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailHandleView +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.mvp.view.ICaseNextNodeView +import com.casic.dcms.mvp.view.IUploadFileView +import com.casic.dcms.ui.fragment.check.CaseCheckFragment +import com.casic.dcms.ui.fragment.check.CaseCheckedFragment +import com.casic.dcms.utils.* +import com.luck.picture.lib.PictureSelector +import com.luck.picture.lib.config.PictureConfig +import com.luck.picture.lib.tools.PictureFileUtils +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import com.qmuiteam.qmui.widget.dialog.QMUIDialog.MenuDialogBuilder +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog +import kotlinx.android.synthetic.main.activity_case_check_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import java.io.File +import java.util.* + +class CaseCheckDetailActivity : BaseCaseActivity(), ICaseDetailView, + IUploadFileView, ICaseNextNodeView, ICaseDetailHandleView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private lateinit var uploadImagePresenter: UploadImagePresenterImpl + private lateinit var caseNextNodePresenter: CaseNextNodePresenterImpl + private lateinit var caseHandlePresenter: CaseHandlePresenterImpl + private lateinit var id: String + private lateinit var changeState: String + private var submitDialog: QMUITipDialog? = null + private var checkImageAdapter: ImageGridViewAdapter? = null + private var data = CaseDetailBean.DataBean() + private val realPaths = ArrayList() //真实图片路径 + private val mediaList: MutableList = ArrayList() //上传到服务器的数据集 + + override fun initLayoutView(): Int = R.layout.activity_case_check_detail + + override fun setTitleName(): String { + return "案卷核查" + } + + override fun initData() { + id = intent.getStringExtra("id")!! + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + uploadImagePresenter = UploadImagePresenterImpl(this) + caseNextNodePresenter = CaseNextNodePresenterImpl(this) + caseHandlePresenter = CaseHandlePresenterImpl(this) + submitDialog = QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create() + checkImageAdapter = ImageGridViewAdapter(this) + checkGridView.adapter = checkImageAdapter + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + + addImageView.setOnClickListener { + MenuDialogBuilder(this) + .addItem("相册中选取") { dialog, which -> + dialog.dismiss() + OtherUtils.selectPicture(this@CaseCheckDetailActivity) + } + .addItem("相机拍照") { dialog, which -> + dialog.dismiss() + OtherUtils.takePicture(this@CaseCheckDetailActivity) + } + .create().show() + } + + caseCheckLayout.setOnClickListener { + caseNextNodePresenter.onReadyRetrofitRequest(data.caseState.toString()) + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + //案卷提交 + val remarks: String = caseCheckOptView.text.toString() + if (TextUtils.isEmpty(remarks)) { + ToastHelper.showToast("核查意见不能为空", ToastHelper.WARING) + return@setOnClickListener + } + if (TextUtils.isEmpty(changeState)) { + ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING) + return@setOnClickListener + } + if (checkImageAdapter!!.count != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING) + return@setOnClickListener + } + caseHandlePresenter.onReadyRetrofitRequest( + data.processId, id, data.caseState.toString(), + changeState, remarks, StringHelper.reformatURL(mediaList) + ) + } + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (resultCode == RESULT_OK) { + when (requestCode) { + PictureConfig.CHOOSE_REQUEST -> { + val selectList = PictureSelector.obtainMultipleResult(data) + for (media in selectList) { + val file = File(media.compressPath) + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR) + continue + } + uploadImagePresenter.onReadyRetrofitRequest(file) + } + } + PictureConfig.REQUEST_CAMERA -> { + val localMedia = PictureSelector.obtainMultipleResult(data)[0] + uploadImagePresenter.onReadyRetrofitRequest(File(localMedia.compressPath)) + } + } + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = + if (data.communityName == "") "无更详细社区信息" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + /** + * 图片 + */ + //核实照片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + + //处理照片 + val processImages = data.fileIdProcess + if (!TextUtils.isEmpty(processImages)) { + val urls = ArrayList() + val split = processImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + caseHandleResultView.text = + if (data.processRemarks == "") "无处理意见" else data.processRemarks + //TODO 服务器返回数据缺少此字段,暂时注掉 +// caseHandleTimeView.setText(); + } + } + + override fun showProgress() { + submitDialog!!.show() + } + + override fun hideProgress() { + submitDialog!!.dismiss() + } + + override fun obtainCaseHandleResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + ToastHelper.showToast("案卷核查提交成功", ToastHelper.SUCCESS) + //案卷办完以后通知待办和已办刷新数据 + CaseCheckFragment.sendEmptyMessage(Constant.CASE_CHECK_OK) + CaseCheckedFragment.sendEmptyMessage(Constant.CASE_CHECK_OK) + finish() + } else { + ToastHelper.showToast("案卷核查提交失败,请检查", ToastHelper.ERROR) + } + } + + override fun obtainUploadAudioResult(resultBean: ActionResultBean) {} + override fun obtainUploadImageResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + PictureFileUtils.deleteAllCacheDirFile(this) + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + val sumItemCount = checkImageAdapter!!.count + 1 //每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + val url = resultBean.data + mediaList.add(url) + realPaths.add(StringHelper.appendCompleteURL(url)) + if (realPaths.size == 2) { + addImageView.visibility = View.GONE + } + checkImageAdapter!!.setImageList(realPaths) + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, realPaths) + } + //删除按钮点击事件 + checkImageAdapter!!.isDeleteVisible(true) + checkImageAdapter!!.setOnDeleteClickListener { position -> + mediaList.removeAt(position) + realPaths.removeAt(position) + checkImageAdapter!!.setImageList(realPaths) + if (realPaths.size != 2) { + addImageView.visibility = View.VISIBLE + } + } + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING) + } + } + } + + override fun obtainUploadVideoResult(resultBean: ActionResultBean) {} + + override fun obtainNextNodeData(resultBean: CaseNextNodeBean) { + if (resultBean.isSuccess) { + val dataBeans = resultBean.data + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("核实情况") + for (dataBean in dataBeans) { + sheetBuilder.addItem(dataBean.nextOperation) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + val dataBean = dataBeans[position] + caseCheckStatusView.text = dataBean.nextOperation + caseCheckOptView.text = dataBean.nextOperation + changeState = dataBean.nextState.toString() + }.build().show() + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR) + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("上传失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + uploadImagePresenter.disposeRetrofitRequest() + caseNextNodePresenter.disposeRetrofitRequest() + caseHandlePresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java deleted file mode 100644 index a5f468d..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ /dev/null @@ -1,458 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.bean.CaseNextNodeBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl; -import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl; -import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailHandleView; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.mvp.view.ICaseNextNodeView; -import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.ui.fragment.check.CaseCheckFragment; -import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.luck.picture.lib.PictureSelector; -import com.luck.picture.lib.config.PictureConfig; -import com.luck.picture.lib.entity.LocalMedia; -import com.luck.picture.lib.tools.PictureFileUtils; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.dialog.QMUIDialog; -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, - IUploadFileView, ICaseNextNodeView, ICaseDetailHandleView { - - private Context context = this; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.caseHandleResultView) - TextView caseHandleResultView; - @BindView(R.id.caseHandleTimeView) - TextView caseHandleTimeView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.addImageView) - ImageView addImageView; - @BindView(R.id.caseCheckOptView) - TextView caseCheckOptView; - @BindView(R.id.caseCheckStatusView) - TextView caseCheckStatusView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private CaseDetailPresenterImpl caseDetailPresenter; - private UploadImagePresenterImpl uploadImagePresenter; - private CaseNextNodePresenterImpl caseNextNodePresenter; - private CaseHandlePresenterImpl caseHandlePresenter; - - private String id; - private String changeState; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private ArrayList realPaths = new ArrayList<>();//真实图片路径 - private List mediaList = new ArrayList<>();//上传到服务器的数据集 - private QMUITipDialog submitDialog; - private ImageGridViewAdapter checkImageAdapter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_check_detail; - } - - @Override - protected String setTitleName() { - return "案卷核查"; - } - - @Override - public void initData() { - id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - - uploadImagePresenter = new UploadImagePresenterImpl(this); - caseNextNodePresenter = new CaseNextNodePresenterImpl(this); - caseHandlePresenter = new CaseHandlePresenterImpl(this); - submitDialog = new QMUITipDialog.Builder(this) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord("处理中,请稍后") - .create(); - checkImageAdapter = new ImageGridViewAdapter(this); - checkGridView.setAdapter(checkImageAdapter); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.addImageView: - new QMUIDialog.MenuDialogBuilder(this) - .addItem("相册中选取", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.selectPicture(CaseCheckDetailActivity.this); - } - }) - .addItem("相机拍照", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.takePicture(CaseCheckDetailActivity.this); - } - }) - .create().show(); - break; - case R.id.caseCheckLayout: - caseNextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); - break; - case R.id.submitButton: - submitCase();//案卷提交 - break; - default: - break; - } - } - - private void submitCase() { - String remarks = caseCheckOptView.getText().toString(); - if (TextUtils.isEmpty(remarks)) { - ToastHelper.showToast("核查意见不能为空", ToastHelper.WARING); - return; - } - if (TextUtils.isEmpty(changeState)) { - ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); - return; - } - if (checkImageAdapter.getCount() != 2) { - ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); - return; - } - caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), - changeState, remarks, StringHelper.reformatURL(mediaList)); - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - switch (requestCode) { - case PictureConfig.CHOOSE_REQUEST: - List selectList = PictureSelector.obtainMultipleResult(data); - for (LocalMedia media : selectList) { - File file = new File(media.getCompressPath()); - if (file.length() <= Constant.IMAGE_MINUS_SIZE) { - ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); - continue; - } - uploadImagePresenter.onReadyRetrofitRequest(file); - } - break; - case PictureConfig.REQUEST_CAMERA: - LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); - break; - default: - break; - } - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - - /** - * 图片 - * */ - //核实照片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - - //处理照片 - String processImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(processImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = processImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - caseHandleResultView.setText(data.getProcessRemarks().equals("") ? "无处理意见" : data.getProcessRemarks()); - //TODO 服务器返回数据缺少此字段,暂时注掉 -// caseHandleTimeView.setText(); - } - } - - @Override - public void showProgress() { - submitDialog.show(); - } - - @Override - public void hideProgress() { - submitDialog.dismiss(); - } - - @Override - public void obtainCaseHandleResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("案卷核查提交成功", ToastHelper.SUCCESS); - //案卷办完以后通知待办和已办刷新数据 - CaseCheckFragment.sendEmptyMessage(Constant.CASE_CHECK_OK); - CaseCheckedFragment.sendEmptyMessage(Constant.CASE_CHECK_OK); - finish(); - } else { - ToastHelper.showToast("案卷核查提交失败,请检查", ToastHelper.ERROR); - } - } - - @Override - public void obtainUploadAudioResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainUploadImageResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - PictureFileUtils.deleteAllCacheDirFile(this); - /** - * 系统路径static拼接图片返回路径 - * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg - */ - //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg - int sumItemCount = checkImageAdapter.getCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 2) { - String url = resultBean.getData(); - mediaList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - if (realPaths.size() == 2) { - addImageView.setVisibility(View.GONE); - } - checkImageAdapter.setImageList(realPaths); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, realPaths); - } - }); - //删除按钮点击事件 - checkImageAdapter.isDeleteVisible(true); - checkImageAdapter.setOnDeleteClickListener(new ImageGridViewAdapter.OnDeleteItemClickListener() { - @Override - public void onClick(int position) { - mediaList.remove(position); - realPaths.remove(position); - checkImageAdapter.setImageList(realPaths); - if (realPaths.size() != 2) { - addImageView.setVisibility(View.VISIBLE); - } - } - }); - } else { - ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); - } - } - } - - @Override - public void obtainUploadVideoResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainNextNodeData(CaseNextNodeBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("核实情况"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - caseCheckStatusView.setText(dataBean.getNextOperation()); - caseCheckOptView.setText(dataBean.getNextOperation()); - changeState = String.valueOf(dataBean.getNextState()); - } - }).build().show(); - } else { - ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("上传失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (uploadImagePresenter != null) { - uploadImagePresenter.disposeRetrofitRequest(); - } - if (caseNextNodePresenter != null) { - caseNextNodePresenter.disposeRetrofitRequest(); - } - if (caseHandlePresenter != null) { - caseHandlePresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.kt new file mode 100644 index 0000000..c7d9d48 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.kt @@ -0,0 +1,340 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.bean.CaseNextNodeBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl +import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailHandleView +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.mvp.view.ICaseNextNodeView +import com.casic.dcms.mvp.view.IUploadFileView +import com.casic.dcms.ui.fragment.check.CaseCheckFragment +import com.casic.dcms.ui.fragment.check.CaseCheckedFragment +import com.casic.dcms.utils.* +import com.luck.picture.lib.PictureSelector +import com.luck.picture.lib.config.PictureConfig +import com.luck.picture.lib.tools.PictureFileUtils +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import com.qmuiteam.qmui.widget.dialog.QMUIDialog.MenuDialogBuilder +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog +import kotlinx.android.synthetic.main.activity_case_check_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import java.io.File +import java.util.* + +class CaseCheckDetailActivity : BaseCaseActivity(), ICaseDetailView, + IUploadFileView, ICaseNextNodeView, ICaseDetailHandleView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private lateinit var uploadImagePresenter: UploadImagePresenterImpl + private lateinit var caseNextNodePresenter: CaseNextNodePresenterImpl + private lateinit var caseHandlePresenter: CaseHandlePresenterImpl + private lateinit var id: String + private lateinit var changeState: String + private var submitDialog: QMUITipDialog? = null + private var checkImageAdapter: ImageGridViewAdapter? = null + private var data = CaseDetailBean.DataBean() + private val realPaths = ArrayList() //真实图片路径 + private val mediaList: MutableList = ArrayList() //上传到服务器的数据集 + + override fun initLayoutView(): Int = R.layout.activity_case_check_detail + + override fun setTitleName(): String { + return "案卷核查" + } + + override fun initData() { + id = intent.getStringExtra("id")!! + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + uploadImagePresenter = UploadImagePresenterImpl(this) + caseNextNodePresenter = CaseNextNodePresenterImpl(this) + caseHandlePresenter = CaseHandlePresenterImpl(this) + submitDialog = QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create() + checkImageAdapter = ImageGridViewAdapter(this) + checkGridView.adapter = checkImageAdapter + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + + addImageView.setOnClickListener { + MenuDialogBuilder(this) + .addItem("相册中选取") { dialog, which -> + dialog.dismiss() + OtherUtils.selectPicture(this@CaseCheckDetailActivity) + } + .addItem("相机拍照") { dialog, which -> + dialog.dismiss() + OtherUtils.takePicture(this@CaseCheckDetailActivity) + } + .create().show() + } + + caseCheckLayout.setOnClickListener { + caseNextNodePresenter.onReadyRetrofitRequest(data.caseState.toString()) + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + //案卷提交 + val remarks: String = caseCheckOptView.text.toString() + if (TextUtils.isEmpty(remarks)) { + ToastHelper.showToast("核查意见不能为空", ToastHelper.WARING) + return@setOnClickListener + } + if (TextUtils.isEmpty(changeState)) { + ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING) + return@setOnClickListener + } + if (checkImageAdapter!!.count != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING) + return@setOnClickListener + } + caseHandlePresenter.onReadyRetrofitRequest( + data.processId, id, data.caseState.toString(), + changeState, remarks, StringHelper.reformatURL(mediaList) + ) + } + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (resultCode == RESULT_OK) { + when (requestCode) { + PictureConfig.CHOOSE_REQUEST -> { + val selectList = PictureSelector.obtainMultipleResult(data) + for (media in selectList) { + val file = File(media.compressPath) + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR) + continue + } + uploadImagePresenter.onReadyRetrofitRequest(file) + } + } + PictureConfig.REQUEST_CAMERA -> { + val localMedia = PictureSelector.obtainMultipleResult(data)[0] + uploadImagePresenter.onReadyRetrofitRequest(File(localMedia.compressPath)) + } + } + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = + if (data.communityName == "") "无更详细社区信息" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + /** + * 图片 + */ + //核实照片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + + //处理照片 + val processImages = data.fileIdProcess + if (!TextUtils.isEmpty(processImages)) { + val urls = ArrayList() + val split = processImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + caseHandleResultView.text = + if (data.processRemarks == "") "无处理意见" else data.processRemarks + //TODO 服务器返回数据缺少此字段,暂时注掉 +// caseHandleTimeView.setText(); + } + } + + override fun showProgress() { + submitDialog!!.show() + } + + override fun hideProgress() { + submitDialog!!.dismiss() + } + + override fun obtainCaseHandleResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + ToastHelper.showToast("案卷核查提交成功", ToastHelper.SUCCESS) + //案卷办完以后通知待办和已办刷新数据 + CaseCheckFragment.sendEmptyMessage(Constant.CASE_CHECK_OK) + CaseCheckedFragment.sendEmptyMessage(Constant.CASE_CHECK_OK) + finish() + } else { + ToastHelper.showToast("案卷核查提交失败,请检查", ToastHelper.ERROR) + } + } + + override fun obtainUploadAudioResult(resultBean: ActionResultBean) {} + override fun obtainUploadImageResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + PictureFileUtils.deleteAllCacheDirFile(this) + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + val sumItemCount = checkImageAdapter!!.count + 1 //每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + val url = resultBean.data + mediaList.add(url) + realPaths.add(StringHelper.appendCompleteURL(url)) + if (realPaths.size == 2) { + addImageView.visibility = View.GONE + } + checkImageAdapter!!.setImageList(realPaths) + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, realPaths) + } + //删除按钮点击事件 + checkImageAdapter!!.isDeleteVisible(true) + checkImageAdapter!!.setOnDeleteClickListener { position -> + mediaList.removeAt(position) + realPaths.removeAt(position) + checkImageAdapter!!.setImageList(realPaths) + if (realPaths.size != 2) { + addImageView.visibility = View.VISIBLE + } + } + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING) + } + } + } + + override fun obtainUploadVideoResult(resultBean: ActionResultBean) {} + + override fun obtainNextNodeData(resultBean: CaseNextNodeBean) { + if (resultBean.isSuccess) { + val dataBeans = resultBean.data + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("核实情况") + for (dataBean in dataBeans) { + sheetBuilder.addItem(dataBean.nextOperation) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + val dataBean = dataBeans[position] + caseCheckStatusView.text = dataBean.nextOperation + caseCheckOptView.text = dataBean.nextOperation + changeState = dataBean.nextState.toString() + }.build().show() + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR) + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("上传失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + uploadImagePresenter.disposeRetrofitRequest() + caseNextNodePresenter.disposeRetrofitRequest() + caseHandlePresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java deleted file mode 100644 index 996401c..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ /dev/null @@ -1,460 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.EditText; -import android.widget.GridView; -import android.widget.ImageView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.annotation.Nullable; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.bean.CaseNextNodeBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl; -import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl; -import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailHandleView; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.mvp.view.ICaseNextNodeView; -import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.ui.fragment.handle.CaseHandledFragment; -import com.casic.dcms.ui.fragment.handle.CaseTodoFragment; -import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; -import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.luck.picture.lib.PictureSelector; -import com.luck.picture.lib.config.PictureConfig; -import com.luck.picture.lib.entity.LocalMedia; -import com.luck.picture.lib.tools.PictureFileUtils; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.dialog.QMUIDialog; -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandleDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView, ICaseNextNodeView, IUploadFileView, ICaseDetailHandleView { - - private Context context = this; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.caseHandleResultView) - TextView caseHandleResultView; - @BindView(R.id.imageLayout) - RelativeLayout imageLayout; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.addImageView) - ImageView addImageView; - @BindView(R.id.reasonLayout) - RelativeLayout reasonLayout; - @BindView(R.id.caseReasonView) - EditText caseReasonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private String title; - private String id; - private String changeState; - private String caseReason; - private String approvalResult; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private ArrayList realPaths = new ArrayList<>();//真实图片路径 - private List mediaList = new ArrayList<>();//上传到服务器的数据集 - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseNextNodePresenterImpl caseNextNodePresenter; - private UploadImagePresenterImpl uploadImagePresenter; - private CaseHandlePresenterImpl caseHandlePresenter; - private QMUITipDialog submitDialog; - private ImageGridViewAdapter handleImageAdapter;//处理图片的adapter - - @Override - public int initLayoutView() { - return R.layout.activity_case_handle_detail; - } - - @Override - protected String setTitleName() { - return title; - } - - @Override - public void initData() { - title = getIntent().getStringExtra("title"); - id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - - caseNextNodePresenter = new CaseNextNodePresenterImpl(this); - uploadImagePresenter = new UploadImagePresenterImpl(this); - caseHandlePresenter = new CaseHandlePresenterImpl(this); - submitDialog = new QMUITipDialog.Builder(this) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord("处理中,请稍后") - .create(); - handleImageAdapter = new ImageGridViewAdapter(this); - handleGridView.setAdapter(handleImageAdapter); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - caseHandleView.setText(data.getCaseStateName().equals("") ? "无处理意见" : data.getCaseStateName()); - - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - } - } - - @Override - public void obtainNextNodeData(CaseNextNodeBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("处理结果"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - String nextOperation = dataBean.getNextOperation(); - caseHandleResultView.setText(nextOperation); - if (nextOperation.equals("处理完成")) { - imageLayout.setVisibility(View.VISIBLE); - reasonLayout.setVisibility(View.GONE); - } else { - imageLayout.setVisibility(View.GONE); - reasonLayout.setVisibility(View.VISIBLE); - } - changeState = String.valueOf(dataBean.getNextState()); - approvalResult = dataBean.getApprovalResult(); - } - }).build().show(); - } else { - ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); - } - } - - @OnClick({R.id.locationMapView, R.id.caseHandleResultLayout, R.id.addImageView, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.caseHandleResultLayout: - caseNextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); - break; - case R.id.addImageView: - new QMUIDialog.MenuDialogBuilder(this) - .addItem("相册中选取", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.selectPicture(CaseHandleDetailActivity.this); - } - }) - .addItem("相机拍照", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.takePicture(CaseHandleDetailActivity.this); - } - }) - .create().show(); - break; - case R.id.submitButton: - submitCase();//案卷提交 - break; - default: - break; - } - } - - private void submitCase() { - String handleResult = caseHandleResultView.getText().toString(); - if (handleResult.equals("")) { - ToastHelper.showToast("还未选择处理结果", ToastHelper.WARING); - return; - } - if (handleResult.equals("处理完成")) { - //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getCount() != 2) { - ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); - return; - } - } - if (handleResult.equals("申请延期") || handleResult.equals("申请调整")) { - caseReason = caseReasonView.getText().toString(); - if (TextUtils.isEmpty(caseReason)) { - ToastHelper.showToast("延期/调整的原因必须填写", ToastHelper.WARING); - return; - } - } - caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), - changeState, caseReason, StringHelper.reformatURL(mediaList), approvalResult); - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - switch (requestCode) { - case PictureConfig.CHOOSE_REQUEST: - List selectList = PictureSelector.obtainMultipleResult(data); - for (LocalMedia media : selectList) { - File file = new File(media.getCompressPath()); - if (file.length() <= Constant.IMAGE_MINUS_SIZE) { - ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); - continue; - } - uploadImagePresenter.onReadyRetrofitRequest(file); - } - break; - case PictureConfig.REQUEST_CAMERA: - LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); - break; - default: - break; - } - } - } - - @Override - public void showProgress() { - submitDialog.show(); - } - - @Override - public void hideProgress() { - submitDialog.dismiss(); - } - - @Override - public void obtainUploadAudioResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainUploadImageResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - PictureFileUtils.deleteAllCacheDirFile(this); - /** - * 系统路径static拼接图片返回路径 - * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg - */ - //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg - int sumItemCount = handleImageAdapter.getCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 2) { - String url = resultBean.getData(); - mediaList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - if (realPaths.size() == 2) { - addImageView.setVisibility(View.GONE); - } - handleImageAdapter.setImageList(realPaths); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, realPaths); - } - }); - //删除按钮点击事件 - handleImageAdapter.isDeleteVisible(true); - handleImageAdapter.setOnDeleteClickListener(new ImageGridViewAdapter.OnDeleteItemClickListener() { - @Override - public void onClick(int position) { - mediaList.remove(position); - realPaths.remove(position); - handleImageAdapter.setImageList(realPaths); - if (realPaths.size() != 2) { - addImageView.setVisibility(View.VISIBLE); - } - } - }); - } else { - ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); - } - } - } - - @Override - public void obtainUploadVideoResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - public void obtainCaseHandleResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); - switch (title) { - case "超时案卷": - OvertimeCaseFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - break; - case "紧急案卷": - UrgentCaseFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - break; - case "待办案卷": - CaseTodoFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - break; - } - finish(); - } else { - ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (caseNextNodePresenter != null) { - caseNextNodePresenter.disposeRetrofitRequest(); - } - if (uploadImagePresenter != null) { - uploadImagePresenter.disposeRetrofitRequest(); - } - if (caseHandlePresenter != null) { - caseHandlePresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java deleted file mode 100644 index a5f468d..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ /dev/null @@ -1,458 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.bean.CaseNextNodeBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl; -import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl; -import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailHandleView; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.mvp.view.ICaseNextNodeView; -import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.ui.fragment.check.CaseCheckFragment; -import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.luck.picture.lib.PictureSelector; -import com.luck.picture.lib.config.PictureConfig; -import com.luck.picture.lib.entity.LocalMedia; -import com.luck.picture.lib.tools.PictureFileUtils; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.dialog.QMUIDialog; -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, - IUploadFileView, ICaseNextNodeView, ICaseDetailHandleView { - - private Context context = this; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.caseHandleResultView) - TextView caseHandleResultView; - @BindView(R.id.caseHandleTimeView) - TextView caseHandleTimeView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.addImageView) - ImageView addImageView; - @BindView(R.id.caseCheckOptView) - TextView caseCheckOptView; - @BindView(R.id.caseCheckStatusView) - TextView caseCheckStatusView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private CaseDetailPresenterImpl caseDetailPresenter; - private UploadImagePresenterImpl uploadImagePresenter; - private CaseNextNodePresenterImpl caseNextNodePresenter; - private CaseHandlePresenterImpl caseHandlePresenter; - - private String id; - private String changeState; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private ArrayList realPaths = new ArrayList<>();//真实图片路径 - private List mediaList = new ArrayList<>();//上传到服务器的数据集 - private QMUITipDialog submitDialog; - private ImageGridViewAdapter checkImageAdapter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_check_detail; - } - - @Override - protected String setTitleName() { - return "案卷核查"; - } - - @Override - public void initData() { - id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - - uploadImagePresenter = new UploadImagePresenterImpl(this); - caseNextNodePresenter = new CaseNextNodePresenterImpl(this); - caseHandlePresenter = new CaseHandlePresenterImpl(this); - submitDialog = new QMUITipDialog.Builder(this) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord("处理中,请稍后") - .create(); - checkImageAdapter = new ImageGridViewAdapter(this); - checkGridView.setAdapter(checkImageAdapter); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.addImageView: - new QMUIDialog.MenuDialogBuilder(this) - .addItem("相册中选取", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.selectPicture(CaseCheckDetailActivity.this); - } - }) - .addItem("相机拍照", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.takePicture(CaseCheckDetailActivity.this); - } - }) - .create().show(); - break; - case R.id.caseCheckLayout: - caseNextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); - break; - case R.id.submitButton: - submitCase();//案卷提交 - break; - default: - break; - } - } - - private void submitCase() { - String remarks = caseCheckOptView.getText().toString(); - if (TextUtils.isEmpty(remarks)) { - ToastHelper.showToast("核查意见不能为空", ToastHelper.WARING); - return; - } - if (TextUtils.isEmpty(changeState)) { - ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); - return; - } - if (checkImageAdapter.getCount() != 2) { - ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); - return; - } - caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), - changeState, remarks, StringHelper.reformatURL(mediaList)); - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - switch (requestCode) { - case PictureConfig.CHOOSE_REQUEST: - List selectList = PictureSelector.obtainMultipleResult(data); - for (LocalMedia media : selectList) { - File file = new File(media.getCompressPath()); - if (file.length() <= Constant.IMAGE_MINUS_SIZE) { - ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); - continue; - } - uploadImagePresenter.onReadyRetrofitRequest(file); - } - break; - case PictureConfig.REQUEST_CAMERA: - LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); - break; - default: - break; - } - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - - /** - * 图片 - * */ - //核实照片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - - //处理照片 - String processImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(processImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = processImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - caseHandleResultView.setText(data.getProcessRemarks().equals("") ? "无处理意见" : data.getProcessRemarks()); - //TODO 服务器返回数据缺少此字段,暂时注掉 -// caseHandleTimeView.setText(); - } - } - - @Override - public void showProgress() { - submitDialog.show(); - } - - @Override - public void hideProgress() { - submitDialog.dismiss(); - } - - @Override - public void obtainCaseHandleResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("案卷核查提交成功", ToastHelper.SUCCESS); - //案卷办完以后通知待办和已办刷新数据 - CaseCheckFragment.sendEmptyMessage(Constant.CASE_CHECK_OK); - CaseCheckedFragment.sendEmptyMessage(Constant.CASE_CHECK_OK); - finish(); - } else { - ToastHelper.showToast("案卷核查提交失败,请检查", ToastHelper.ERROR); - } - } - - @Override - public void obtainUploadAudioResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainUploadImageResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - PictureFileUtils.deleteAllCacheDirFile(this); - /** - * 系统路径static拼接图片返回路径 - * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg - */ - //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg - int sumItemCount = checkImageAdapter.getCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 2) { - String url = resultBean.getData(); - mediaList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - if (realPaths.size() == 2) { - addImageView.setVisibility(View.GONE); - } - checkImageAdapter.setImageList(realPaths); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, realPaths); - } - }); - //删除按钮点击事件 - checkImageAdapter.isDeleteVisible(true); - checkImageAdapter.setOnDeleteClickListener(new ImageGridViewAdapter.OnDeleteItemClickListener() { - @Override - public void onClick(int position) { - mediaList.remove(position); - realPaths.remove(position); - checkImageAdapter.setImageList(realPaths); - if (realPaths.size() != 2) { - addImageView.setVisibility(View.VISIBLE); - } - } - }); - } else { - ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); - } - } - } - - @Override - public void obtainUploadVideoResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainNextNodeData(CaseNextNodeBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("核实情况"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - caseCheckStatusView.setText(dataBean.getNextOperation()); - caseCheckOptView.setText(dataBean.getNextOperation()); - changeState = String.valueOf(dataBean.getNextState()); - } - }).build().show(); - } else { - ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("上传失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (uploadImagePresenter != null) { - uploadImagePresenter.disposeRetrofitRequest(); - } - if (caseNextNodePresenter != null) { - caseNextNodePresenter.disposeRetrofitRequest(); - } - if (caseHandlePresenter != null) { - caseHandlePresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.kt new file mode 100644 index 0000000..c7d9d48 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.kt @@ -0,0 +1,340 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.bean.CaseNextNodeBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl +import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailHandleView +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.mvp.view.ICaseNextNodeView +import com.casic.dcms.mvp.view.IUploadFileView +import com.casic.dcms.ui.fragment.check.CaseCheckFragment +import com.casic.dcms.ui.fragment.check.CaseCheckedFragment +import com.casic.dcms.utils.* +import com.luck.picture.lib.PictureSelector +import com.luck.picture.lib.config.PictureConfig +import com.luck.picture.lib.tools.PictureFileUtils +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import com.qmuiteam.qmui.widget.dialog.QMUIDialog.MenuDialogBuilder +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog +import kotlinx.android.synthetic.main.activity_case_check_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import java.io.File +import java.util.* + +class CaseCheckDetailActivity : BaseCaseActivity(), ICaseDetailView, + IUploadFileView, ICaseNextNodeView, ICaseDetailHandleView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private lateinit var uploadImagePresenter: UploadImagePresenterImpl + private lateinit var caseNextNodePresenter: CaseNextNodePresenterImpl + private lateinit var caseHandlePresenter: CaseHandlePresenterImpl + private lateinit var id: String + private lateinit var changeState: String + private var submitDialog: QMUITipDialog? = null + private var checkImageAdapter: ImageGridViewAdapter? = null + private var data = CaseDetailBean.DataBean() + private val realPaths = ArrayList() //真实图片路径 + private val mediaList: MutableList = ArrayList() //上传到服务器的数据集 + + override fun initLayoutView(): Int = R.layout.activity_case_check_detail + + override fun setTitleName(): String { + return "案卷核查" + } + + override fun initData() { + id = intent.getStringExtra("id")!! + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + uploadImagePresenter = UploadImagePresenterImpl(this) + caseNextNodePresenter = CaseNextNodePresenterImpl(this) + caseHandlePresenter = CaseHandlePresenterImpl(this) + submitDialog = QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create() + checkImageAdapter = ImageGridViewAdapter(this) + checkGridView.adapter = checkImageAdapter + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + + addImageView.setOnClickListener { + MenuDialogBuilder(this) + .addItem("相册中选取") { dialog, which -> + dialog.dismiss() + OtherUtils.selectPicture(this@CaseCheckDetailActivity) + } + .addItem("相机拍照") { dialog, which -> + dialog.dismiss() + OtherUtils.takePicture(this@CaseCheckDetailActivity) + } + .create().show() + } + + caseCheckLayout.setOnClickListener { + caseNextNodePresenter.onReadyRetrofitRequest(data.caseState.toString()) + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + //案卷提交 + val remarks: String = caseCheckOptView.text.toString() + if (TextUtils.isEmpty(remarks)) { + ToastHelper.showToast("核查意见不能为空", ToastHelper.WARING) + return@setOnClickListener + } + if (TextUtils.isEmpty(changeState)) { + ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING) + return@setOnClickListener + } + if (checkImageAdapter!!.count != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING) + return@setOnClickListener + } + caseHandlePresenter.onReadyRetrofitRequest( + data.processId, id, data.caseState.toString(), + changeState, remarks, StringHelper.reformatURL(mediaList) + ) + } + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (resultCode == RESULT_OK) { + when (requestCode) { + PictureConfig.CHOOSE_REQUEST -> { + val selectList = PictureSelector.obtainMultipleResult(data) + for (media in selectList) { + val file = File(media.compressPath) + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR) + continue + } + uploadImagePresenter.onReadyRetrofitRequest(file) + } + } + PictureConfig.REQUEST_CAMERA -> { + val localMedia = PictureSelector.obtainMultipleResult(data)[0] + uploadImagePresenter.onReadyRetrofitRequest(File(localMedia.compressPath)) + } + } + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = + if (data.communityName == "") "无更详细社区信息" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + /** + * 图片 + */ + //核实照片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + + //处理照片 + val processImages = data.fileIdProcess + if (!TextUtils.isEmpty(processImages)) { + val urls = ArrayList() + val split = processImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + caseHandleResultView.text = + if (data.processRemarks == "") "无处理意见" else data.processRemarks + //TODO 服务器返回数据缺少此字段,暂时注掉 +// caseHandleTimeView.setText(); + } + } + + override fun showProgress() { + submitDialog!!.show() + } + + override fun hideProgress() { + submitDialog!!.dismiss() + } + + override fun obtainCaseHandleResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + ToastHelper.showToast("案卷核查提交成功", ToastHelper.SUCCESS) + //案卷办完以后通知待办和已办刷新数据 + CaseCheckFragment.sendEmptyMessage(Constant.CASE_CHECK_OK) + CaseCheckedFragment.sendEmptyMessage(Constant.CASE_CHECK_OK) + finish() + } else { + ToastHelper.showToast("案卷核查提交失败,请检查", ToastHelper.ERROR) + } + } + + override fun obtainUploadAudioResult(resultBean: ActionResultBean) {} + override fun obtainUploadImageResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + PictureFileUtils.deleteAllCacheDirFile(this) + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + val sumItemCount = checkImageAdapter!!.count + 1 //每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + val url = resultBean.data + mediaList.add(url) + realPaths.add(StringHelper.appendCompleteURL(url)) + if (realPaths.size == 2) { + addImageView.visibility = View.GONE + } + checkImageAdapter!!.setImageList(realPaths) + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, realPaths) + } + //删除按钮点击事件 + checkImageAdapter!!.isDeleteVisible(true) + checkImageAdapter!!.setOnDeleteClickListener { position -> + mediaList.removeAt(position) + realPaths.removeAt(position) + checkImageAdapter!!.setImageList(realPaths) + if (realPaths.size != 2) { + addImageView.visibility = View.VISIBLE + } + } + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING) + } + } + } + + override fun obtainUploadVideoResult(resultBean: ActionResultBean) {} + + override fun obtainNextNodeData(resultBean: CaseNextNodeBean) { + if (resultBean.isSuccess) { + val dataBeans = resultBean.data + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("核实情况") + for (dataBean in dataBeans) { + sheetBuilder.addItem(dataBean.nextOperation) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + val dataBean = dataBeans[position] + caseCheckStatusView.text = dataBean.nextOperation + caseCheckOptView.text = dataBean.nextOperation + changeState = dataBean.nextState.toString() + }.build().show() + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR) + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("上传失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + uploadImagePresenter.disposeRetrofitRequest() + caseNextNodePresenter.disposeRetrofitRequest() + caseHandlePresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java deleted file mode 100644 index 996401c..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ /dev/null @@ -1,460 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.EditText; -import android.widget.GridView; -import android.widget.ImageView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.annotation.Nullable; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.bean.CaseNextNodeBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl; -import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl; -import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailHandleView; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.mvp.view.ICaseNextNodeView; -import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.ui.fragment.handle.CaseHandledFragment; -import com.casic.dcms.ui.fragment.handle.CaseTodoFragment; -import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; -import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.luck.picture.lib.PictureSelector; -import com.luck.picture.lib.config.PictureConfig; -import com.luck.picture.lib.entity.LocalMedia; -import com.luck.picture.lib.tools.PictureFileUtils; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.dialog.QMUIDialog; -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandleDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView, ICaseNextNodeView, IUploadFileView, ICaseDetailHandleView { - - private Context context = this; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.caseHandleResultView) - TextView caseHandleResultView; - @BindView(R.id.imageLayout) - RelativeLayout imageLayout; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.addImageView) - ImageView addImageView; - @BindView(R.id.reasonLayout) - RelativeLayout reasonLayout; - @BindView(R.id.caseReasonView) - EditText caseReasonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private String title; - private String id; - private String changeState; - private String caseReason; - private String approvalResult; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private ArrayList realPaths = new ArrayList<>();//真实图片路径 - private List mediaList = new ArrayList<>();//上传到服务器的数据集 - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseNextNodePresenterImpl caseNextNodePresenter; - private UploadImagePresenterImpl uploadImagePresenter; - private CaseHandlePresenterImpl caseHandlePresenter; - private QMUITipDialog submitDialog; - private ImageGridViewAdapter handleImageAdapter;//处理图片的adapter - - @Override - public int initLayoutView() { - return R.layout.activity_case_handle_detail; - } - - @Override - protected String setTitleName() { - return title; - } - - @Override - public void initData() { - title = getIntent().getStringExtra("title"); - id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - - caseNextNodePresenter = new CaseNextNodePresenterImpl(this); - uploadImagePresenter = new UploadImagePresenterImpl(this); - caseHandlePresenter = new CaseHandlePresenterImpl(this); - submitDialog = new QMUITipDialog.Builder(this) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord("处理中,请稍后") - .create(); - handleImageAdapter = new ImageGridViewAdapter(this); - handleGridView.setAdapter(handleImageAdapter); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - caseHandleView.setText(data.getCaseStateName().equals("") ? "无处理意见" : data.getCaseStateName()); - - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - } - } - - @Override - public void obtainNextNodeData(CaseNextNodeBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("处理结果"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - String nextOperation = dataBean.getNextOperation(); - caseHandleResultView.setText(nextOperation); - if (nextOperation.equals("处理完成")) { - imageLayout.setVisibility(View.VISIBLE); - reasonLayout.setVisibility(View.GONE); - } else { - imageLayout.setVisibility(View.GONE); - reasonLayout.setVisibility(View.VISIBLE); - } - changeState = String.valueOf(dataBean.getNextState()); - approvalResult = dataBean.getApprovalResult(); - } - }).build().show(); - } else { - ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); - } - } - - @OnClick({R.id.locationMapView, R.id.caseHandleResultLayout, R.id.addImageView, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.caseHandleResultLayout: - caseNextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); - break; - case R.id.addImageView: - new QMUIDialog.MenuDialogBuilder(this) - .addItem("相册中选取", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.selectPicture(CaseHandleDetailActivity.this); - } - }) - .addItem("相机拍照", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.takePicture(CaseHandleDetailActivity.this); - } - }) - .create().show(); - break; - case R.id.submitButton: - submitCase();//案卷提交 - break; - default: - break; - } - } - - private void submitCase() { - String handleResult = caseHandleResultView.getText().toString(); - if (handleResult.equals("")) { - ToastHelper.showToast("还未选择处理结果", ToastHelper.WARING); - return; - } - if (handleResult.equals("处理完成")) { - //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getCount() != 2) { - ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); - return; - } - } - if (handleResult.equals("申请延期") || handleResult.equals("申请调整")) { - caseReason = caseReasonView.getText().toString(); - if (TextUtils.isEmpty(caseReason)) { - ToastHelper.showToast("延期/调整的原因必须填写", ToastHelper.WARING); - return; - } - } - caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), - changeState, caseReason, StringHelper.reformatURL(mediaList), approvalResult); - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - switch (requestCode) { - case PictureConfig.CHOOSE_REQUEST: - List selectList = PictureSelector.obtainMultipleResult(data); - for (LocalMedia media : selectList) { - File file = new File(media.getCompressPath()); - if (file.length() <= Constant.IMAGE_MINUS_SIZE) { - ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); - continue; - } - uploadImagePresenter.onReadyRetrofitRequest(file); - } - break; - case PictureConfig.REQUEST_CAMERA: - LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); - break; - default: - break; - } - } - } - - @Override - public void showProgress() { - submitDialog.show(); - } - - @Override - public void hideProgress() { - submitDialog.dismiss(); - } - - @Override - public void obtainUploadAudioResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainUploadImageResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - PictureFileUtils.deleteAllCacheDirFile(this); - /** - * 系统路径static拼接图片返回路径 - * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg - */ - //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg - int sumItemCount = handleImageAdapter.getCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 2) { - String url = resultBean.getData(); - mediaList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - if (realPaths.size() == 2) { - addImageView.setVisibility(View.GONE); - } - handleImageAdapter.setImageList(realPaths); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, realPaths); - } - }); - //删除按钮点击事件 - handleImageAdapter.isDeleteVisible(true); - handleImageAdapter.setOnDeleteClickListener(new ImageGridViewAdapter.OnDeleteItemClickListener() { - @Override - public void onClick(int position) { - mediaList.remove(position); - realPaths.remove(position); - handleImageAdapter.setImageList(realPaths); - if (realPaths.size() != 2) { - addImageView.setVisibility(View.VISIBLE); - } - } - }); - } else { - ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); - } - } - } - - @Override - public void obtainUploadVideoResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - public void obtainCaseHandleResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); - switch (title) { - case "超时案卷": - OvertimeCaseFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - break; - case "紧急案卷": - UrgentCaseFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - break; - case "待办案卷": - CaseTodoFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - break; - } - finish(); - } else { - ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (caseNextNodePresenter != null) { - caseNextNodePresenter.disposeRetrofitRequest(); - } - if (uploadImagePresenter != null) { - uploadImagePresenter.disposeRetrofitRequest(); - } - if (caseHandlePresenter != null) { - caseHandlePresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.kt new file mode 100644 index 0000000..c17a12d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.kt @@ -0,0 +1,341 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.bean.CaseNextNodeBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl +import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailHandleView +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.mvp.view.ICaseNextNodeView +import com.casic.dcms.mvp.view.IUploadFileView +import com.casic.dcms.ui.fragment.handle.CaseHandledFragment +import com.casic.dcms.ui.fragment.handle.CaseTodoFragment +import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment +import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment +import com.casic.dcms.utils.* +import com.luck.picture.lib.PictureSelector +import com.luck.picture.lib.config.PictureConfig +import com.luck.picture.lib.tools.PictureFileUtils +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import com.qmuiteam.qmui.widget.dialog.QMUIDialog.MenuDialogBuilder +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog +import kotlinx.android.synthetic.main.activity_case_handle_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import java.io.File +import java.util.* + +class CaseHandleDetailActivity : BaseCaseActivity(), ICaseDetailView, ICaseNextNodeView, + IUploadFileView, ICaseDetailHandleView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private lateinit var caseNextNodePresenter: CaseNextNodePresenterImpl + private lateinit var uploadImagePresenter: UploadImagePresenterImpl + private lateinit var caseHandlePresenter: CaseHandlePresenterImpl + private lateinit var title: String + private lateinit var id: String + private lateinit var changeState: String + private lateinit var caseReason: String + private lateinit var approvalResult: String + private var submitDialog: QMUITipDialog? = null + private var handleImageAdapter: ImageGridViewAdapter? = null + private var data = CaseDetailBean.DataBean() + private val realPaths = ArrayList() //真实图片路径 + private val mediaList: MutableList = ArrayList() //上传到服务器的数据集 + + override fun initLayoutView(): Int = R.layout.activity_case_handle_detail + + override fun setTitleName(): String { + return title + } + + override fun initData() { + title = intent.getStringExtra("title")!! + id = intent.getStringExtra("id")!! + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + caseNextNodePresenter = CaseNextNodePresenterImpl(this) + uploadImagePresenter = UploadImagePresenterImpl(this) + caseHandlePresenter = CaseHandlePresenterImpl(this) + submitDialog = QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create() + handleImageAdapter = ImageGridViewAdapter(this) + handleGridView.adapter = handleImageAdapter + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + + caseHandleResultLayout.setOnClickListener { + caseNextNodePresenter.onReadyRetrofitRequest(data.caseState.toString()) + } + + addImageView.setOnClickListener { + MenuDialogBuilder(this) + .addItem("相册中选取") { dialog, which -> + dialog.dismiss() + OtherUtils.selectPicture(this@CaseHandleDetailActivity) + } + .addItem("相机拍照") { dialog, which -> + dialog.dismiss() + OtherUtils.takePicture(this@CaseHandleDetailActivity) + } + .create().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + val handleResult: String = caseHandleResultView.text.toString() + if (handleResult == "") { + ToastHelper.showToast("还未选择处理结果", ToastHelper.WARING) + return@setOnClickListener + } + if (handleResult == "处理完成") { + //选择处理完成时,处理图片必传。至少一张,最多两张 + if (handleImageAdapter!!.count != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING) + return@setOnClickListener + } + } + if (handleResult == "申请延期" || handleResult == "申请调整") { + caseReason = caseReasonView.text.toString() + if (TextUtils.isEmpty(caseReason)) { + ToastHelper.showToast("延期/调整的原因必须填写", ToastHelper.WARING) + return@setOnClickListener + } + } + caseHandlePresenter.onReadyRetrofitRequest( + data.processId, id, data.caseState.toString(), + changeState, caseReason, StringHelper.reformatURL(mediaList), approvalResult + ) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = + if (data.communityName == "") "无更详细社区信息" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + caseHandleView.text = if (data.caseStateName == "") "无处理意见" else data.caseStateName + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + } + } + + override fun obtainNextNodeData(resultBean: CaseNextNodeBean) { + if (resultBean.isSuccess) { + val dataBeans = resultBean.data + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("处理结果") + for (dataBean in dataBeans) { + sheetBuilder.addItem(dataBean.nextOperation) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + val dataBean = dataBeans[position] + val nextOperation = dataBean.nextOperation + caseHandleResultView.text = nextOperation + if (nextOperation == "处理完成") { + imageLayout.visibility = View.VISIBLE + reasonLayout.visibility = View.GONE + } else { + imageLayout.visibility = View.GONE + reasonLayout.visibility = View.VISIBLE + } + changeState = dataBean.nextState.toString() + approvalResult = dataBean.approvalResult + }.build().show() + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR) + } + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (resultCode == RESULT_OK) { + when (requestCode) { + PictureConfig.CHOOSE_REQUEST -> { + val selectList = PictureSelector.obtainMultipleResult(data) + for (media in selectList) { + val file = File(media.compressPath) + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR) + continue + } + uploadImagePresenter.onReadyRetrofitRequest(file) + } + } + PictureConfig.REQUEST_CAMERA -> { + val localMedia = PictureSelector.obtainMultipleResult(data)[0] + uploadImagePresenter.onReadyRetrofitRequest(File(localMedia.compressPath)) + } + } + } + } + + override fun showProgress() { + submitDialog!!.show() + } + + override fun hideProgress() { + submitDialog!!.dismiss() + } + + override fun obtainUploadAudioResult(resultBean: ActionResultBean) {} + override fun obtainUploadImageResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + PictureFileUtils.deleteAllCacheDirFile(this) + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + val sumItemCount = handleImageAdapter!!.count + 1 //每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + val url = resultBean.data + mediaList.add(url) + realPaths.add(StringHelper.appendCompleteURL(url)) + if (realPaths.size == 2) { + addImageView.visibility = View.GONE + } + handleImageAdapter!!.setImageList(realPaths) + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, realPaths) + } + //删除按钮点击事件 + handleImageAdapter!!.isDeleteVisible(true) + handleImageAdapter!!.setOnDeleteClickListener { position -> + mediaList.removeAt(position) + realPaths.removeAt(position) + handleImageAdapter!!.setImageList(realPaths) + if (realPaths.size != 2) { + addImageView.visibility = View.VISIBLE + } + } + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING) + } + } + } + + override fun obtainUploadVideoResult(resultBean: ActionResultBean) {} + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun obtainCaseHandleResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS) + when (title) { + "超时案卷" -> { + OvertimeCaseFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + } + "紧急案卷" -> { + UrgentCaseFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + } + "待办案卷" -> { + CaseTodoFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + } + } + finish() + } else { + ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR) + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + caseNextNodePresenter.disposeRetrofitRequest() + uploadImagePresenter.disposeRetrofitRequest() + caseHandlePresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java deleted file mode 100644 index a5f468d..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ /dev/null @@ -1,458 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.bean.CaseNextNodeBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl; -import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl; -import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailHandleView; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.mvp.view.ICaseNextNodeView; -import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.ui.fragment.check.CaseCheckFragment; -import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.luck.picture.lib.PictureSelector; -import com.luck.picture.lib.config.PictureConfig; -import com.luck.picture.lib.entity.LocalMedia; -import com.luck.picture.lib.tools.PictureFileUtils; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.dialog.QMUIDialog; -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, - IUploadFileView, ICaseNextNodeView, ICaseDetailHandleView { - - private Context context = this; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.caseHandleResultView) - TextView caseHandleResultView; - @BindView(R.id.caseHandleTimeView) - TextView caseHandleTimeView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.addImageView) - ImageView addImageView; - @BindView(R.id.caseCheckOptView) - TextView caseCheckOptView; - @BindView(R.id.caseCheckStatusView) - TextView caseCheckStatusView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private CaseDetailPresenterImpl caseDetailPresenter; - private UploadImagePresenterImpl uploadImagePresenter; - private CaseNextNodePresenterImpl caseNextNodePresenter; - private CaseHandlePresenterImpl caseHandlePresenter; - - private String id; - private String changeState; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private ArrayList realPaths = new ArrayList<>();//真实图片路径 - private List mediaList = new ArrayList<>();//上传到服务器的数据集 - private QMUITipDialog submitDialog; - private ImageGridViewAdapter checkImageAdapter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_check_detail; - } - - @Override - protected String setTitleName() { - return "案卷核查"; - } - - @Override - public void initData() { - id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - - uploadImagePresenter = new UploadImagePresenterImpl(this); - caseNextNodePresenter = new CaseNextNodePresenterImpl(this); - caseHandlePresenter = new CaseHandlePresenterImpl(this); - submitDialog = new QMUITipDialog.Builder(this) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord("处理中,请稍后") - .create(); - checkImageAdapter = new ImageGridViewAdapter(this); - checkGridView.setAdapter(checkImageAdapter); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.addImageView: - new QMUIDialog.MenuDialogBuilder(this) - .addItem("相册中选取", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.selectPicture(CaseCheckDetailActivity.this); - } - }) - .addItem("相机拍照", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.takePicture(CaseCheckDetailActivity.this); - } - }) - .create().show(); - break; - case R.id.caseCheckLayout: - caseNextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); - break; - case R.id.submitButton: - submitCase();//案卷提交 - break; - default: - break; - } - } - - private void submitCase() { - String remarks = caseCheckOptView.getText().toString(); - if (TextUtils.isEmpty(remarks)) { - ToastHelper.showToast("核查意见不能为空", ToastHelper.WARING); - return; - } - if (TextUtils.isEmpty(changeState)) { - ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); - return; - } - if (checkImageAdapter.getCount() != 2) { - ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); - return; - } - caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), - changeState, remarks, StringHelper.reformatURL(mediaList)); - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - switch (requestCode) { - case PictureConfig.CHOOSE_REQUEST: - List selectList = PictureSelector.obtainMultipleResult(data); - for (LocalMedia media : selectList) { - File file = new File(media.getCompressPath()); - if (file.length() <= Constant.IMAGE_MINUS_SIZE) { - ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); - continue; - } - uploadImagePresenter.onReadyRetrofitRequest(file); - } - break; - case PictureConfig.REQUEST_CAMERA: - LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); - break; - default: - break; - } - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - - /** - * 图片 - * */ - //核实照片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - - //处理照片 - String processImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(processImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = processImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - caseHandleResultView.setText(data.getProcessRemarks().equals("") ? "无处理意见" : data.getProcessRemarks()); - //TODO 服务器返回数据缺少此字段,暂时注掉 -// caseHandleTimeView.setText(); - } - } - - @Override - public void showProgress() { - submitDialog.show(); - } - - @Override - public void hideProgress() { - submitDialog.dismiss(); - } - - @Override - public void obtainCaseHandleResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("案卷核查提交成功", ToastHelper.SUCCESS); - //案卷办完以后通知待办和已办刷新数据 - CaseCheckFragment.sendEmptyMessage(Constant.CASE_CHECK_OK); - CaseCheckedFragment.sendEmptyMessage(Constant.CASE_CHECK_OK); - finish(); - } else { - ToastHelper.showToast("案卷核查提交失败,请检查", ToastHelper.ERROR); - } - } - - @Override - public void obtainUploadAudioResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainUploadImageResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - PictureFileUtils.deleteAllCacheDirFile(this); - /** - * 系统路径static拼接图片返回路径 - * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg - */ - //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg - int sumItemCount = checkImageAdapter.getCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 2) { - String url = resultBean.getData(); - mediaList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - if (realPaths.size() == 2) { - addImageView.setVisibility(View.GONE); - } - checkImageAdapter.setImageList(realPaths); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, realPaths); - } - }); - //删除按钮点击事件 - checkImageAdapter.isDeleteVisible(true); - checkImageAdapter.setOnDeleteClickListener(new ImageGridViewAdapter.OnDeleteItemClickListener() { - @Override - public void onClick(int position) { - mediaList.remove(position); - realPaths.remove(position); - checkImageAdapter.setImageList(realPaths); - if (realPaths.size() != 2) { - addImageView.setVisibility(View.VISIBLE); - } - } - }); - } else { - ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); - } - } - } - - @Override - public void obtainUploadVideoResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainNextNodeData(CaseNextNodeBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("核实情况"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - caseCheckStatusView.setText(dataBean.getNextOperation()); - caseCheckOptView.setText(dataBean.getNextOperation()); - changeState = String.valueOf(dataBean.getNextState()); - } - }).build().show(); - } else { - ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("上传失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (uploadImagePresenter != null) { - uploadImagePresenter.disposeRetrofitRequest(); - } - if (caseNextNodePresenter != null) { - caseNextNodePresenter.disposeRetrofitRequest(); - } - if (caseHandlePresenter != null) { - caseHandlePresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.kt new file mode 100644 index 0000000..c7d9d48 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.kt @@ -0,0 +1,340 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.bean.CaseNextNodeBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl +import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailHandleView +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.mvp.view.ICaseNextNodeView +import com.casic.dcms.mvp.view.IUploadFileView +import com.casic.dcms.ui.fragment.check.CaseCheckFragment +import com.casic.dcms.ui.fragment.check.CaseCheckedFragment +import com.casic.dcms.utils.* +import com.luck.picture.lib.PictureSelector +import com.luck.picture.lib.config.PictureConfig +import com.luck.picture.lib.tools.PictureFileUtils +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import com.qmuiteam.qmui.widget.dialog.QMUIDialog.MenuDialogBuilder +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog +import kotlinx.android.synthetic.main.activity_case_check_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import java.io.File +import java.util.* + +class CaseCheckDetailActivity : BaseCaseActivity(), ICaseDetailView, + IUploadFileView, ICaseNextNodeView, ICaseDetailHandleView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private lateinit var uploadImagePresenter: UploadImagePresenterImpl + private lateinit var caseNextNodePresenter: CaseNextNodePresenterImpl + private lateinit var caseHandlePresenter: CaseHandlePresenterImpl + private lateinit var id: String + private lateinit var changeState: String + private var submitDialog: QMUITipDialog? = null + private var checkImageAdapter: ImageGridViewAdapter? = null + private var data = CaseDetailBean.DataBean() + private val realPaths = ArrayList() //真实图片路径 + private val mediaList: MutableList = ArrayList() //上传到服务器的数据集 + + override fun initLayoutView(): Int = R.layout.activity_case_check_detail + + override fun setTitleName(): String { + return "案卷核查" + } + + override fun initData() { + id = intent.getStringExtra("id")!! + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + uploadImagePresenter = UploadImagePresenterImpl(this) + caseNextNodePresenter = CaseNextNodePresenterImpl(this) + caseHandlePresenter = CaseHandlePresenterImpl(this) + submitDialog = QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create() + checkImageAdapter = ImageGridViewAdapter(this) + checkGridView.adapter = checkImageAdapter + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + + addImageView.setOnClickListener { + MenuDialogBuilder(this) + .addItem("相册中选取") { dialog, which -> + dialog.dismiss() + OtherUtils.selectPicture(this@CaseCheckDetailActivity) + } + .addItem("相机拍照") { dialog, which -> + dialog.dismiss() + OtherUtils.takePicture(this@CaseCheckDetailActivity) + } + .create().show() + } + + caseCheckLayout.setOnClickListener { + caseNextNodePresenter.onReadyRetrofitRequest(data.caseState.toString()) + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + //案卷提交 + val remarks: String = caseCheckOptView.text.toString() + if (TextUtils.isEmpty(remarks)) { + ToastHelper.showToast("核查意见不能为空", ToastHelper.WARING) + return@setOnClickListener + } + if (TextUtils.isEmpty(changeState)) { + ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING) + return@setOnClickListener + } + if (checkImageAdapter!!.count != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING) + return@setOnClickListener + } + caseHandlePresenter.onReadyRetrofitRequest( + data.processId, id, data.caseState.toString(), + changeState, remarks, StringHelper.reformatURL(mediaList) + ) + } + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (resultCode == RESULT_OK) { + when (requestCode) { + PictureConfig.CHOOSE_REQUEST -> { + val selectList = PictureSelector.obtainMultipleResult(data) + for (media in selectList) { + val file = File(media.compressPath) + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR) + continue + } + uploadImagePresenter.onReadyRetrofitRequest(file) + } + } + PictureConfig.REQUEST_CAMERA -> { + val localMedia = PictureSelector.obtainMultipleResult(data)[0] + uploadImagePresenter.onReadyRetrofitRequest(File(localMedia.compressPath)) + } + } + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = + if (data.communityName == "") "无更详细社区信息" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + /** + * 图片 + */ + //核实照片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + + //处理照片 + val processImages = data.fileIdProcess + if (!TextUtils.isEmpty(processImages)) { + val urls = ArrayList() + val split = processImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + caseHandleResultView.text = + if (data.processRemarks == "") "无处理意见" else data.processRemarks + //TODO 服务器返回数据缺少此字段,暂时注掉 +// caseHandleTimeView.setText(); + } + } + + override fun showProgress() { + submitDialog!!.show() + } + + override fun hideProgress() { + submitDialog!!.dismiss() + } + + override fun obtainCaseHandleResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + ToastHelper.showToast("案卷核查提交成功", ToastHelper.SUCCESS) + //案卷办完以后通知待办和已办刷新数据 + CaseCheckFragment.sendEmptyMessage(Constant.CASE_CHECK_OK) + CaseCheckedFragment.sendEmptyMessage(Constant.CASE_CHECK_OK) + finish() + } else { + ToastHelper.showToast("案卷核查提交失败,请检查", ToastHelper.ERROR) + } + } + + override fun obtainUploadAudioResult(resultBean: ActionResultBean) {} + override fun obtainUploadImageResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + PictureFileUtils.deleteAllCacheDirFile(this) + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + val sumItemCount = checkImageAdapter!!.count + 1 //每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + val url = resultBean.data + mediaList.add(url) + realPaths.add(StringHelper.appendCompleteURL(url)) + if (realPaths.size == 2) { + addImageView.visibility = View.GONE + } + checkImageAdapter!!.setImageList(realPaths) + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, realPaths) + } + //删除按钮点击事件 + checkImageAdapter!!.isDeleteVisible(true) + checkImageAdapter!!.setOnDeleteClickListener { position -> + mediaList.removeAt(position) + realPaths.removeAt(position) + checkImageAdapter!!.setImageList(realPaths) + if (realPaths.size != 2) { + addImageView.visibility = View.VISIBLE + } + } + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING) + } + } + } + + override fun obtainUploadVideoResult(resultBean: ActionResultBean) {} + + override fun obtainNextNodeData(resultBean: CaseNextNodeBean) { + if (resultBean.isSuccess) { + val dataBeans = resultBean.data + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("核实情况") + for (dataBean in dataBeans) { + sheetBuilder.addItem(dataBean.nextOperation) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + val dataBean = dataBeans[position] + caseCheckStatusView.text = dataBean.nextOperation + caseCheckOptView.text = dataBean.nextOperation + changeState = dataBean.nextState.toString() + }.build().show() + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR) + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("上传失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + uploadImagePresenter.disposeRetrofitRequest() + caseNextNodePresenter.disposeRetrofitRequest() + caseHandlePresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java deleted file mode 100644 index 996401c..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ /dev/null @@ -1,460 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.EditText; -import android.widget.GridView; -import android.widget.ImageView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.annotation.Nullable; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.bean.CaseNextNodeBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl; -import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl; -import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailHandleView; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.mvp.view.ICaseNextNodeView; -import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.ui.fragment.handle.CaseHandledFragment; -import com.casic.dcms.ui.fragment.handle.CaseTodoFragment; -import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; -import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.luck.picture.lib.PictureSelector; -import com.luck.picture.lib.config.PictureConfig; -import com.luck.picture.lib.entity.LocalMedia; -import com.luck.picture.lib.tools.PictureFileUtils; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.dialog.QMUIDialog; -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandleDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView, ICaseNextNodeView, IUploadFileView, ICaseDetailHandleView { - - private Context context = this; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.caseHandleResultView) - TextView caseHandleResultView; - @BindView(R.id.imageLayout) - RelativeLayout imageLayout; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.addImageView) - ImageView addImageView; - @BindView(R.id.reasonLayout) - RelativeLayout reasonLayout; - @BindView(R.id.caseReasonView) - EditText caseReasonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private String title; - private String id; - private String changeState; - private String caseReason; - private String approvalResult; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private ArrayList realPaths = new ArrayList<>();//真实图片路径 - private List mediaList = new ArrayList<>();//上传到服务器的数据集 - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseNextNodePresenterImpl caseNextNodePresenter; - private UploadImagePresenterImpl uploadImagePresenter; - private CaseHandlePresenterImpl caseHandlePresenter; - private QMUITipDialog submitDialog; - private ImageGridViewAdapter handleImageAdapter;//处理图片的adapter - - @Override - public int initLayoutView() { - return R.layout.activity_case_handle_detail; - } - - @Override - protected String setTitleName() { - return title; - } - - @Override - public void initData() { - title = getIntent().getStringExtra("title"); - id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - - caseNextNodePresenter = new CaseNextNodePresenterImpl(this); - uploadImagePresenter = new UploadImagePresenterImpl(this); - caseHandlePresenter = new CaseHandlePresenterImpl(this); - submitDialog = new QMUITipDialog.Builder(this) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord("处理中,请稍后") - .create(); - handleImageAdapter = new ImageGridViewAdapter(this); - handleGridView.setAdapter(handleImageAdapter); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - caseHandleView.setText(data.getCaseStateName().equals("") ? "无处理意见" : data.getCaseStateName()); - - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - } - } - - @Override - public void obtainNextNodeData(CaseNextNodeBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("处理结果"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - String nextOperation = dataBean.getNextOperation(); - caseHandleResultView.setText(nextOperation); - if (nextOperation.equals("处理完成")) { - imageLayout.setVisibility(View.VISIBLE); - reasonLayout.setVisibility(View.GONE); - } else { - imageLayout.setVisibility(View.GONE); - reasonLayout.setVisibility(View.VISIBLE); - } - changeState = String.valueOf(dataBean.getNextState()); - approvalResult = dataBean.getApprovalResult(); - } - }).build().show(); - } else { - ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); - } - } - - @OnClick({R.id.locationMapView, R.id.caseHandleResultLayout, R.id.addImageView, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.caseHandleResultLayout: - caseNextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); - break; - case R.id.addImageView: - new QMUIDialog.MenuDialogBuilder(this) - .addItem("相册中选取", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.selectPicture(CaseHandleDetailActivity.this); - } - }) - .addItem("相机拍照", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.takePicture(CaseHandleDetailActivity.this); - } - }) - .create().show(); - break; - case R.id.submitButton: - submitCase();//案卷提交 - break; - default: - break; - } - } - - private void submitCase() { - String handleResult = caseHandleResultView.getText().toString(); - if (handleResult.equals("")) { - ToastHelper.showToast("还未选择处理结果", ToastHelper.WARING); - return; - } - if (handleResult.equals("处理完成")) { - //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getCount() != 2) { - ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); - return; - } - } - if (handleResult.equals("申请延期") || handleResult.equals("申请调整")) { - caseReason = caseReasonView.getText().toString(); - if (TextUtils.isEmpty(caseReason)) { - ToastHelper.showToast("延期/调整的原因必须填写", ToastHelper.WARING); - return; - } - } - caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), - changeState, caseReason, StringHelper.reformatURL(mediaList), approvalResult); - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - switch (requestCode) { - case PictureConfig.CHOOSE_REQUEST: - List selectList = PictureSelector.obtainMultipleResult(data); - for (LocalMedia media : selectList) { - File file = new File(media.getCompressPath()); - if (file.length() <= Constant.IMAGE_MINUS_SIZE) { - ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); - continue; - } - uploadImagePresenter.onReadyRetrofitRequest(file); - } - break; - case PictureConfig.REQUEST_CAMERA: - LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); - break; - default: - break; - } - } - } - - @Override - public void showProgress() { - submitDialog.show(); - } - - @Override - public void hideProgress() { - submitDialog.dismiss(); - } - - @Override - public void obtainUploadAudioResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainUploadImageResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - PictureFileUtils.deleteAllCacheDirFile(this); - /** - * 系统路径static拼接图片返回路径 - * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg - */ - //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg - int sumItemCount = handleImageAdapter.getCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 2) { - String url = resultBean.getData(); - mediaList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - if (realPaths.size() == 2) { - addImageView.setVisibility(View.GONE); - } - handleImageAdapter.setImageList(realPaths); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, realPaths); - } - }); - //删除按钮点击事件 - handleImageAdapter.isDeleteVisible(true); - handleImageAdapter.setOnDeleteClickListener(new ImageGridViewAdapter.OnDeleteItemClickListener() { - @Override - public void onClick(int position) { - mediaList.remove(position); - realPaths.remove(position); - handleImageAdapter.setImageList(realPaths); - if (realPaths.size() != 2) { - addImageView.setVisibility(View.VISIBLE); - } - } - }); - } else { - ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); - } - } - } - - @Override - public void obtainUploadVideoResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - public void obtainCaseHandleResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); - switch (title) { - case "超时案卷": - OvertimeCaseFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - break; - case "紧急案卷": - UrgentCaseFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - break; - case "待办案卷": - CaseTodoFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - break; - } - finish(); - } else { - ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (caseNextNodePresenter != null) { - caseNextNodePresenter.disposeRetrofitRequest(); - } - if (uploadImagePresenter != null) { - uploadImagePresenter.disposeRetrofitRequest(); - } - if (caseHandlePresenter != null) { - caseHandlePresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.kt new file mode 100644 index 0000000..c17a12d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.kt @@ -0,0 +1,341 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.bean.CaseNextNodeBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl +import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailHandleView +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.mvp.view.ICaseNextNodeView +import com.casic.dcms.mvp.view.IUploadFileView +import com.casic.dcms.ui.fragment.handle.CaseHandledFragment +import com.casic.dcms.ui.fragment.handle.CaseTodoFragment +import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment +import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment +import com.casic.dcms.utils.* +import com.luck.picture.lib.PictureSelector +import com.luck.picture.lib.config.PictureConfig +import com.luck.picture.lib.tools.PictureFileUtils +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import com.qmuiteam.qmui.widget.dialog.QMUIDialog.MenuDialogBuilder +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog +import kotlinx.android.synthetic.main.activity_case_handle_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import java.io.File +import java.util.* + +class CaseHandleDetailActivity : BaseCaseActivity(), ICaseDetailView, ICaseNextNodeView, + IUploadFileView, ICaseDetailHandleView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private lateinit var caseNextNodePresenter: CaseNextNodePresenterImpl + private lateinit var uploadImagePresenter: UploadImagePresenterImpl + private lateinit var caseHandlePresenter: CaseHandlePresenterImpl + private lateinit var title: String + private lateinit var id: String + private lateinit var changeState: String + private lateinit var caseReason: String + private lateinit var approvalResult: String + private var submitDialog: QMUITipDialog? = null + private var handleImageAdapter: ImageGridViewAdapter? = null + private var data = CaseDetailBean.DataBean() + private val realPaths = ArrayList() //真实图片路径 + private val mediaList: MutableList = ArrayList() //上传到服务器的数据集 + + override fun initLayoutView(): Int = R.layout.activity_case_handle_detail + + override fun setTitleName(): String { + return title + } + + override fun initData() { + title = intent.getStringExtra("title")!! + id = intent.getStringExtra("id")!! + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + caseNextNodePresenter = CaseNextNodePresenterImpl(this) + uploadImagePresenter = UploadImagePresenterImpl(this) + caseHandlePresenter = CaseHandlePresenterImpl(this) + submitDialog = QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create() + handleImageAdapter = ImageGridViewAdapter(this) + handleGridView.adapter = handleImageAdapter + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + + caseHandleResultLayout.setOnClickListener { + caseNextNodePresenter.onReadyRetrofitRequest(data.caseState.toString()) + } + + addImageView.setOnClickListener { + MenuDialogBuilder(this) + .addItem("相册中选取") { dialog, which -> + dialog.dismiss() + OtherUtils.selectPicture(this@CaseHandleDetailActivity) + } + .addItem("相机拍照") { dialog, which -> + dialog.dismiss() + OtherUtils.takePicture(this@CaseHandleDetailActivity) + } + .create().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + val handleResult: String = caseHandleResultView.text.toString() + if (handleResult == "") { + ToastHelper.showToast("还未选择处理结果", ToastHelper.WARING) + return@setOnClickListener + } + if (handleResult == "处理完成") { + //选择处理完成时,处理图片必传。至少一张,最多两张 + if (handleImageAdapter!!.count != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING) + return@setOnClickListener + } + } + if (handleResult == "申请延期" || handleResult == "申请调整") { + caseReason = caseReasonView.text.toString() + if (TextUtils.isEmpty(caseReason)) { + ToastHelper.showToast("延期/调整的原因必须填写", ToastHelper.WARING) + return@setOnClickListener + } + } + caseHandlePresenter.onReadyRetrofitRequest( + data.processId, id, data.caseState.toString(), + changeState, caseReason, StringHelper.reformatURL(mediaList), approvalResult + ) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = + if (data.communityName == "") "无更详细社区信息" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + caseHandleView.text = if (data.caseStateName == "") "无处理意见" else data.caseStateName + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + } + } + + override fun obtainNextNodeData(resultBean: CaseNextNodeBean) { + if (resultBean.isSuccess) { + val dataBeans = resultBean.data + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("处理结果") + for (dataBean in dataBeans) { + sheetBuilder.addItem(dataBean.nextOperation) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + val dataBean = dataBeans[position] + val nextOperation = dataBean.nextOperation + caseHandleResultView.text = nextOperation + if (nextOperation == "处理完成") { + imageLayout.visibility = View.VISIBLE + reasonLayout.visibility = View.GONE + } else { + imageLayout.visibility = View.GONE + reasonLayout.visibility = View.VISIBLE + } + changeState = dataBean.nextState.toString() + approvalResult = dataBean.approvalResult + }.build().show() + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR) + } + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (resultCode == RESULT_OK) { + when (requestCode) { + PictureConfig.CHOOSE_REQUEST -> { + val selectList = PictureSelector.obtainMultipleResult(data) + for (media in selectList) { + val file = File(media.compressPath) + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR) + continue + } + uploadImagePresenter.onReadyRetrofitRequest(file) + } + } + PictureConfig.REQUEST_CAMERA -> { + val localMedia = PictureSelector.obtainMultipleResult(data)[0] + uploadImagePresenter.onReadyRetrofitRequest(File(localMedia.compressPath)) + } + } + } + } + + override fun showProgress() { + submitDialog!!.show() + } + + override fun hideProgress() { + submitDialog!!.dismiss() + } + + override fun obtainUploadAudioResult(resultBean: ActionResultBean) {} + override fun obtainUploadImageResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + PictureFileUtils.deleteAllCacheDirFile(this) + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + val sumItemCount = handleImageAdapter!!.count + 1 //每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + val url = resultBean.data + mediaList.add(url) + realPaths.add(StringHelper.appendCompleteURL(url)) + if (realPaths.size == 2) { + addImageView.visibility = View.GONE + } + handleImageAdapter!!.setImageList(realPaths) + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, realPaths) + } + //删除按钮点击事件 + handleImageAdapter!!.isDeleteVisible(true) + handleImageAdapter!!.setOnDeleteClickListener { position -> + mediaList.removeAt(position) + realPaths.removeAt(position) + handleImageAdapter!!.setImageList(realPaths) + if (realPaths.size != 2) { + addImageView.visibility = View.VISIBLE + } + } + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING) + } + } + } + + override fun obtainUploadVideoResult(resultBean: ActionResultBean) {} + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun obtainCaseHandleResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS) + when (title) { + "超时案卷" -> { + OvertimeCaseFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + } + "紧急案卷" -> { + UrgentCaseFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + } + "待办案卷" -> { + CaseTodoFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + } + } + finish() + } else { + ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR) + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + caseNextNodePresenter.disposeRetrofitRequest() + uploadImagePresenter.disposeRetrofitRequest() + caseHandlePresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java deleted file mode 100644 index 8b08041..0000000 --- a/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java +++ /dev/null @@ -1,289 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.EditText; -import android.widget.GridView; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.mvp.presenter.ShopChangePresenterImpl; -import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; -import com.casic.dcms.mvp.view.IShopInfoChangeView; -import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.luck.picture.lib.PictureSelector; -import com.luck.picture.lib.config.PictureConfig; -import com.luck.picture.lib.entity.LocalMedia; -import com.luck.picture.lib.tools.PictureFileUtils; -import com.qmuiteam.qmui.widget.dialog.QMUIDialog; -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; - -public class ChangeShopInfoActivity extends BaseCaseActivity implements View.OnClickListener, IUploadFileView, - IShopInfoChangeView { - - private static final String TAG = "ChangeShopInfoActivity"; - private Context context = this; - @BindView(R.id.shopView) - TextView shopView; - @BindView(R.id.communityNameView) - TextView communityNameView; - @BindView(R.id.shopLocationView) - EditText shopLocationView; - @BindView(R.id.shopKeeperView) - EditText shopKeeperView; - @BindView(R.id.phoneNumberView) - EditText phoneNumberView; - @BindView(R.id.selectedGridViewView) - GridView selectedGridViewView; - @BindView(R.id.addImageView) - ImageView addImageView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private UploadImagePresenterImpl uploadImagePresenter; - private ShopChangePresenterImpl shopChangePresenter; - private QMUITipDialog submitDialog; - private ImageGridViewAdapter imageAdapter; - private String merchantId;//商户id - private String merchantName; - private ArrayList realPaths = new ArrayList<>();//真实图片路径 - private List mediaList = new ArrayList<>();//上传到服务器的数据集 - - @Override - protected String setTitleName() { - return "商铺变更"; - } - - @Override - public int initLayoutView() { - return R.layout.activity_change_shop; - } - - @Override - public void initData() { - uploadImagePresenter = new UploadImagePresenterImpl(this); - shopChangePresenter = new ShopChangePresenterImpl(this); - submitDialog = new QMUITipDialog.Builder(this) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord("处理中,请稍后") - .create(); - imageAdapter = new ImageGridViewAdapter(this); - selectedGridViewView.setAdapter(imageAdapter); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @OnClick({R.id.shopLayout, R.id.addImageView, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.shopLayout: - Intent intent = new Intent(this, ArcGISMapActivity.class); - intent.putExtra("type", "商铺变更"); - startActivityForResult(intent, Constant.REQUEST_MAP_CODE); - break; - case R.id.addImageView: - new QMUIDialog.MenuDialogBuilder(this) - .addItem("相册中选取", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.selectPicture(ChangeShopInfoActivity.this); - } - }) - .addItem("相机拍照", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.takePicture(ChangeShopInfoActivity.this); - } - }) - .setCanceledOnTouchOutside(false) - .create().show(); - break; - case R.id.submitButton: - submitCase(); - break; - } - } - - private void submitCase() { - String phoneNumber = phoneNumberView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(phoneNumber)) { - ToastHelper.showToast("电话号码还未填写", ToastHelper.WARING); - return; - } - if (StringHelper.isPhoneNumber(phoneNumber)) { - String shopLocation = shopLocationView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(shopLocation)) { - ToastHelper.showToast("店铺地址还未填写", ToastHelper.WARING); - return; - } - String shopKeeper = shopKeeperView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(shopKeeper)) { - ToastHelper.showToast("店主名还未填写", ToastHelper.WARING); - return; - } - if (imageAdapter.getCount() != 2) { - ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING); - return; - } - shopChangePresenter.onReadyRetrofitRequest(merchantId, merchantName, shopKeeper, phoneNumber, StringHelper.reformatURL(mediaList)); - } else { - ToastHelper.showToast("电话号码格式不对", ToastHelper.WARING); - } - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - switch (requestCode) { - case Constant.REQUEST_MAP_CODE: - if (data == null) { - return; - } - String community = data.getStringExtra("community"); - merchantName = data.getStringExtra("shopName"); - merchantId = data.getStringExtra("shopID"); - - communityNameView.setText(community); - shopView.setText(merchantName); - shopView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - break; - case PictureConfig.CHOOSE_REQUEST: - List selectList = PictureSelector.obtainMultipleResult(data); - for (LocalMedia media : selectList) { - File file = new File(media.getCompressPath()); - if (file.length() <= Constant.IMAGE_MINUS_SIZE) { - ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); - continue; - } - uploadImagePresenter.onReadyRetrofitRequest(file); - } - break; - case PictureConfig.REQUEST_CAMERA: - LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); - break; - default: - break; - } - } - } - - @Override - public void showProgress() { - submitDialog.show(); - } - - @Override - public void hideProgress() { - submitDialog.dismiss(); - } - - @Override - public void obtainChangeResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("提交成功", ToastHelper.SUCCESS); - finish(); - } else { - ToastHelper.showToast("提交失败,请重试", ToastHelper.ERROR); - } - } - - @Override - public void obtainUploadAudioResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainUploadImageResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - PictureFileUtils.deleteAllCacheDirFile(this); - /** - * 系统路径static拼接图片返回路径 - * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg - */ - //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg - int sumItemCount = imageAdapter.getCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 2) { - String url = resultBean.getData(); - mediaList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - if (realPaths.size() == 2) { - addImageView.setVisibility(View.GONE); - } - imageAdapter.setImageList(realPaths); - //九宫格点击事件 - selectedGridViewView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, realPaths); - } - }); - //删除按钮点击事件 - imageAdapter.setOnDeleteClickListener(new ImageGridViewAdapter.OnDeleteItemClickListener() { - @Override - public void onClick(int position) { - mediaList.remove(position); - realPaths.remove(position); - imageAdapter.setImageList(realPaths); - if (realPaths.size() != 2) { - addImageView.setVisibility(View.VISIBLE); - } - } - }); - } else { - ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); - } - } - } - - @Override - public void obtainUploadVideoResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (uploadImagePresenter != null) { - uploadImagePresenter.disposeRetrofitRequest(); - } - if (shopChangePresenter != null) { - shopChangePresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java deleted file mode 100644 index a5f468d..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ /dev/null @@ -1,458 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.bean.CaseNextNodeBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl; -import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl; -import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailHandleView; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.mvp.view.ICaseNextNodeView; -import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.ui.fragment.check.CaseCheckFragment; -import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.luck.picture.lib.PictureSelector; -import com.luck.picture.lib.config.PictureConfig; -import com.luck.picture.lib.entity.LocalMedia; -import com.luck.picture.lib.tools.PictureFileUtils; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.dialog.QMUIDialog; -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, - IUploadFileView, ICaseNextNodeView, ICaseDetailHandleView { - - private Context context = this; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.caseHandleResultView) - TextView caseHandleResultView; - @BindView(R.id.caseHandleTimeView) - TextView caseHandleTimeView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.addImageView) - ImageView addImageView; - @BindView(R.id.caseCheckOptView) - TextView caseCheckOptView; - @BindView(R.id.caseCheckStatusView) - TextView caseCheckStatusView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private CaseDetailPresenterImpl caseDetailPresenter; - private UploadImagePresenterImpl uploadImagePresenter; - private CaseNextNodePresenterImpl caseNextNodePresenter; - private CaseHandlePresenterImpl caseHandlePresenter; - - private String id; - private String changeState; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private ArrayList realPaths = new ArrayList<>();//真实图片路径 - private List mediaList = new ArrayList<>();//上传到服务器的数据集 - private QMUITipDialog submitDialog; - private ImageGridViewAdapter checkImageAdapter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_check_detail; - } - - @Override - protected String setTitleName() { - return "案卷核查"; - } - - @Override - public void initData() { - id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - - uploadImagePresenter = new UploadImagePresenterImpl(this); - caseNextNodePresenter = new CaseNextNodePresenterImpl(this); - caseHandlePresenter = new CaseHandlePresenterImpl(this); - submitDialog = new QMUITipDialog.Builder(this) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord("处理中,请稍后") - .create(); - checkImageAdapter = new ImageGridViewAdapter(this); - checkGridView.setAdapter(checkImageAdapter); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.addImageView: - new QMUIDialog.MenuDialogBuilder(this) - .addItem("相册中选取", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.selectPicture(CaseCheckDetailActivity.this); - } - }) - .addItem("相机拍照", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.takePicture(CaseCheckDetailActivity.this); - } - }) - .create().show(); - break; - case R.id.caseCheckLayout: - caseNextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); - break; - case R.id.submitButton: - submitCase();//案卷提交 - break; - default: - break; - } - } - - private void submitCase() { - String remarks = caseCheckOptView.getText().toString(); - if (TextUtils.isEmpty(remarks)) { - ToastHelper.showToast("核查意见不能为空", ToastHelper.WARING); - return; - } - if (TextUtils.isEmpty(changeState)) { - ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); - return; - } - if (checkImageAdapter.getCount() != 2) { - ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); - return; - } - caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), - changeState, remarks, StringHelper.reformatURL(mediaList)); - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - switch (requestCode) { - case PictureConfig.CHOOSE_REQUEST: - List selectList = PictureSelector.obtainMultipleResult(data); - for (LocalMedia media : selectList) { - File file = new File(media.getCompressPath()); - if (file.length() <= Constant.IMAGE_MINUS_SIZE) { - ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); - continue; - } - uploadImagePresenter.onReadyRetrofitRequest(file); - } - break; - case PictureConfig.REQUEST_CAMERA: - LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); - break; - default: - break; - } - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - - /** - * 图片 - * */ - //核实照片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - - //处理照片 - String processImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(processImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = processImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - caseHandleResultView.setText(data.getProcessRemarks().equals("") ? "无处理意见" : data.getProcessRemarks()); - //TODO 服务器返回数据缺少此字段,暂时注掉 -// caseHandleTimeView.setText(); - } - } - - @Override - public void showProgress() { - submitDialog.show(); - } - - @Override - public void hideProgress() { - submitDialog.dismiss(); - } - - @Override - public void obtainCaseHandleResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("案卷核查提交成功", ToastHelper.SUCCESS); - //案卷办完以后通知待办和已办刷新数据 - CaseCheckFragment.sendEmptyMessage(Constant.CASE_CHECK_OK); - CaseCheckedFragment.sendEmptyMessage(Constant.CASE_CHECK_OK); - finish(); - } else { - ToastHelper.showToast("案卷核查提交失败,请检查", ToastHelper.ERROR); - } - } - - @Override - public void obtainUploadAudioResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainUploadImageResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - PictureFileUtils.deleteAllCacheDirFile(this); - /** - * 系统路径static拼接图片返回路径 - * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg - */ - //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg - int sumItemCount = checkImageAdapter.getCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 2) { - String url = resultBean.getData(); - mediaList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - if (realPaths.size() == 2) { - addImageView.setVisibility(View.GONE); - } - checkImageAdapter.setImageList(realPaths); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, realPaths); - } - }); - //删除按钮点击事件 - checkImageAdapter.isDeleteVisible(true); - checkImageAdapter.setOnDeleteClickListener(new ImageGridViewAdapter.OnDeleteItemClickListener() { - @Override - public void onClick(int position) { - mediaList.remove(position); - realPaths.remove(position); - checkImageAdapter.setImageList(realPaths); - if (realPaths.size() != 2) { - addImageView.setVisibility(View.VISIBLE); - } - } - }); - } else { - ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); - } - } - } - - @Override - public void obtainUploadVideoResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainNextNodeData(CaseNextNodeBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("核实情况"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - caseCheckStatusView.setText(dataBean.getNextOperation()); - caseCheckOptView.setText(dataBean.getNextOperation()); - changeState = String.valueOf(dataBean.getNextState()); - } - }).build().show(); - } else { - ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("上传失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (uploadImagePresenter != null) { - uploadImagePresenter.disposeRetrofitRequest(); - } - if (caseNextNodePresenter != null) { - caseNextNodePresenter.disposeRetrofitRequest(); - } - if (caseHandlePresenter != null) { - caseHandlePresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.kt new file mode 100644 index 0000000..c7d9d48 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.kt @@ -0,0 +1,340 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.bean.CaseNextNodeBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl +import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailHandleView +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.mvp.view.ICaseNextNodeView +import com.casic.dcms.mvp.view.IUploadFileView +import com.casic.dcms.ui.fragment.check.CaseCheckFragment +import com.casic.dcms.ui.fragment.check.CaseCheckedFragment +import com.casic.dcms.utils.* +import com.luck.picture.lib.PictureSelector +import com.luck.picture.lib.config.PictureConfig +import com.luck.picture.lib.tools.PictureFileUtils +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import com.qmuiteam.qmui.widget.dialog.QMUIDialog.MenuDialogBuilder +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog +import kotlinx.android.synthetic.main.activity_case_check_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import java.io.File +import java.util.* + +class CaseCheckDetailActivity : BaseCaseActivity(), ICaseDetailView, + IUploadFileView, ICaseNextNodeView, ICaseDetailHandleView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private lateinit var uploadImagePresenter: UploadImagePresenterImpl + private lateinit var caseNextNodePresenter: CaseNextNodePresenterImpl + private lateinit var caseHandlePresenter: CaseHandlePresenterImpl + private lateinit var id: String + private lateinit var changeState: String + private var submitDialog: QMUITipDialog? = null + private var checkImageAdapter: ImageGridViewAdapter? = null + private var data = CaseDetailBean.DataBean() + private val realPaths = ArrayList() //真实图片路径 + private val mediaList: MutableList = ArrayList() //上传到服务器的数据集 + + override fun initLayoutView(): Int = R.layout.activity_case_check_detail + + override fun setTitleName(): String { + return "案卷核查" + } + + override fun initData() { + id = intent.getStringExtra("id")!! + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + uploadImagePresenter = UploadImagePresenterImpl(this) + caseNextNodePresenter = CaseNextNodePresenterImpl(this) + caseHandlePresenter = CaseHandlePresenterImpl(this) + submitDialog = QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create() + checkImageAdapter = ImageGridViewAdapter(this) + checkGridView.adapter = checkImageAdapter + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + + addImageView.setOnClickListener { + MenuDialogBuilder(this) + .addItem("相册中选取") { dialog, which -> + dialog.dismiss() + OtherUtils.selectPicture(this@CaseCheckDetailActivity) + } + .addItem("相机拍照") { dialog, which -> + dialog.dismiss() + OtherUtils.takePicture(this@CaseCheckDetailActivity) + } + .create().show() + } + + caseCheckLayout.setOnClickListener { + caseNextNodePresenter.onReadyRetrofitRequest(data.caseState.toString()) + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + //案卷提交 + val remarks: String = caseCheckOptView.text.toString() + if (TextUtils.isEmpty(remarks)) { + ToastHelper.showToast("核查意见不能为空", ToastHelper.WARING) + return@setOnClickListener + } + if (TextUtils.isEmpty(changeState)) { + ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING) + return@setOnClickListener + } + if (checkImageAdapter!!.count != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING) + return@setOnClickListener + } + caseHandlePresenter.onReadyRetrofitRequest( + data.processId, id, data.caseState.toString(), + changeState, remarks, StringHelper.reformatURL(mediaList) + ) + } + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (resultCode == RESULT_OK) { + when (requestCode) { + PictureConfig.CHOOSE_REQUEST -> { + val selectList = PictureSelector.obtainMultipleResult(data) + for (media in selectList) { + val file = File(media.compressPath) + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR) + continue + } + uploadImagePresenter.onReadyRetrofitRequest(file) + } + } + PictureConfig.REQUEST_CAMERA -> { + val localMedia = PictureSelector.obtainMultipleResult(data)[0] + uploadImagePresenter.onReadyRetrofitRequest(File(localMedia.compressPath)) + } + } + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = + if (data.communityName == "") "无更详细社区信息" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + /** + * 图片 + */ + //核实照片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + + //处理照片 + val processImages = data.fileIdProcess + if (!TextUtils.isEmpty(processImages)) { + val urls = ArrayList() + val split = processImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + caseHandleResultView.text = + if (data.processRemarks == "") "无处理意见" else data.processRemarks + //TODO 服务器返回数据缺少此字段,暂时注掉 +// caseHandleTimeView.setText(); + } + } + + override fun showProgress() { + submitDialog!!.show() + } + + override fun hideProgress() { + submitDialog!!.dismiss() + } + + override fun obtainCaseHandleResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + ToastHelper.showToast("案卷核查提交成功", ToastHelper.SUCCESS) + //案卷办完以后通知待办和已办刷新数据 + CaseCheckFragment.sendEmptyMessage(Constant.CASE_CHECK_OK) + CaseCheckedFragment.sendEmptyMessage(Constant.CASE_CHECK_OK) + finish() + } else { + ToastHelper.showToast("案卷核查提交失败,请检查", ToastHelper.ERROR) + } + } + + override fun obtainUploadAudioResult(resultBean: ActionResultBean) {} + override fun obtainUploadImageResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + PictureFileUtils.deleteAllCacheDirFile(this) + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + val sumItemCount = checkImageAdapter!!.count + 1 //每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + val url = resultBean.data + mediaList.add(url) + realPaths.add(StringHelper.appendCompleteURL(url)) + if (realPaths.size == 2) { + addImageView.visibility = View.GONE + } + checkImageAdapter!!.setImageList(realPaths) + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, realPaths) + } + //删除按钮点击事件 + checkImageAdapter!!.isDeleteVisible(true) + checkImageAdapter!!.setOnDeleteClickListener { position -> + mediaList.removeAt(position) + realPaths.removeAt(position) + checkImageAdapter!!.setImageList(realPaths) + if (realPaths.size != 2) { + addImageView.visibility = View.VISIBLE + } + } + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING) + } + } + } + + override fun obtainUploadVideoResult(resultBean: ActionResultBean) {} + + override fun obtainNextNodeData(resultBean: CaseNextNodeBean) { + if (resultBean.isSuccess) { + val dataBeans = resultBean.data + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("核实情况") + for (dataBean in dataBeans) { + sheetBuilder.addItem(dataBean.nextOperation) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + val dataBean = dataBeans[position] + caseCheckStatusView.text = dataBean.nextOperation + caseCheckOptView.text = dataBean.nextOperation + changeState = dataBean.nextState.toString() + }.build().show() + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR) + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("上传失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + uploadImagePresenter.disposeRetrofitRequest() + caseNextNodePresenter.disposeRetrofitRequest() + caseHandlePresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java deleted file mode 100644 index 996401c..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ /dev/null @@ -1,460 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.EditText; -import android.widget.GridView; -import android.widget.ImageView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.annotation.Nullable; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.bean.CaseNextNodeBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl; -import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl; -import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailHandleView; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.mvp.view.ICaseNextNodeView; -import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.ui.fragment.handle.CaseHandledFragment; -import com.casic.dcms.ui.fragment.handle.CaseTodoFragment; -import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; -import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.luck.picture.lib.PictureSelector; -import com.luck.picture.lib.config.PictureConfig; -import com.luck.picture.lib.entity.LocalMedia; -import com.luck.picture.lib.tools.PictureFileUtils; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.dialog.QMUIDialog; -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandleDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView, ICaseNextNodeView, IUploadFileView, ICaseDetailHandleView { - - private Context context = this; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.caseHandleResultView) - TextView caseHandleResultView; - @BindView(R.id.imageLayout) - RelativeLayout imageLayout; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.addImageView) - ImageView addImageView; - @BindView(R.id.reasonLayout) - RelativeLayout reasonLayout; - @BindView(R.id.caseReasonView) - EditText caseReasonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private String title; - private String id; - private String changeState; - private String caseReason; - private String approvalResult; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private ArrayList realPaths = new ArrayList<>();//真实图片路径 - private List mediaList = new ArrayList<>();//上传到服务器的数据集 - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseNextNodePresenterImpl caseNextNodePresenter; - private UploadImagePresenterImpl uploadImagePresenter; - private CaseHandlePresenterImpl caseHandlePresenter; - private QMUITipDialog submitDialog; - private ImageGridViewAdapter handleImageAdapter;//处理图片的adapter - - @Override - public int initLayoutView() { - return R.layout.activity_case_handle_detail; - } - - @Override - protected String setTitleName() { - return title; - } - - @Override - public void initData() { - title = getIntent().getStringExtra("title"); - id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - - caseNextNodePresenter = new CaseNextNodePresenterImpl(this); - uploadImagePresenter = new UploadImagePresenterImpl(this); - caseHandlePresenter = new CaseHandlePresenterImpl(this); - submitDialog = new QMUITipDialog.Builder(this) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord("处理中,请稍后") - .create(); - handleImageAdapter = new ImageGridViewAdapter(this); - handleGridView.setAdapter(handleImageAdapter); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - caseHandleView.setText(data.getCaseStateName().equals("") ? "无处理意见" : data.getCaseStateName()); - - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - } - } - - @Override - public void obtainNextNodeData(CaseNextNodeBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("处理结果"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - String nextOperation = dataBean.getNextOperation(); - caseHandleResultView.setText(nextOperation); - if (nextOperation.equals("处理完成")) { - imageLayout.setVisibility(View.VISIBLE); - reasonLayout.setVisibility(View.GONE); - } else { - imageLayout.setVisibility(View.GONE); - reasonLayout.setVisibility(View.VISIBLE); - } - changeState = String.valueOf(dataBean.getNextState()); - approvalResult = dataBean.getApprovalResult(); - } - }).build().show(); - } else { - ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); - } - } - - @OnClick({R.id.locationMapView, R.id.caseHandleResultLayout, R.id.addImageView, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.caseHandleResultLayout: - caseNextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); - break; - case R.id.addImageView: - new QMUIDialog.MenuDialogBuilder(this) - .addItem("相册中选取", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.selectPicture(CaseHandleDetailActivity.this); - } - }) - .addItem("相机拍照", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.takePicture(CaseHandleDetailActivity.this); - } - }) - .create().show(); - break; - case R.id.submitButton: - submitCase();//案卷提交 - break; - default: - break; - } - } - - private void submitCase() { - String handleResult = caseHandleResultView.getText().toString(); - if (handleResult.equals("")) { - ToastHelper.showToast("还未选择处理结果", ToastHelper.WARING); - return; - } - if (handleResult.equals("处理完成")) { - //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getCount() != 2) { - ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); - return; - } - } - if (handleResult.equals("申请延期") || handleResult.equals("申请调整")) { - caseReason = caseReasonView.getText().toString(); - if (TextUtils.isEmpty(caseReason)) { - ToastHelper.showToast("延期/调整的原因必须填写", ToastHelper.WARING); - return; - } - } - caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), - changeState, caseReason, StringHelper.reformatURL(mediaList), approvalResult); - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - switch (requestCode) { - case PictureConfig.CHOOSE_REQUEST: - List selectList = PictureSelector.obtainMultipleResult(data); - for (LocalMedia media : selectList) { - File file = new File(media.getCompressPath()); - if (file.length() <= Constant.IMAGE_MINUS_SIZE) { - ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); - continue; - } - uploadImagePresenter.onReadyRetrofitRequest(file); - } - break; - case PictureConfig.REQUEST_CAMERA: - LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); - break; - default: - break; - } - } - } - - @Override - public void showProgress() { - submitDialog.show(); - } - - @Override - public void hideProgress() { - submitDialog.dismiss(); - } - - @Override - public void obtainUploadAudioResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainUploadImageResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - PictureFileUtils.deleteAllCacheDirFile(this); - /** - * 系统路径static拼接图片返回路径 - * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg - */ - //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg - int sumItemCount = handleImageAdapter.getCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 2) { - String url = resultBean.getData(); - mediaList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - if (realPaths.size() == 2) { - addImageView.setVisibility(View.GONE); - } - handleImageAdapter.setImageList(realPaths); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, realPaths); - } - }); - //删除按钮点击事件 - handleImageAdapter.isDeleteVisible(true); - handleImageAdapter.setOnDeleteClickListener(new ImageGridViewAdapter.OnDeleteItemClickListener() { - @Override - public void onClick(int position) { - mediaList.remove(position); - realPaths.remove(position); - handleImageAdapter.setImageList(realPaths); - if (realPaths.size() != 2) { - addImageView.setVisibility(View.VISIBLE); - } - } - }); - } else { - ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); - } - } - } - - @Override - public void obtainUploadVideoResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - public void obtainCaseHandleResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); - switch (title) { - case "超时案卷": - OvertimeCaseFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - break; - case "紧急案卷": - UrgentCaseFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - break; - case "待办案卷": - CaseTodoFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - break; - } - finish(); - } else { - ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (caseNextNodePresenter != null) { - caseNextNodePresenter.disposeRetrofitRequest(); - } - if (uploadImagePresenter != null) { - uploadImagePresenter.disposeRetrofitRequest(); - } - if (caseHandlePresenter != null) { - caseHandlePresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.kt new file mode 100644 index 0000000..c17a12d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.kt @@ -0,0 +1,341 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.bean.CaseNextNodeBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl +import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailHandleView +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.mvp.view.ICaseNextNodeView +import com.casic.dcms.mvp.view.IUploadFileView +import com.casic.dcms.ui.fragment.handle.CaseHandledFragment +import com.casic.dcms.ui.fragment.handle.CaseTodoFragment +import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment +import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment +import com.casic.dcms.utils.* +import com.luck.picture.lib.PictureSelector +import com.luck.picture.lib.config.PictureConfig +import com.luck.picture.lib.tools.PictureFileUtils +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import com.qmuiteam.qmui.widget.dialog.QMUIDialog.MenuDialogBuilder +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog +import kotlinx.android.synthetic.main.activity_case_handle_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import java.io.File +import java.util.* + +class CaseHandleDetailActivity : BaseCaseActivity(), ICaseDetailView, ICaseNextNodeView, + IUploadFileView, ICaseDetailHandleView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private lateinit var caseNextNodePresenter: CaseNextNodePresenterImpl + private lateinit var uploadImagePresenter: UploadImagePresenterImpl + private lateinit var caseHandlePresenter: CaseHandlePresenterImpl + private lateinit var title: String + private lateinit var id: String + private lateinit var changeState: String + private lateinit var caseReason: String + private lateinit var approvalResult: String + private var submitDialog: QMUITipDialog? = null + private var handleImageAdapter: ImageGridViewAdapter? = null + private var data = CaseDetailBean.DataBean() + private val realPaths = ArrayList() //真实图片路径 + private val mediaList: MutableList = ArrayList() //上传到服务器的数据集 + + override fun initLayoutView(): Int = R.layout.activity_case_handle_detail + + override fun setTitleName(): String { + return title + } + + override fun initData() { + title = intent.getStringExtra("title")!! + id = intent.getStringExtra("id")!! + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + caseNextNodePresenter = CaseNextNodePresenterImpl(this) + uploadImagePresenter = UploadImagePresenterImpl(this) + caseHandlePresenter = CaseHandlePresenterImpl(this) + submitDialog = QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create() + handleImageAdapter = ImageGridViewAdapter(this) + handleGridView.adapter = handleImageAdapter + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + + caseHandleResultLayout.setOnClickListener { + caseNextNodePresenter.onReadyRetrofitRequest(data.caseState.toString()) + } + + addImageView.setOnClickListener { + MenuDialogBuilder(this) + .addItem("相册中选取") { dialog, which -> + dialog.dismiss() + OtherUtils.selectPicture(this@CaseHandleDetailActivity) + } + .addItem("相机拍照") { dialog, which -> + dialog.dismiss() + OtherUtils.takePicture(this@CaseHandleDetailActivity) + } + .create().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + val handleResult: String = caseHandleResultView.text.toString() + if (handleResult == "") { + ToastHelper.showToast("还未选择处理结果", ToastHelper.WARING) + return@setOnClickListener + } + if (handleResult == "处理完成") { + //选择处理完成时,处理图片必传。至少一张,最多两张 + if (handleImageAdapter!!.count != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING) + return@setOnClickListener + } + } + if (handleResult == "申请延期" || handleResult == "申请调整") { + caseReason = caseReasonView.text.toString() + if (TextUtils.isEmpty(caseReason)) { + ToastHelper.showToast("延期/调整的原因必须填写", ToastHelper.WARING) + return@setOnClickListener + } + } + caseHandlePresenter.onReadyRetrofitRequest( + data.processId, id, data.caseState.toString(), + changeState, caseReason, StringHelper.reformatURL(mediaList), approvalResult + ) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = + if (data.communityName == "") "无更详细社区信息" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + caseHandleView.text = if (data.caseStateName == "") "无处理意见" else data.caseStateName + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + } + } + + override fun obtainNextNodeData(resultBean: CaseNextNodeBean) { + if (resultBean.isSuccess) { + val dataBeans = resultBean.data + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("处理结果") + for (dataBean in dataBeans) { + sheetBuilder.addItem(dataBean.nextOperation) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + val dataBean = dataBeans[position] + val nextOperation = dataBean.nextOperation + caseHandleResultView.text = nextOperation + if (nextOperation == "处理完成") { + imageLayout.visibility = View.VISIBLE + reasonLayout.visibility = View.GONE + } else { + imageLayout.visibility = View.GONE + reasonLayout.visibility = View.VISIBLE + } + changeState = dataBean.nextState.toString() + approvalResult = dataBean.approvalResult + }.build().show() + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR) + } + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (resultCode == RESULT_OK) { + when (requestCode) { + PictureConfig.CHOOSE_REQUEST -> { + val selectList = PictureSelector.obtainMultipleResult(data) + for (media in selectList) { + val file = File(media.compressPath) + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR) + continue + } + uploadImagePresenter.onReadyRetrofitRequest(file) + } + } + PictureConfig.REQUEST_CAMERA -> { + val localMedia = PictureSelector.obtainMultipleResult(data)[0] + uploadImagePresenter.onReadyRetrofitRequest(File(localMedia.compressPath)) + } + } + } + } + + override fun showProgress() { + submitDialog!!.show() + } + + override fun hideProgress() { + submitDialog!!.dismiss() + } + + override fun obtainUploadAudioResult(resultBean: ActionResultBean) {} + override fun obtainUploadImageResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + PictureFileUtils.deleteAllCacheDirFile(this) + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + val sumItemCount = handleImageAdapter!!.count + 1 //每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + val url = resultBean.data + mediaList.add(url) + realPaths.add(StringHelper.appendCompleteURL(url)) + if (realPaths.size == 2) { + addImageView.visibility = View.GONE + } + handleImageAdapter!!.setImageList(realPaths) + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, realPaths) + } + //删除按钮点击事件 + handleImageAdapter!!.isDeleteVisible(true) + handleImageAdapter!!.setOnDeleteClickListener { position -> + mediaList.removeAt(position) + realPaths.removeAt(position) + handleImageAdapter!!.setImageList(realPaths) + if (realPaths.size != 2) { + addImageView.visibility = View.VISIBLE + } + } + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING) + } + } + } + + override fun obtainUploadVideoResult(resultBean: ActionResultBean) {} + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun obtainCaseHandleResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS) + when (title) { + "超时案卷" -> { + OvertimeCaseFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + } + "紧急案卷" -> { + UrgentCaseFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + } + "待办案卷" -> { + CaseTodoFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + } + } + finish() + } else { + ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR) + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + caseNextNodePresenter.disposeRetrofitRequest() + uploadImagePresenter.disposeRetrofitRequest() + caseHandlePresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java deleted file mode 100644 index 8b08041..0000000 --- a/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java +++ /dev/null @@ -1,289 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.EditText; -import android.widget.GridView; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.mvp.presenter.ShopChangePresenterImpl; -import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; -import com.casic.dcms.mvp.view.IShopInfoChangeView; -import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.luck.picture.lib.PictureSelector; -import com.luck.picture.lib.config.PictureConfig; -import com.luck.picture.lib.entity.LocalMedia; -import com.luck.picture.lib.tools.PictureFileUtils; -import com.qmuiteam.qmui.widget.dialog.QMUIDialog; -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; - -public class ChangeShopInfoActivity extends BaseCaseActivity implements View.OnClickListener, IUploadFileView, - IShopInfoChangeView { - - private static final String TAG = "ChangeShopInfoActivity"; - private Context context = this; - @BindView(R.id.shopView) - TextView shopView; - @BindView(R.id.communityNameView) - TextView communityNameView; - @BindView(R.id.shopLocationView) - EditText shopLocationView; - @BindView(R.id.shopKeeperView) - EditText shopKeeperView; - @BindView(R.id.phoneNumberView) - EditText phoneNumberView; - @BindView(R.id.selectedGridViewView) - GridView selectedGridViewView; - @BindView(R.id.addImageView) - ImageView addImageView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private UploadImagePresenterImpl uploadImagePresenter; - private ShopChangePresenterImpl shopChangePresenter; - private QMUITipDialog submitDialog; - private ImageGridViewAdapter imageAdapter; - private String merchantId;//商户id - private String merchantName; - private ArrayList realPaths = new ArrayList<>();//真实图片路径 - private List mediaList = new ArrayList<>();//上传到服务器的数据集 - - @Override - protected String setTitleName() { - return "商铺变更"; - } - - @Override - public int initLayoutView() { - return R.layout.activity_change_shop; - } - - @Override - public void initData() { - uploadImagePresenter = new UploadImagePresenterImpl(this); - shopChangePresenter = new ShopChangePresenterImpl(this); - submitDialog = new QMUITipDialog.Builder(this) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord("处理中,请稍后") - .create(); - imageAdapter = new ImageGridViewAdapter(this); - selectedGridViewView.setAdapter(imageAdapter); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @OnClick({R.id.shopLayout, R.id.addImageView, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.shopLayout: - Intent intent = new Intent(this, ArcGISMapActivity.class); - intent.putExtra("type", "商铺变更"); - startActivityForResult(intent, Constant.REQUEST_MAP_CODE); - break; - case R.id.addImageView: - new QMUIDialog.MenuDialogBuilder(this) - .addItem("相册中选取", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.selectPicture(ChangeShopInfoActivity.this); - } - }) - .addItem("相机拍照", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.takePicture(ChangeShopInfoActivity.this); - } - }) - .setCanceledOnTouchOutside(false) - .create().show(); - break; - case R.id.submitButton: - submitCase(); - break; - } - } - - private void submitCase() { - String phoneNumber = phoneNumberView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(phoneNumber)) { - ToastHelper.showToast("电话号码还未填写", ToastHelper.WARING); - return; - } - if (StringHelper.isPhoneNumber(phoneNumber)) { - String shopLocation = shopLocationView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(shopLocation)) { - ToastHelper.showToast("店铺地址还未填写", ToastHelper.WARING); - return; - } - String shopKeeper = shopKeeperView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(shopKeeper)) { - ToastHelper.showToast("店主名还未填写", ToastHelper.WARING); - return; - } - if (imageAdapter.getCount() != 2) { - ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING); - return; - } - shopChangePresenter.onReadyRetrofitRequest(merchantId, merchantName, shopKeeper, phoneNumber, StringHelper.reformatURL(mediaList)); - } else { - ToastHelper.showToast("电话号码格式不对", ToastHelper.WARING); - } - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - switch (requestCode) { - case Constant.REQUEST_MAP_CODE: - if (data == null) { - return; - } - String community = data.getStringExtra("community"); - merchantName = data.getStringExtra("shopName"); - merchantId = data.getStringExtra("shopID"); - - communityNameView.setText(community); - shopView.setText(merchantName); - shopView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - break; - case PictureConfig.CHOOSE_REQUEST: - List selectList = PictureSelector.obtainMultipleResult(data); - for (LocalMedia media : selectList) { - File file = new File(media.getCompressPath()); - if (file.length() <= Constant.IMAGE_MINUS_SIZE) { - ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); - continue; - } - uploadImagePresenter.onReadyRetrofitRequest(file); - } - break; - case PictureConfig.REQUEST_CAMERA: - LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); - break; - default: - break; - } - } - } - - @Override - public void showProgress() { - submitDialog.show(); - } - - @Override - public void hideProgress() { - submitDialog.dismiss(); - } - - @Override - public void obtainChangeResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("提交成功", ToastHelper.SUCCESS); - finish(); - } else { - ToastHelper.showToast("提交失败,请重试", ToastHelper.ERROR); - } - } - - @Override - public void obtainUploadAudioResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainUploadImageResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - PictureFileUtils.deleteAllCacheDirFile(this); - /** - * 系统路径static拼接图片返回路径 - * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg - */ - //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg - int sumItemCount = imageAdapter.getCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 2) { - String url = resultBean.getData(); - mediaList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - if (realPaths.size() == 2) { - addImageView.setVisibility(View.GONE); - } - imageAdapter.setImageList(realPaths); - //九宫格点击事件 - selectedGridViewView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, realPaths); - } - }); - //删除按钮点击事件 - imageAdapter.setOnDeleteClickListener(new ImageGridViewAdapter.OnDeleteItemClickListener() { - @Override - public void onClick(int position) { - mediaList.remove(position); - realPaths.remove(position); - imageAdapter.setImageList(realPaths); - if (realPaths.size() != 2) { - addImageView.setVisibility(View.VISIBLE); - } - } - }); - } else { - ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); - } - } - } - - @Override - public void obtainUploadVideoResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (uploadImagePresenter != null) { - uploadImagePresenter.disposeRetrofitRequest(); - } - if (shopChangePresenter != null) { - shopChangePresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.kt b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.kt new file mode 100644 index 0000000..4a9e91c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.kt @@ -0,0 +1,217 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.ShopChangePresenterImpl +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl +import com.casic.dcms.mvp.view.IShopInfoChangeView +import com.casic.dcms.mvp.view.IUploadFileView +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.luck.picture.lib.PictureSelector +import com.luck.picture.lib.config.PictureConfig +import com.luck.picture.lib.tools.PictureFileUtils +import com.qmuiteam.qmui.widget.dialog.QMUIDialog.MenuDialogBuilder +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog +import kotlinx.android.synthetic.main.activity_change_shop.* +import java.io.File +import java.util.* + +class ChangeShopInfoActivity : BaseCaseActivity(), IUploadFileView, IShopInfoChangeView { + + private lateinit var uploadImagePresenter: UploadImagePresenterImpl + private lateinit var shopChangePresenter: ShopChangePresenterImpl + private lateinit var merchantId: String //商户id + private lateinit var merchantName: String + private var submitDialog: QMUITipDialog? = null + private var imageAdapter: ImageGridViewAdapter? = null + private val realPaths = ArrayList() //真实图片路径 + private val mediaList: MutableList = ArrayList() //上传到服务器的数据集 + + override fun setTitleName(): String { + return "商铺变更" + } + + override fun initLayoutView(): Int { + return R.layout.activity_change_shop + } + + override fun initData() { + uploadImagePresenter = UploadImagePresenterImpl(this) + shopChangePresenter = ShopChangePresenterImpl(this) + submitDialog = QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create() + imageAdapter = ImageGridViewAdapter(this) + selectedGridViewView.adapter = imageAdapter + } + + override fun initEvent() { + shopLayout.setOnClickListener { + val intent = Intent(this, ArcGISMapActivity::class.java) + intent.putExtra("type", "商铺变更") + startActivityForResult(intent, Constant.REQUEST_MAP_CODE) + } + + addImageView.setOnClickListener { + MenuDialogBuilder(this) + .addItem("相册中选取") { dialog, which -> + dialog.dismiss() + OtherUtils.selectPicture(this) + } + .addItem("相机拍照") { dialog, which -> + dialog.dismiss() + OtherUtils.takePicture(this) + } + .setCanceledOnTouchOutside(false) + .create().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + val phoneNumber: String = phoneNumberView.text.toString().trim().replace(" ", "") + if (TextUtils.isEmpty(phoneNumber)) { + ToastHelper.showToast("电话号码还未填写", ToastHelper.WARING) + return@setOnClickListener + } + if (StringHelper.isPhoneNumber(phoneNumber)) { + val shopLocation: String = + shopLocationView.text.toString().trim().replace(" ", "") + if (TextUtils.isEmpty(shopLocation)) { + ToastHelper.showToast("店铺地址还未填写", ToastHelper.WARING) + return@setOnClickListener + } + val shopKeeper: String = shopKeeperView.text.toString().trim().replace(" ", "") + if (TextUtils.isEmpty(shopKeeper)) { + ToastHelper.showToast("店主名还未填写", ToastHelper.WARING) + return@setOnClickListener + } + if (imageAdapter!!.count != 2) { + ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING) + return@setOnClickListener + } + shopChangePresenter.onReadyRetrofitRequest( + merchantId, + merchantName, + shopKeeper, + phoneNumber, + StringHelper.reformatURL(mediaList) + ) + } else { + ToastHelper.showToast("电话号码格式不对", ToastHelper.WARING) + } + } + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (resultCode == RESULT_OK) { + when (requestCode) { + Constant.REQUEST_MAP_CODE -> { + if (data == null) { + return + } + val community = data.getStringExtra("community") + merchantName = data.getStringExtra("shopName")!! + merchantId = data.getStringExtra("shopID")!! + communityNameView.text = community + shopView.text = merchantName + shopView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + } + PictureConfig.CHOOSE_REQUEST -> { + val selectList = PictureSelector.obtainMultipleResult(data) + for (media in selectList) { + val file = File(media.compressPath) + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR) + continue + } + uploadImagePresenter.onReadyRetrofitRequest(file) + } + } + PictureConfig.REQUEST_CAMERA -> { + val localMedia = PictureSelector.obtainMultipleResult(data)[0] + uploadImagePresenter.onReadyRetrofitRequest(File(localMedia.compressPath)) + } + } + } + } + + override fun showProgress() { + submitDialog!!.show() + } + + override fun hideProgress() { + submitDialog!!.dismiss() + } + + override fun obtainChangeResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + ToastHelper.showToast("提交成功", ToastHelper.SUCCESS) + finish() + } else { + ToastHelper.showToast("提交失败,请重试", ToastHelper.ERROR) + } + } + + override fun obtainUploadAudioResult(resultBean: ActionResultBean) {} + + override fun obtainUploadImageResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + PictureFileUtils.deleteAllCacheDirFile(this) + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + val sumItemCount = imageAdapter!!.count + 1 //每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + val url = resultBean.data + mediaList.add(url) + realPaths.add(StringHelper.appendCompleteURL(url)) + if (realPaths.size == 2) { + addImageView.visibility = View.GONE + } + imageAdapter!!.setImageList(realPaths) + //九宫格点击事件 + selectedGridViewView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, realPaths) + } + //删除按钮点击事件 + imageAdapter!!.setOnDeleteClickListener { position -> + mediaList.removeAt(position) + realPaths.removeAt(position) + imageAdapter!!.setImageList(realPaths) + if (realPaths.size != 2) { + addImageView.visibility = View.VISIBLE + } + } + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING) + } + } + } + + override fun obtainUploadVideoResult(resultBean: ActionResultBean) {} + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + uploadImagePresenter.disposeRetrofitRequest() + shopChangePresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java deleted file mode 100644 index a5f468d..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ /dev/null @@ -1,458 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.bean.CaseNextNodeBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl; -import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl; -import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailHandleView; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.mvp.view.ICaseNextNodeView; -import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.ui.fragment.check.CaseCheckFragment; -import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.luck.picture.lib.PictureSelector; -import com.luck.picture.lib.config.PictureConfig; -import com.luck.picture.lib.entity.LocalMedia; -import com.luck.picture.lib.tools.PictureFileUtils; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.dialog.QMUIDialog; -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, - IUploadFileView, ICaseNextNodeView, ICaseDetailHandleView { - - private Context context = this; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.caseHandleResultView) - TextView caseHandleResultView; - @BindView(R.id.caseHandleTimeView) - TextView caseHandleTimeView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.addImageView) - ImageView addImageView; - @BindView(R.id.caseCheckOptView) - TextView caseCheckOptView; - @BindView(R.id.caseCheckStatusView) - TextView caseCheckStatusView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private CaseDetailPresenterImpl caseDetailPresenter; - private UploadImagePresenterImpl uploadImagePresenter; - private CaseNextNodePresenterImpl caseNextNodePresenter; - private CaseHandlePresenterImpl caseHandlePresenter; - - private String id; - private String changeState; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private ArrayList realPaths = new ArrayList<>();//真实图片路径 - private List mediaList = new ArrayList<>();//上传到服务器的数据集 - private QMUITipDialog submitDialog; - private ImageGridViewAdapter checkImageAdapter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_check_detail; - } - - @Override - protected String setTitleName() { - return "案卷核查"; - } - - @Override - public void initData() { - id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - - uploadImagePresenter = new UploadImagePresenterImpl(this); - caseNextNodePresenter = new CaseNextNodePresenterImpl(this); - caseHandlePresenter = new CaseHandlePresenterImpl(this); - submitDialog = new QMUITipDialog.Builder(this) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord("处理中,请稍后") - .create(); - checkImageAdapter = new ImageGridViewAdapter(this); - checkGridView.setAdapter(checkImageAdapter); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.addImageView: - new QMUIDialog.MenuDialogBuilder(this) - .addItem("相册中选取", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.selectPicture(CaseCheckDetailActivity.this); - } - }) - .addItem("相机拍照", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.takePicture(CaseCheckDetailActivity.this); - } - }) - .create().show(); - break; - case R.id.caseCheckLayout: - caseNextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); - break; - case R.id.submitButton: - submitCase();//案卷提交 - break; - default: - break; - } - } - - private void submitCase() { - String remarks = caseCheckOptView.getText().toString(); - if (TextUtils.isEmpty(remarks)) { - ToastHelper.showToast("核查意见不能为空", ToastHelper.WARING); - return; - } - if (TextUtils.isEmpty(changeState)) { - ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); - return; - } - if (checkImageAdapter.getCount() != 2) { - ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); - return; - } - caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), - changeState, remarks, StringHelper.reformatURL(mediaList)); - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - switch (requestCode) { - case PictureConfig.CHOOSE_REQUEST: - List selectList = PictureSelector.obtainMultipleResult(data); - for (LocalMedia media : selectList) { - File file = new File(media.getCompressPath()); - if (file.length() <= Constant.IMAGE_MINUS_SIZE) { - ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); - continue; - } - uploadImagePresenter.onReadyRetrofitRequest(file); - } - break; - case PictureConfig.REQUEST_CAMERA: - LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); - break; - default: - break; - } - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - - /** - * 图片 - * */ - //核实照片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - - //处理照片 - String processImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(processImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = processImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - caseHandleResultView.setText(data.getProcessRemarks().equals("") ? "无处理意见" : data.getProcessRemarks()); - //TODO 服务器返回数据缺少此字段,暂时注掉 -// caseHandleTimeView.setText(); - } - } - - @Override - public void showProgress() { - submitDialog.show(); - } - - @Override - public void hideProgress() { - submitDialog.dismiss(); - } - - @Override - public void obtainCaseHandleResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("案卷核查提交成功", ToastHelper.SUCCESS); - //案卷办完以后通知待办和已办刷新数据 - CaseCheckFragment.sendEmptyMessage(Constant.CASE_CHECK_OK); - CaseCheckedFragment.sendEmptyMessage(Constant.CASE_CHECK_OK); - finish(); - } else { - ToastHelper.showToast("案卷核查提交失败,请检查", ToastHelper.ERROR); - } - } - - @Override - public void obtainUploadAudioResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainUploadImageResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - PictureFileUtils.deleteAllCacheDirFile(this); - /** - * 系统路径static拼接图片返回路径 - * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg - */ - //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg - int sumItemCount = checkImageAdapter.getCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 2) { - String url = resultBean.getData(); - mediaList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - if (realPaths.size() == 2) { - addImageView.setVisibility(View.GONE); - } - checkImageAdapter.setImageList(realPaths); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, realPaths); - } - }); - //删除按钮点击事件 - checkImageAdapter.isDeleteVisible(true); - checkImageAdapter.setOnDeleteClickListener(new ImageGridViewAdapter.OnDeleteItemClickListener() { - @Override - public void onClick(int position) { - mediaList.remove(position); - realPaths.remove(position); - checkImageAdapter.setImageList(realPaths); - if (realPaths.size() != 2) { - addImageView.setVisibility(View.VISIBLE); - } - } - }); - } else { - ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); - } - } - } - - @Override - public void obtainUploadVideoResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainNextNodeData(CaseNextNodeBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("核实情况"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - caseCheckStatusView.setText(dataBean.getNextOperation()); - caseCheckOptView.setText(dataBean.getNextOperation()); - changeState = String.valueOf(dataBean.getNextState()); - } - }).build().show(); - } else { - ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("上传失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (uploadImagePresenter != null) { - uploadImagePresenter.disposeRetrofitRequest(); - } - if (caseNextNodePresenter != null) { - caseNextNodePresenter.disposeRetrofitRequest(); - } - if (caseHandlePresenter != null) { - caseHandlePresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.kt new file mode 100644 index 0000000..c7d9d48 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.kt @@ -0,0 +1,340 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.bean.CaseNextNodeBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl +import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailHandleView +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.mvp.view.ICaseNextNodeView +import com.casic.dcms.mvp.view.IUploadFileView +import com.casic.dcms.ui.fragment.check.CaseCheckFragment +import com.casic.dcms.ui.fragment.check.CaseCheckedFragment +import com.casic.dcms.utils.* +import com.luck.picture.lib.PictureSelector +import com.luck.picture.lib.config.PictureConfig +import com.luck.picture.lib.tools.PictureFileUtils +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import com.qmuiteam.qmui.widget.dialog.QMUIDialog.MenuDialogBuilder +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog +import kotlinx.android.synthetic.main.activity_case_check_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import java.io.File +import java.util.* + +class CaseCheckDetailActivity : BaseCaseActivity(), ICaseDetailView, + IUploadFileView, ICaseNextNodeView, ICaseDetailHandleView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private lateinit var uploadImagePresenter: UploadImagePresenterImpl + private lateinit var caseNextNodePresenter: CaseNextNodePresenterImpl + private lateinit var caseHandlePresenter: CaseHandlePresenterImpl + private lateinit var id: String + private lateinit var changeState: String + private var submitDialog: QMUITipDialog? = null + private var checkImageAdapter: ImageGridViewAdapter? = null + private var data = CaseDetailBean.DataBean() + private val realPaths = ArrayList() //真实图片路径 + private val mediaList: MutableList = ArrayList() //上传到服务器的数据集 + + override fun initLayoutView(): Int = R.layout.activity_case_check_detail + + override fun setTitleName(): String { + return "案卷核查" + } + + override fun initData() { + id = intent.getStringExtra("id")!! + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + uploadImagePresenter = UploadImagePresenterImpl(this) + caseNextNodePresenter = CaseNextNodePresenterImpl(this) + caseHandlePresenter = CaseHandlePresenterImpl(this) + submitDialog = QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create() + checkImageAdapter = ImageGridViewAdapter(this) + checkGridView.adapter = checkImageAdapter + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + + addImageView.setOnClickListener { + MenuDialogBuilder(this) + .addItem("相册中选取") { dialog, which -> + dialog.dismiss() + OtherUtils.selectPicture(this@CaseCheckDetailActivity) + } + .addItem("相机拍照") { dialog, which -> + dialog.dismiss() + OtherUtils.takePicture(this@CaseCheckDetailActivity) + } + .create().show() + } + + caseCheckLayout.setOnClickListener { + caseNextNodePresenter.onReadyRetrofitRequest(data.caseState.toString()) + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + //案卷提交 + val remarks: String = caseCheckOptView.text.toString() + if (TextUtils.isEmpty(remarks)) { + ToastHelper.showToast("核查意见不能为空", ToastHelper.WARING) + return@setOnClickListener + } + if (TextUtils.isEmpty(changeState)) { + ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING) + return@setOnClickListener + } + if (checkImageAdapter!!.count != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING) + return@setOnClickListener + } + caseHandlePresenter.onReadyRetrofitRequest( + data.processId, id, data.caseState.toString(), + changeState, remarks, StringHelper.reformatURL(mediaList) + ) + } + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (resultCode == RESULT_OK) { + when (requestCode) { + PictureConfig.CHOOSE_REQUEST -> { + val selectList = PictureSelector.obtainMultipleResult(data) + for (media in selectList) { + val file = File(media.compressPath) + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR) + continue + } + uploadImagePresenter.onReadyRetrofitRequest(file) + } + } + PictureConfig.REQUEST_CAMERA -> { + val localMedia = PictureSelector.obtainMultipleResult(data)[0] + uploadImagePresenter.onReadyRetrofitRequest(File(localMedia.compressPath)) + } + } + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = + if (data.communityName == "") "无更详细社区信息" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + /** + * 图片 + */ + //核实照片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + + //处理照片 + val processImages = data.fileIdProcess + if (!TextUtils.isEmpty(processImages)) { + val urls = ArrayList() + val split = processImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + caseHandleResultView.text = + if (data.processRemarks == "") "无处理意见" else data.processRemarks + //TODO 服务器返回数据缺少此字段,暂时注掉 +// caseHandleTimeView.setText(); + } + } + + override fun showProgress() { + submitDialog!!.show() + } + + override fun hideProgress() { + submitDialog!!.dismiss() + } + + override fun obtainCaseHandleResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + ToastHelper.showToast("案卷核查提交成功", ToastHelper.SUCCESS) + //案卷办完以后通知待办和已办刷新数据 + CaseCheckFragment.sendEmptyMessage(Constant.CASE_CHECK_OK) + CaseCheckedFragment.sendEmptyMessage(Constant.CASE_CHECK_OK) + finish() + } else { + ToastHelper.showToast("案卷核查提交失败,请检查", ToastHelper.ERROR) + } + } + + override fun obtainUploadAudioResult(resultBean: ActionResultBean) {} + override fun obtainUploadImageResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + PictureFileUtils.deleteAllCacheDirFile(this) + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + val sumItemCount = checkImageAdapter!!.count + 1 //每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + val url = resultBean.data + mediaList.add(url) + realPaths.add(StringHelper.appendCompleteURL(url)) + if (realPaths.size == 2) { + addImageView.visibility = View.GONE + } + checkImageAdapter!!.setImageList(realPaths) + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, realPaths) + } + //删除按钮点击事件 + checkImageAdapter!!.isDeleteVisible(true) + checkImageAdapter!!.setOnDeleteClickListener { position -> + mediaList.removeAt(position) + realPaths.removeAt(position) + checkImageAdapter!!.setImageList(realPaths) + if (realPaths.size != 2) { + addImageView.visibility = View.VISIBLE + } + } + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING) + } + } + } + + override fun obtainUploadVideoResult(resultBean: ActionResultBean) {} + + override fun obtainNextNodeData(resultBean: CaseNextNodeBean) { + if (resultBean.isSuccess) { + val dataBeans = resultBean.data + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("核实情况") + for (dataBean in dataBeans) { + sheetBuilder.addItem(dataBean.nextOperation) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + val dataBean = dataBeans[position] + caseCheckStatusView.text = dataBean.nextOperation + caseCheckOptView.text = dataBean.nextOperation + changeState = dataBean.nextState.toString() + }.build().show() + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR) + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("上传失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + uploadImagePresenter.disposeRetrofitRequest() + caseNextNodePresenter.disposeRetrofitRequest() + caseHandlePresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java deleted file mode 100644 index 996401c..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ /dev/null @@ -1,460 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.EditText; -import android.widget.GridView; -import android.widget.ImageView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.annotation.Nullable; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.bean.CaseNextNodeBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl; -import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl; -import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailHandleView; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.mvp.view.ICaseNextNodeView; -import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.ui.fragment.handle.CaseHandledFragment; -import com.casic.dcms.ui.fragment.handle.CaseTodoFragment; -import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; -import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.luck.picture.lib.PictureSelector; -import com.luck.picture.lib.config.PictureConfig; -import com.luck.picture.lib.entity.LocalMedia; -import com.luck.picture.lib.tools.PictureFileUtils; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.dialog.QMUIDialog; -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandleDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView, ICaseNextNodeView, IUploadFileView, ICaseDetailHandleView { - - private Context context = this; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.caseHandleResultView) - TextView caseHandleResultView; - @BindView(R.id.imageLayout) - RelativeLayout imageLayout; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.addImageView) - ImageView addImageView; - @BindView(R.id.reasonLayout) - RelativeLayout reasonLayout; - @BindView(R.id.caseReasonView) - EditText caseReasonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private String title; - private String id; - private String changeState; - private String caseReason; - private String approvalResult; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private ArrayList realPaths = new ArrayList<>();//真实图片路径 - private List mediaList = new ArrayList<>();//上传到服务器的数据集 - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseNextNodePresenterImpl caseNextNodePresenter; - private UploadImagePresenterImpl uploadImagePresenter; - private CaseHandlePresenterImpl caseHandlePresenter; - private QMUITipDialog submitDialog; - private ImageGridViewAdapter handleImageAdapter;//处理图片的adapter - - @Override - public int initLayoutView() { - return R.layout.activity_case_handle_detail; - } - - @Override - protected String setTitleName() { - return title; - } - - @Override - public void initData() { - title = getIntent().getStringExtra("title"); - id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - - caseNextNodePresenter = new CaseNextNodePresenterImpl(this); - uploadImagePresenter = new UploadImagePresenterImpl(this); - caseHandlePresenter = new CaseHandlePresenterImpl(this); - submitDialog = new QMUITipDialog.Builder(this) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord("处理中,请稍后") - .create(); - handleImageAdapter = new ImageGridViewAdapter(this); - handleGridView.setAdapter(handleImageAdapter); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - caseHandleView.setText(data.getCaseStateName().equals("") ? "无处理意见" : data.getCaseStateName()); - - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - } - } - - @Override - public void obtainNextNodeData(CaseNextNodeBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("处理结果"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - String nextOperation = dataBean.getNextOperation(); - caseHandleResultView.setText(nextOperation); - if (nextOperation.equals("处理完成")) { - imageLayout.setVisibility(View.VISIBLE); - reasonLayout.setVisibility(View.GONE); - } else { - imageLayout.setVisibility(View.GONE); - reasonLayout.setVisibility(View.VISIBLE); - } - changeState = String.valueOf(dataBean.getNextState()); - approvalResult = dataBean.getApprovalResult(); - } - }).build().show(); - } else { - ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); - } - } - - @OnClick({R.id.locationMapView, R.id.caseHandleResultLayout, R.id.addImageView, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.caseHandleResultLayout: - caseNextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); - break; - case R.id.addImageView: - new QMUIDialog.MenuDialogBuilder(this) - .addItem("相册中选取", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.selectPicture(CaseHandleDetailActivity.this); - } - }) - .addItem("相机拍照", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.takePicture(CaseHandleDetailActivity.this); - } - }) - .create().show(); - break; - case R.id.submitButton: - submitCase();//案卷提交 - break; - default: - break; - } - } - - private void submitCase() { - String handleResult = caseHandleResultView.getText().toString(); - if (handleResult.equals("")) { - ToastHelper.showToast("还未选择处理结果", ToastHelper.WARING); - return; - } - if (handleResult.equals("处理完成")) { - //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getCount() != 2) { - ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); - return; - } - } - if (handleResult.equals("申请延期") || handleResult.equals("申请调整")) { - caseReason = caseReasonView.getText().toString(); - if (TextUtils.isEmpty(caseReason)) { - ToastHelper.showToast("延期/调整的原因必须填写", ToastHelper.WARING); - return; - } - } - caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), - changeState, caseReason, StringHelper.reformatURL(mediaList), approvalResult); - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - switch (requestCode) { - case PictureConfig.CHOOSE_REQUEST: - List selectList = PictureSelector.obtainMultipleResult(data); - for (LocalMedia media : selectList) { - File file = new File(media.getCompressPath()); - if (file.length() <= Constant.IMAGE_MINUS_SIZE) { - ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); - continue; - } - uploadImagePresenter.onReadyRetrofitRequest(file); - } - break; - case PictureConfig.REQUEST_CAMERA: - LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); - break; - default: - break; - } - } - } - - @Override - public void showProgress() { - submitDialog.show(); - } - - @Override - public void hideProgress() { - submitDialog.dismiss(); - } - - @Override - public void obtainUploadAudioResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainUploadImageResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - PictureFileUtils.deleteAllCacheDirFile(this); - /** - * 系统路径static拼接图片返回路径 - * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg - */ - //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg - int sumItemCount = handleImageAdapter.getCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 2) { - String url = resultBean.getData(); - mediaList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - if (realPaths.size() == 2) { - addImageView.setVisibility(View.GONE); - } - handleImageAdapter.setImageList(realPaths); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, realPaths); - } - }); - //删除按钮点击事件 - handleImageAdapter.isDeleteVisible(true); - handleImageAdapter.setOnDeleteClickListener(new ImageGridViewAdapter.OnDeleteItemClickListener() { - @Override - public void onClick(int position) { - mediaList.remove(position); - realPaths.remove(position); - handleImageAdapter.setImageList(realPaths); - if (realPaths.size() != 2) { - addImageView.setVisibility(View.VISIBLE); - } - } - }); - } else { - ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); - } - } - } - - @Override - public void obtainUploadVideoResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - public void obtainCaseHandleResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); - switch (title) { - case "超时案卷": - OvertimeCaseFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - break; - case "紧急案卷": - UrgentCaseFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - break; - case "待办案卷": - CaseTodoFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - break; - } - finish(); - } else { - ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (caseNextNodePresenter != null) { - caseNextNodePresenter.disposeRetrofitRequest(); - } - if (uploadImagePresenter != null) { - uploadImagePresenter.disposeRetrofitRequest(); - } - if (caseHandlePresenter != null) { - caseHandlePresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.kt new file mode 100644 index 0000000..c17a12d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.kt @@ -0,0 +1,341 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.bean.CaseNextNodeBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl +import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailHandleView +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.mvp.view.ICaseNextNodeView +import com.casic.dcms.mvp.view.IUploadFileView +import com.casic.dcms.ui.fragment.handle.CaseHandledFragment +import com.casic.dcms.ui.fragment.handle.CaseTodoFragment +import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment +import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment +import com.casic.dcms.utils.* +import com.luck.picture.lib.PictureSelector +import com.luck.picture.lib.config.PictureConfig +import com.luck.picture.lib.tools.PictureFileUtils +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import com.qmuiteam.qmui.widget.dialog.QMUIDialog.MenuDialogBuilder +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog +import kotlinx.android.synthetic.main.activity_case_handle_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import java.io.File +import java.util.* + +class CaseHandleDetailActivity : BaseCaseActivity(), ICaseDetailView, ICaseNextNodeView, + IUploadFileView, ICaseDetailHandleView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private lateinit var caseNextNodePresenter: CaseNextNodePresenterImpl + private lateinit var uploadImagePresenter: UploadImagePresenterImpl + private lateinit var caseHandlePresenter: CaseHandlePresenterImpl + private lateinit var title: String + private lateinit var id: String + private lateinit var changeState: String + private lateinit var caseReason: String + private lateinit var approvalResult: String + private var submitDialog: QMUITipDialog? = null + private var handleImageAdapter: ImageGridViewAdapter? = null + private var data = CaseDetailBean.DataBean() + private val realPaths = ArrayList() //真实图片路径 + private val mediaList: MutableList = ArrayList() //上传到服务器的数据集 + + override fun initLayoutView(): Int = R.layout.activity_case_handle_detail + + override fun setTitleName(): String { + return title + } + + override fun initData() { + title = intent.getStringExtra("title")!! + id = intent.getStringExtra("id")!! + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + caseNextNodePresenter = CaseNextNodePresenterImpl(this) + uploadImagePresenter = UploadImagePresenterImpl(this) + caseHandlePresenter = CaseHandlePresenterImpl(this) + submitDialog = QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create() + handleImageAdapter = ImageGridViewAdapter(this) + handleGridView.adapter = handleImageAdapter + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + + caseHandleResultLayout.setOnClickListener { + caseNextNodePresenter.onReadyRetrofitRequest(data.caseState.toString()) + } + + addImageView.setOnClickListener { + MenuDialogBuilder(this) + .addItem("相册中选取") { dialog, which -> + dialog.dismiss() + OtherUtils.selectPicture(this@CaseHandleDetailActivity) + } + .addItem("相机拍照") { dialog, which -> + dialog.dismiss() + OtherUtils.takePicture(this@CaseHandleDetailActivity) + } + .create().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + val handleResult: String = caseHandleResultView.text.toString() + if (handleResult == "") { + ToastHelper.showToast("还未选择处理结果", ToastHelper.WARING) + return@setOnClickListener + } + if (handleResult == "处理完成") { + //选择处理完成时,处理图片必传。至少一张,最多两张 + if (handleImageAdapter!!.count != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING) + return@setOnClickListener + } + } + if (handleResult == "申请延期" || handleResult == "申请调整") { + caseReason = caseReasonView.text.toString() + if (TextUtils.isEmpty(caseReason)) { + ToastHelper.showToast("延期/调整的原因必须填写", ToastHelper.WARING) + return@setOnClickListener + } + } + caseHandlePresenter.onReadyRetrofitRequest( + data.processId, id, data.caseState.toString(), + changeState, caseReason, StringHelper.reformatURL(mediaList), approvalResult + ) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = + if (data.communityName == "") "无更详细社区信息" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + caseHandleView.text = if (data.caseStateName == "") "无处理意见" else data.caseStateName + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + } + } + + override fun obtainNextNodeData(resultBean: CaseNextNodeBean) { + if (resultBean.isSuccess) { + val dataBeans = resultBean.data + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("处理结果") + for (dataBean in dataBeans) { + sheetBuilder.addItem(dataBean.nextOperation) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + val dataBean = dataBeans[position] + val nextOperation = dataBean.nextOperation + caseHandleResultView.text = nextOperation + if (nextOperation == "处理完成") { + imageLayout.visibility = View.VISIBLE + reasonLayout.visibility = View.GONE + } else { + imageLayout.visibility = View.GONE + reasonLayout.visibility = View.VISIBLE + } + changeState = dataBean.nextState.toString() + approvalResult = dataBean.approvalResult + }.build().show() + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR) + } + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (resultCode == RESULT_OK) { + when (requestCode) { + PictureConfig.CHOOSE_REQUEST -> { + val selectList = PictureSelector.obtainMultipleResult(data) + for (media in selectList) { + val file = File(media.compressPath) + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR) + continue + } + uploadImagePresenter.onReadyRetrofitRequest(file) + } + } + PictureConfig.REQUEST_CAMERA -> { + val localMedia = PictureSelector.obtainMultipleResult(data)[0] + uploadImagePresenter.onReadyRetrofitRequest(File(localMedia.compressPath)) + } + } + } + } + + override fun showProgress() { + submitDialog!!.show() + } + + override fun hideProgress() { + submitDialog!!.dismiss() + } + + override fun obtainUploadAudioResult(resultBean: ActionResultBean) {} + override fun obtainUploadImageResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + PictureFileUtils.deleteAllCacheDirFile(this) + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + val sumItemCount = handleImageAdapter!!.count + 1 //每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + val url = resultBean.data + mediaList.add(url) + realPaths.add(StringHelper.appendCompleteURL(url)) + if (realPaths.size == 2) { + addImageView.visibility = View.GONE + } + handleImageAdapter!!.setImageList(realPaths) + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, realPaths) + } + //删除按钮点击事件 + handleImageAdapter!!.isDeleteVisible(true) + handleImageAdapter!!.setOnDeleteClickListener { position -> + mediaList.removeAt(position) + realPaths.removeAt(position) + handleImageAdapter!!.setImageList(realPaths) + if (realPaths.size != 2) { + addImageView.visibility = View.VISIBLE + } + } + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING) + } + } + } + + override fun obtainUploadVideoResult(resultBean: ActionResultBean) {} + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun obtainCaseHandleResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS) + when (title) { + "超时案卷" -> { + OvertimeCaseFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + } + "紧急案卷" -> { + UrgentCaseFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + } + "待办案卷" -> { + CaseTodoFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + } + } + finish() + } else { + ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR) + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + caseNextNodePresenter.disposeRetrofitRequest() + uploadImagePresenter.disposeRetrofitRequest() + caseHandlePresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java deleted file mode 100644 index 8b08041..0000000 --- a/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java +++ /dev/null @@ -1,289 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.EditText; -import android.widget.GridView; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.mvp.presenter.ShopChangePresenterImpl; -import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; -import com.casic.dcms.mvp.view.IShopInfoChangeView; -import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.luck.picture.lib.PictureSelector; -import com.luck.picture.lib.config.PictureConfig; -import com.luck.picture.lib.entity.LocalMedia; -import com.luck.picture.lib.tools.PictureFileUtils; -import com.qmuiteam.qmui.widget.dialog.QMUIDialog; -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; - -public class ChangeShopInfoActivity extends BaseCaseActivity implements View.OnClickListener, IUploadFileView, - IShopInfoChangeView { - - private static final String TAG = "ChangeShopInfoActivity"; - private Context context = this; - @BindView(R.id.shopView) - TextView shopView; - @BindView(R.id.communityNameView) - TextView communityNameView; - @BindView(R.id.shopLocationView) - EditText shopLocationView; - @BindView(R.id.shopKeeperView) - EditText shopKeeperView; - @BindView(R.id.phoneNumberView) - EditText phoneNumberView; - @BindView(R.id.selectedGridViewView) - GridView selectedGridViewView; - @BindView(R.id.addImageView) - ImageView addImageView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private UploadImagePresenterImpl uploadImagePresenter; - private ShopChangePresenterImpl shopChangePresenter; - private QMUITipDialog submitDialog; - private ImageGridViewAdapter imageAdapter; - private String merchantId;//商户id - private String merchantName; - private ArrayList realPaths = new ArrayList<>();//真实图片路径 - private List mediaList = new ArrayList<>();//上传到服务器的数据集 - - @Override - protected String setTitleName() { - return "商铺变更"; - } - - @Override - public int initLayoutView() { - return R.layout.activity_change_shop; - } - - @Override - public void initData() { - uploadImagePresenter = new UploadImagePresenterImpl(this); - shopChangePresenter = new ShopChangePresenterImpl(this); - submitDialog = new QMUITipDialog.Builder(this) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord("处理中,请稍后") - .create(); - imageAdapter = new ImageGridViewAdapter(this); - selectedGridViewView.setAdapter(imageAdapter); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @OnClick({R.id.shopLayout, R.id.addImageView, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.shopLayout: - Intent intent = new Intent(this, ArcGISMapActivity.class); - intent.putExtra("type", "商铺变更"); - startActivityForResult(intent, Constant.REQUEST_MAP_CODE); - break; - case R.id.addImageView: - new QMUIDialog.MenuDialogBuilder(this) - .addItem("相册中选取", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.selectPicture(ChangeShopInfoActivity.this); - } - }) - .addItem("相机拍照", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.takePicture(ChangeShopInfoActivity.this); - } - }) - .setCanceledOnTouchOutside(false) - .create().show(); - break; - case R.id.submitButton: - submitCase(); - break; - } - } - - private void submitCase() { - String phoneNumber = phoneNumberView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(phoneNumber)) { - ToastHelper.showToast("电话号码还未填写", ToastHelper.WARING); - return; - } - if (StringHelper.isPhoneNumber(phoneNumber)) { - String shopLocation = shopLocationView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(shopLocation)) { - ToastHelper.showToast("店铺地址还未填写", ToastHelper.WARING); - return; - } - String shopKeeper = shopKeeperView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(shopKeeper)) { - ToastHelper.showToast("店主名还未填写", ToastHelper.WARING); - return; - } - if (imageAdapter.getCount() != 2) { - ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING); - return; - } - shopChangePresenter.onReadyRetrofitRequest(merchantId, merchantName, shopKeeper, phoneNumber, StringHelper.reformatURL(mediaList)); - } else { - ToastHelper.showToast("电话号码格式不对", ToastHelper.WARING); - } - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - switch (requestCode) { - case Constant.REQUEST_MAP_CODE: - if (data == null) { - return; - } - String community = data.getStringExtra("community"); - merchantName = data.getStringExtra("shopName"); - merchantId = data.getStringExtra("shopID"); - - communityNameView.setText(community); - shopView.setText(merchantName); - shopView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - break; - case PictureConfig.CHOOSE_REQUEST: - List selectList = PictureSelector.obtainMultipleResult(data); - for (LocalMedia media : selectList) { - File file = new File(media.getCompressPath()); - if (file.length() <= Constant.IMAGE_MINUS_SIZE) { - ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); - continue; - } - uploadImagePresenter.onReadyRetrofitRequest(file); - } - break; - case PictureConfig.REQUEST_CAMERA: - LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); - break; - default: - break; - } - } - } - - @Override - public void showProgress() { - submitDialog.show(); - } - - @Override - public void hideProgress() { - submitDialog.dismiss(); - } - - @Override - public void obtainChangeResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("提交成功", ToastHelper.SUCCESS); - finish(); - } else { - ToastHelper.showToast("提交失败,请重试", ToastHelper.ERROR); - } - } - - @Override - public void obtainUploadAudioResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainUploadImageResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - PictureFileUtils.deleteAllCacheDirFile(this); - /** - * 系统路径static拼接图片返回路径 - * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg - */ - //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg - int sumItemCount = imageAdapter.getCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 2) { - String url = resultBean.getData(); - mediaList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - if (realPaths.size() == 2) { - addImageView.setVisibility(View.GONE); - } - imageAdapter.setImageList(realPaths); - //九宫格点击事件 - selectedGridViewView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, realPaths); - } - }); - //删除按钮点击事件 - imageAdapter.setOnDeleteClickListener(new ImageGridViewAdapter.OnDeleteItemClickListener() { - @Override - public void onClick(int position) { - mediaList.remove(position); - realPaths.remove(position); - imageAdapter.setImageList(realPaths); - if (realPaths.size() != 2) { - addImageView.setVisibility(View.VISIBLE); - } - } - }); - } else { - ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); - } - } - } - - @Override - public void obtainUploadVideoResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (uploadImagePresenter != null) { - uploadImagePresenter.disposeRetrofitRequest(); - } - if (shopChangePresenter != null) { - shopChangePresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.kt b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.kt new file mode 100644 index 0000000..4a9e91c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.kt @@ -0,0 +1,217 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.ShopChangePresenterImpl +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl +import com.casic.dcms.mvp.view.IShopInfoChangeView +import com.casic.dcms.mvp.view.IUploadFileView +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.luck.picture.lib.PictureSelector +import com.luck.picture.lib.config.PictureConfig +import com.luck.picture.lib.tools.PictureFileUtils +import com.qmuiteam.qmui.widget.dialog.QMUIDialog.MenuDialogBuilder +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog +import kotlinx.android.synthetic.main.activity_change_shop.* +import java.io.File +import java.util.* + +class ChangeShopInfoActivity : BaseCaseActivity(), IUploadFileView, IShopInfoChangeView { + + private lateinit var uploadImagePresenter: UploadImagePresenterImpl + private lateinit var shopChangePresenter: ShopChangePresenterImpl + private lateinit var merchantId: String //商户id + private lateinit var merchantName: String + private var submitDialog: QMUITipDialog? = null + private var imageAdapter: ImageGridViewAdapter? = null + private val realPaths = ArrayList() //真实图片路径 + private val mediaList: MutableList = ArrayList() //上传到服务器的数据集 + + override fun setTitleName(): String { + return "商铺变更" + } + + override fun initLayoutView(): Int { + return R.layout.activity_change_shop + } + + override fun initData() { + uploadImagePresenter = UploadImagePresenterImpl(this) + shopChangePresenter = ShopChangePresenterImpl(this) + submitDialog = QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create() + imageAdapter = ImageGridViewAdapter(this) + selectedGridViewView.adapter = imageAdapter + } + + override fun initEvent() { + shopLayout.setOnClickListener { + val intent = Intent(this, ArcGISMapActivity::class.java) + intent.putExtra("type", "商铺变更") + startActivityForResult(intent, Constant.REQUEST_MAP_CODE) + } + + addImageView.setOnClickListener { + MenuDialogBuilder(this) + .addItem("相册中选取") { dialog, which -> + dialog.dismiss() + OtherUtils.selectPicture(this) + } + .addItem("相机拍照") { dialog, which -> + dialog.dismiss() + OtherUtils.takePicture(this) + } + .setCanceledOnTouchOutside(false) + .create().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + val phoneNumber: String = phoneNumberView.text.toString().trim().replace(" ", "") + if (TextUtils.isEmpty(phoneNumber)) { + ToastHelper.showToast("电话号码还未填写", ToastHelper.WARING) + return@setOnClickListener + } + if (StringHelper.isPhoneNumber(phoneNumber)) { + val shopLocation: String = + shopLocationView.text.toString().trim().replace(" ", "") + if (TextUtils.isEmpty(shopLocation)) { + ToastHelper.showToast("店铺地址还未填写", ToastHelper.WARING) + return@setOnClickListener + } + val shopKeeper: String = shopKeeperView.text.toString().trim().replace(" ", "") + if (TextUtils.isEmpty(shopKeeper)) { + ToastHelper.showToast("店主名还未填写", ToastHelper.WARING) + return@setOnClickListener + } + if (imageAdapter!!.count != 2) { + ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING) + return@setOnClickListener + } + shopChangePresenter.onReadyRetrofitRequest( + merchantId, + merchantName, + shopKeeper, + phoneNumber, + StringHelper.reformatURL(mediaList) + ) + } else { + ToastHelper.showToast("电话号码格式不对", ToastHelper.WARING) + } + } + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (resultCode == RESULT_OK) { + when (requestCode) { + Constant.REQUEST_MAP_CODE -> { + if (data == null) { + return + } + val community = data.getStringExtra("community") + merchantName = data.getStringExtra("shopName")!! + merchantId = data.getStringExtra("shopID")!! + communityNameView.text = community + shopView.text = merchantName + shopView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + } + PictureConfig.CHOOSE_REQUEST -> { + val selectList = PictureSelector.obtainMultipleResult(data) + for (media in selectList) { + val file = File(media.compressPath) + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR) + continue + } + uploadImagePresenter.onReadyRetrofitRequest(file) + } + } + PictureConfig.REQUEST_CAMERA -> { + val localMedia = PictureSelector.obtainMultipleResult(data)[0] + uploadImagePresenter.onReadyRetrofitRequest(File(localMedia.compressPath)) + } + } + } + } + + override fun showProgress() { + submitDialog!!.show() + } + + override fun hideProgress() { + submitDialog!!.dismiss() + } + + override fun obtainChangeResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + ToastHelper.showToast("提交成功", ToastHelper.SUCCESS) + finish() + } else { + ToastHelper.showToast("提交失败,请重试", ToastHelper.ERROR) + } + } + + override fun obtainUploadAudioResult(resultBean: ActionResultBean) {} + + override fun obtainUploadImageResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + PictureFileUtils.deleteAllCacheDirFile(this) + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + val sumItemCount = imageAdapter!!.count + 1 //每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + val url = resultBean.data + mediaList.add(url) + realPaths.add(StringHelper.appendCompleteURL(url)) + if (realPaths.size == 2) { + addImageView.visibility = View.GONE + } + imageAdapter!!.setImageList(realPaths) + //九宫格点击事件 + selectedGridViewView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, realPaths) + } + //删除按钮点击事件 + imageAdapter!!.setOnDeleteClickListener { position -> + mediaList.removeAt(position) + realPaths.removeAt(position) + imageAdapter!!.setImageList(realPaths) + if (realPaths.size != 2) { + addImageView.visibility = View.VISIBLE + } + } + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING) + } + } + } + + override fun obtainUploadVideoResult(resultBean: ActionResultBean) {} + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + uploadImagePresenter.disposeRetrofitRequest() + shopChangePresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt index d2425dc..9e86954 100644 --- a/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt +++ b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt @@ -79,20 +79,27 @@ } changeServerConfigButton!!.setChangeAlphaWhenPress(true) changeServerConfigButton.setOnClickListener { - InputDialog.Builder() - .setContext(this) - .setTitle("修改服务器地址和端口") - .setOnDialogClickListener(object : InputDialog.OnDialogClickListener { - override fun onConfirmClick(serverValue: String, portValue: String) { - if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { - val serverConfig = "http:$serverValue:$portValue" - SaveKeyValues.putValue(Constant.IP_KEY, serverConfig) - ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS) - } + val defaultValue = SaveKeyValues.getValue( + Constant.IP_KEY, + "http://111.198.10.15:11409" + ) as String + InputDialog.Builder().setContext(this) + .setTitle("请输入后台服务器地址") + .setDefaultValue(defaultValue) + .setHintText("请输入服务器地址") + .setNegativeButton("取消") + .setPositiveButton("保存") + .setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener { + override fun onConfirmClick(input: String) { + SaveKeyValues.putValue(Constant.IP_KEY, input) + ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS) } - override fun onCancelClick() {} - }).build().show() + override fun onCancelClick() { + + } + }) + .build().show() } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java deleted file mode 100644 index a5f468d..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ /dev/null @@ -1,458 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.bean.CaseNextNodeBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl; -import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl; -import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailHandleView; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.mvp.view.ICaseNextNodeView; -import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.ui.fragment.check.CaseCheckFragment; -import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.luck.picture.lib.PictureSelector; -import com.luck.picture.lib.config.PictureConfig; -import com.luck.picture.lib.entity.LocalMedia; -import com.luck.picture.lib.tools.PictureFileUtils; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.dialog.QMUIDialog; -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, - IUploadFileView, ICaseNextNodeView, ICaseDetailHandleView { - - private Context context = this; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.caseHandleResultView) - TextView caseHandleResultView; - @BindView(R.id.caseHandleTimeView) - TextView caseHandleTimeView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.addImageView) - ImageView addImageView; - @BindView(R.id.caseCheckOptView) - TextView caseCheckOptView; - @BindView(R.id.caseCheckStatusView) - TextView caseCheckStatusView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private CaseDetailPresenterImpl caseDetailPresenter; - private UploadImagePresenterImpl uploadImagePresenter; - private CaseNextNodePresenterImpl caseNextNodePresenter; - private CaseHandlePresenterImpl caseHandlePresenter; - - private String id; - private String changeState; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private ArrayList realPaths = new ArrayList<>();//真实图片路径 - private List mediaList = new ArrayList<>();//上传到服务器的数据集 - private QMUITipDialog submitDialog; - private ImageGridViewAdapter checkImageAdapter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_check_detail; - } - - @Override - protected String setTitleName() { - return "案卷核查"; - } - - @Override - public void initData() { - id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - - uploadImagePresenter = new UploadImagePresenterImpl(this); - caseNextNodePresenter = new CaseNextNodePresenterImpl(this); - caseHandlePresenter = new CaseHandlePresenterImpl(this); - submitDialog = new QMUITipDialog.Builder(this) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord("处理中,请稍后") - .create(); - checkImageAdapter = new ImageGridViewAdapter(this); - checkGridView.setAdapter(checkImageAdapter); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.addImageView: - new QMUIDialog.MenuDialogBuilder(this) - .addItem("相册中选取", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.selectPicture(CaseCheckDetailActivity.this); - } - }) - .addItem("相机拍照", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.takePicture(CaseCheckDetailActivity.this); - } - }) - .create().show(); - break; - case R.id.caseCheckLayout: - caseNextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); - break; - case R.id.submitButton: - submitCase();//案卷提交 - break; - default: - break; - } - } - - private void submitCase() { - String remarks = caseCheckOptView.getText().toString(); - if (TextUtils.isEmpty(remarks)) { - ToastHelper.showToast("核查意见不能为空", ToastHelper.WARING); - return; - } - if (TextUtils.isEmpty(changeState)) { - ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); - return; - } - if (checkImageAdapter.getCount() != 2) { - ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); - return; - } - caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), - changeState, remarks, StringHelper.reformatURL(mediaList)); - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - switch (requestCode) { - case PictureConfig.CHOOSE_REQUEST: - List selectList = PictureSelector.obtainMultipleResult(data); - for (LocalMedia media : selectList) { - File file = new File(media.getCompressPath()); - if (file.length() <= Constant.IMAGE_MINUS_SIZE) { - ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); - continue; - } - uploadImagePresenter.onReadyRetrofitRequest(file); - } - break; - case PictureConfig.REQUEST_CAMERA: - LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); - break; - default: - break; - } - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - - /** - * 图片 - * */ - //核实照片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - - //处理照片 - String processImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(processImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = processImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - caseHandleResultView.setText(data.getProcessRemarks().equals("") ? "无处理意见" : data.getProcessRemarks()); - //TODO 服务器返回数据缺少此字段,暂时注掉 -// caseHandleTimeView.setText(); - } - } - - @Override - public void showProgress() { - submitDialog.show(); - } - - @Override - public void hideProgress() { - submitDialog.dismiss(); - } - - @Override - public void obtainCaseHandleResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("案卷核查提交成功", ToastHelper.SUCCESS); - //案卷办完以后通知待办和已办刷新数据 - CaseCheckFragment.sendEmptyMessage(Constant.CASE_CHECK_OK); - CaseCheckedFragment.sendEmptyMessage(Constant.CASE_CHECK_OK); - finish(); - } else { - ToastHelper.showToast("案卷核查提交失败,请检查", ToastHelper.ERROR); - } - } - - @Override - public void obtainUploadAudioResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainUploadImageResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - PictureFileUtils.deleteAllCacheDirFile(this); - /** - * 系统路径static拼接图片返回路径 - * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg - */ - //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg - int sumItemCount = checkImageAdapter.getCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 2) { - String url = resultBean.getData(); - mediaList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - if (realPaths.size() == 2) { - addImageView.setVisibility(View.GONE); - } - checkImageAdapter.setImageList(realPaths); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, realPaths); - } - }); - //删除按钮点击事件 - checkImageAdapter.isDeleteVisible(true); - checkImageAdapter.setOnDeleteClickListener(new ImageGridViewAdapter.OnDeleteItemClickListener() { - @Override - public void onClick(int position) { - mediaList.remove(position); - realPaths.remove(position); - checkImageAdapter.setImageList(realPaths); - if (realPaths.size() != 2) { - addImageView.setVisibility(View.VISIBLE); - } - } - }); - } else { - ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); - } - } - } - - @Override - public void obtainUploadVideoResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainNextNodeData(CaseNextNodeBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("核实情况"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - caseCheckStatusView.setText(dataBean.getNextOperation()); - caseCheckOptView.setText(dataBean.getNextOperation()); - changeState = String.valueOf(dataBean.getNextState()); - } - }).build().show(); - } else { - ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("上传失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (uploadImagePresenter != null) { - uploadImagePresenter.disposeRetrofitRequest(); - } - if (caseNextNodePresenter != null) { - caseNextNodePresenter.disposeRetrofitRequest(); - } - if (caseHandlePresenter != null) { - caseHandlePresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.kt new file mode 100644 index 0000000..c7d9d48 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.kt @@ -0,0 +1,340 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.bean.CaseNextNodeBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl +import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailHandleView +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.mvp.view.ICaseNextNodeView +import com.casic.dcms.mvp.view.IUploadFileView +import com.casic.dcms.ui.fragment.check.CaseCheckFragment +import com.casic.dcms.ui.fragment.check.CaseCheckedFragment +import com.casic.dcms.utils.* +import com.luck.picture.lib.PictureSelector +import com.luck.picture.lib.config.PictureConfig +import com.luck.picture.lib.tools.PictureFileUtils +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import com.qmuiteam.qmui.widget.dialog.QMUIDialog.MenuDialogBuilder +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog +import kotlinx.android.synthetic.main.activity_case_check_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import java.io.File +import java.util.* + +class CaseCheckDetailActivity : BaseCaseActivity(), ICaseDetailView, + IUploadFileView, ICaseNextNodeView, ICaseDetailHandleView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private lateinit var uploadImagePresenter: UploadImagePresenterImpl + private lateinit var caseNextNodePresenter: CaseNextNodePresenterImpl + private lateinit var caseHandlePresenter: CaseHandlePresenterImpl + private lateinit var id: String + private lateinit var changeState: String + private var submitDialog: QMUITipDialog? = null + private var checkImageAdapter: ImageGridViewAdapter? = null + private var data = CaseDetailBean.DataBean() + private val realPaths = ArrayList() //真实图片路径 + private val mediaList: MutableList = ArrayList() //上传到服务器的数据集 + + override fun initLayoutView(): Int = R.layout.activity_case_check_detail + + override fun setTitleName(): String { + return "案卷核查" + } + + override fun initData() { + id = intent.getStringExtra("id")!! + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + uploadImagePresenter = UploadImagePresenterImpl(this) + caseNextNodePresenter = CaseNextNodePresenterImpl(this) + caseHandlePresenter = CaseHandlePresenterImpl(this) + submitDialog = QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create() + checkImageAdapter = ImageGridViewAdapter(this) + checkGridView.adapter = checkImageAdapter + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + + addImageView.setOnClickListener { + MenuDialogBuilder(this) + .addItem("相册中选取") { dialog, which -> + dialog.dismiss() + OtherUtils.selectPicture(this@CaseCheckDetailActivity) + } + .addItem("相机拍照") { dialog, which -> + dialog.dismiss() + OtherUtils.takePicture(this@CaseCheckDetailActivity) + } + .create().show() + } + + caseCheckLayout.setOnClickListener { + caseNextNodePresenter.onReadyRetrofitRequest(data.caseState.toString()) + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + //案卷提交 + val remarks: String = caseCheckOptView.text.toString() + if (TextUtils.isEmpty(remarks)) { + ToastHelper.showToast("核查意见不能为空", ToastHelper.WARING) + return@setOnClickListener + } + if (TextUtils.isEmpty(changeState)) { + ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING) + return@setOnClickListener + } + if (checkImageAdapter!!.count != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING) + return@setOnClickListener + } + caseHandlePresenter.onReadyRetrofitRequest( + data.processId, id, data.caseState.toString(), + changeState, remarks, StringHelper.reformatURL(mediaList) + ) + } + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (resultCode == RESULT_OK) { + when (requestCode) { + PictureConfig.CHOOSE_REQUEST -> { + val selectList = PictureSelector.obtainMultipleResult(data) + for (media in selectList) { + val file = File(media.compressPath) + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR) + continue + } + uploadImagePresenter.onReadyRetrofitRequest(file) + } + } + PictureConfig.REQUEST_CAMERA -> { + val localMedia = PictureSelector.obtainMultipleResult(data)[0] + uploadImagePresenter.onReadyRetrofitRequest(File(localMedia.compressPath)) + } + } + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = + if (data.communityName == "") "无更详细社区信息" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + /** + * 图片 + */ + //核实照片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + + //处理照片 + val processImages = data.fileIdProcess + if (!TextUtils.isEmpty(processImages)) { + val urls = ArrayList() + val split = processImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + caseHandleResultView.text = + if (data.processRemarks == "") "无处理意见" else data.processRemarks + //TODO 服务器返回数据缺少此字段,暂时注掉 +// caseHandleTimeView.setText(); + } + } + + override fun showProgress() { + submitDialog!!.show() + } + + override fun hideProgress() { + submitDialog!!.dismiss() + } + + override fun obtainCaseHandleResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + ToastHelper.showToast("案卷核查提交成功", ToastHelper.SUCCESS) + //案卷办完以后通知待办和已办刷新数据 + CaseCheckFragment.sendEmptyMessage(Constant.CASE_CHECK_OK) + CaseCheckedFragment.sendEmptyMessage(Constant.CASE_CHECK_OK) + finish() + } else { + ToastHelper.showToast("案卷核查提交失败,请检查", ToastHelper.ERROR) + } + } + + override fun obtainUploadAudioResult(resultBean: ActionResultBean) {} + override fun obtainUploadImageResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + PictureFileUtils.deleteAllCacheDirFile(this) + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + val sumItemCount = checkImageAdapter!!.count + 1 //每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + val url = resultBean.data + mediaList.add(url) + realPaths.add(StringHelper.appendCompleteURL(url)) + if (realPaths.size == 2) { + addImageView.visibility = View.GONE + } + checkImageAdapter!!.setImageList(realPaths) + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, realPaths) + } + //删除按钮点击事件 + checkImageAdapter!!.isDeleteVisible(true) + checkImageAdapter!!.setOnDeleteClickListener { position -> + mediaList.removeAt(position) + realPaths.removeAt(position) + checkImageAdapter!!.setImageList(realPaths) + if (realPaths.size != 2) { + addImageView.visibility = View.VISIBLE + } + } + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING) + } + } + } + + override fun obtainUploadVideoResult(resultBean: ActionResultBean) {} + + override fun obtainNextNodeData(resultBean: CaseNextNodeBean) { + if (resultBean.isSuccess) { + val dataBeans = resultBean.data + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("核实情况") + for (dataBean in dataBeans) { + sheetBuilder.addItem(dataBean.nextOperation) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + val dataBean = dataBeans[position] + caseCheckStatusView.text = dataBean.nextOperation + caseCheckOptView.text = dataBean.nextOperation + changeState = dataBean.nextState.toString() + }.build().show() + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR) + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("上传失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + uploadImagePresenter.disposeRetrofitRequest() + caseNextNodePresenter.disposeRetrofitRequest() + caseHandlePresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java deleted file mode 100644 index 996401c..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ /dev/null @@ -1,460 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.EditText; -import android.widget.GridView; -import android.widget.ImageView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.annotation.Nullable; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.bean.CaseNextNodeBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl; -import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl; -import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailHandleView; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.mvp.view.ICaseNextNodeView; -import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.ui.fragment.handle.CaseHandledFragment; -import com.casic.dcms.ui.fragment.handle.CaseTodoFragment; -import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; -import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.luck.picture.lib.PictureSelector; -import com.luck.picture.lib.config.PictureConfig; -import com.luck.picture.lib.entity.LocalMedia; -import com.luck.picture.lib.tools.PictureFileUtils; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.dialog.QMUIDialog; -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandleDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView, ICaseNextNodeView, IUploadFileView, ICaseDetailHandleView { - - private Context context = this; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.caseHandleResultView) - TextView caseHandleResultView; - @BindView(R.id.imageLayout) - RelativeLayout imageLayout; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.addImageView) - ImageView addImageView; - @BindView(R.id.reasonLayout) - RelativeLayout reasonLayout; - @BindView(R.id.caseReasonView) - EditText caseReasonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private String title; - private String id; - private String changeState; - private String caseReason; - private String approvalResult; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private ArrayList realPaths = new ArrayList<>();//真实图片路径 - private List mediaList = new ArrayList<>();//上传到服务器的数据集 - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseNextNodePresenterImpl caseNextNodePresenter; - private UploadImagePresenterImpl uploadImagePresenter; - private CaseHandlePresenterImpl caseHandlePresenter; - private QMUITipDialog submitDialog; - private ImageGridViewAdapter handleImageAdapter;//处理图片的adapter - - @Override - public int initLayoutView() { - return R.layout.activity_case_handle_detail; - } - - @Override - protected String setTitleName() { - return title; - } - - @Override - public void initData() { - title = getIntent().getStringExtra("title"); - id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - - caseNextNodePresenter = new CaseNextNodePresenterImpl(this); - uploadImagePresenter = new UploadImagePresenterImpl(this); - caseHandlePresenter = new CaseHandlePresenterImpl(this); - submitDialog = new QMUITipDialog.Builder(this) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord("处理中,请稍后") - .create(); - handleImageAdapter = new ImageGridViewAdapter(this); - handleGridView.setAdapter(handleImageAdapter); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - caseHandleView.setText(data.getCaseStateName().equals("") ? "无处理意见" : data.getCaseStateName()); - - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - } - } - - @Override - public void obtainNextNodeData(CaseNextNodeBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("处理结果"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - String nextOperation = dataBean.getNextOperation(); - caseHandleResultView.setText(nextOperation); - if (nextOperation.equals("处理完成")) { - imageLayout.setVisibility(View.VISIBLE); - reasonLayout.setVisibility(View.GONE); - } else { - imageLayout.setVisibility(View.GONE); - reasonLayout.setVisibility(View.VISIBLE); - } - changeState = String.valueOf(dataBean.getNextState()); - approvalResult = dataBean.getApprovalResult(); - } - }).build().show(); - } else { - ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); - } - } - - @OnClick({R.id.locationMapView, R.id.caseHandleResultLayout, R.id.addImageView, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.caseHandleResultLayout: - caseNextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); - break; - case R.id.addImageView: - new QMUIDialog.MenuDialogBuilder(this) - .addItem("相册中选取", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.selectPicture(CaseHandleDetailActivity.this); - } - }) - .addItem("相机拍照", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.takePicture(CaseHandleDetailActivity.this); - } - }) - .create().show(); - break; - case R.id.submitButton: - submitCase();//案卷提交 - break; - default: - break; - } - } - - private void submitCase() { - String handleResult = caseHandleResultView.getText().toString(); - if (handleResult.equals("")) { - ToastHelper.showToast("还未选择处理结果", ToastHelper.WARING); - return; - } - if (handleResult.equals("处理完成")) { - //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getCount() != 2) { - ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); - return; - } - } - if (handleResult.equals("申请延期") || handleResult.equals("申请调整")) { - caseReason = caseReasonView.getText().toString(); - if (TextUtils.isEmpty(caseReason)) { - ToastHelper.showToast("延期/调整的原因必须填写", ToastHelper.WARING); - return; - } - } - caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), - changeState, caseReason, StringHelper.reformatURL(mediaList), approvalResult); - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - switch (requestCode) { - case PictureConfig.CHOOSE_REQUEST: - List selectList = PictureSelector.obtainMultipleResult(data); - for (LocalMedia media : selectList) { - File file = new File(media.getCompressPath()); - if (file.length() <= Constant.IMAGE_MINUS_SIZE) { - ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); - continue; - } - uploadImagePresenter.onReadyRetrofitRequest(file); - } - break; - case PictureConfig.REQUEST_CAMERA: - LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); - break; - default: - break; - } - } - } - - @Override - public void showProgress() { - submitDialog.show(); - } - - @Override - public void hideProgress() { - submitDialog.dismiss(); - } - - @Override - public void obtainUploadAudioResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainUploadImageResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - PictureFileUtils.deleteAllCacheDirFile(this); - /** - * 系统路径static拼接图片返回路径 - * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg - */ - //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg - int sumItemCount = handleImageAdapter.getCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 2) { - String url = resultBean.getData(); - mediaList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - if (realPaths.size() == 2) { - addImageView.setVisibility(View.GONE); - } - handleImageAdapter.setImageList(realPaths); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, realPaths); - } - }); - //删除按钮点击事件 - handleImageAdapter.isDeleteVisible(true); - handleImageAdapter.setOnDeleteClickListener(new ImageGridViewAdapter.OnDeleteItemClickListener() { - @Override - public void onClick(int position) { - mediaList.remove(position); - realPaths.remove(position); - handleImageAdapter.setImageList(realPaths); - if (realPaths.size() != 2) { - addImageView.setVisibility(View.VISIBLE); - } - } - }); - } else { - ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); - } - } - } - - @Override - public void obtainUploadVideoResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - public void obtainCaseHandleResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); - switch (title) { - case "超时案卷": - OvertimeCaseFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - break; - case "紧急案卷": - UrgentCaseFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - break; - case "待办案卷": - CaseTodoFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - break; - } - finish(); - } else { - ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (caseNextNodePresenter != null) { - caseNextNodePresenter.disposeRetrofitRequest(); - } - if (uploadImagePresenter != null) { - uploadImagePresenter.disposeRetrofitRequest(); - } - if (caseHandlePresenter != null) { - caseHandlePresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.kt new file mode 100644 index 0000000..c17a12d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.kt @@ -0,0 +1,341 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.bean.CaseNextNodeBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl +import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailHandleView +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.mvp.view.ICaseNextNodeView +import com.casic.dcms.mvp.view.IUploadFileView +import com.casic.dcms.ui.fragment.handle.CaseHandledFragment +import com.casic.dcms.ui.fragment.handle.CaseTodoFragment +import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment +import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment +import com.casic.dcms.utils.* +import com.luck.picture.lib.PictureSelector +import com.luck.picture.lib.config.PictureConfig +import com.luck.picture.lib.tools.PictureFileUtils +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import com.qmuiteam.qmui.widget.dialog.QMUIDialog.MenuDialogBuilder +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog +import kotlinx.android.synthetic.main.activity_case_handle_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import java.io.File +import java.util.* + +class CaseHandleDetailActivity : BaseCaseActivity(), ICaseDetailView, ICaseNextNodeView, + IUploadFileView, ICaseDetailHandleView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private lateinit var caseNextNodePresenter: CaseNextNodePresenterImpl + private lateinit var uploadImagePresenter: UploadImagePresenterImpl + private lateinit var caseHandlePresenter: CaseHandlePresenterImpl + private lateinit var title: String + private lateinit var id: String + private lateinit var changeState: String + private lateinit var caseReason: String + private lateinit var approvalResult: String + private var submitDialog: QMUITipDialog? = null + private var handleImageAdapter: ImageGridViewAdapter? = null + private var data = CaseDetailBean.DataBean() + private val realPaths = ArrayList() //真实图片路径 + private val mediaList: MutableList = ArrayList() //上传到服务器的数据集 + + override fun initLayoutView(): Int = R.layout.activity_case_handle_detail + + override fun setTitleName(): String { + return title + } + + override fun initData() { + title = intent.getStringExtra("title")!! + id = intent.getStringExtra("id")!! + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + caseNextNodePresenter = CaseNextNodePresenterImpl(this) + uploadImagePresenter = UploadImagePresenterImpl(this) + caseHandlePresenter = CaseHandlePresenterImpl(this) + submitDialog = QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create() + handleImageAdapter = ImageGridViewAdapter(this) + handleGridView.adapter = handleImageAdapter + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + + caseHandleResultLayout.setOnClickListener { + caseNextNodePresenter.onReadyRetrofitRequest(data.caseState.toString()) + } + + addImageView.setOnClickListener { + MenuDialogBuilder(this) + .addItem("相册中选取") { dialog, which -> + dialog.dismiss() + OtherUtils.selectPicture(this@CaseHandleDetailActivity) + } + .addItem("相机拍照") { dialog, which -> + dialog.dismiss() + OtherUtils.takePicture(this@CaseHandleDetailActivity) + } + .create().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + val handleResult: String = caseHandleResultView.text.toString() + if (handleResult == "") { + ToastHelper.showToast("还未选择处理结果", ToastHelper.WARING) + return@setOnClickListener + } + if (handleResult == "处理完成") { + //选择处理完成时,处理图片必传。至少一张,最多两张 + if (handleImageAdapter!!.count != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING) + return@setOnClickListener + } + } + if (handleResult == "申请延期" || handleResult == "申请调整") { + caseReason = caseReasonView.text.toString() + if (TextUtils.isEmpty(caseReason)) { + ToastHelper.showToast("延期/调整的原因必须填写", ToastHelper.WARING) + return@setOnClickListener + } + } + caseHandlePresenter.onReadyRetrofitRequest( + data.processId, id, data.caseState.toString(), + changeState, caseReason, StringHelper.reformatURL(mediaList), approvalResult + ) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = + if (data.communityName == "") "无更详细社区信息" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + caseHandleView.text = if (data.caseStateName == "") "无处理意见" else data.caseStateName + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + } + } + + override fun obtainNextNodeData(resultBean: CaseNextNodeBean) { + if (resultBean.isSuccess) { + val dataBeans = resultBean.data + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("处理结果") + for (dataBean in dataBeans) { + sheetBuilder.addItem(dataBean.nextOperation) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + val dataBean = dataBeans[position] + val nextOperation = dataBean.nextOperation + caseHandleResultView.text = nextOperation + if (nextOperation == "处理完成") { + imageLayout.visibility = View.VISIBLE + reasonLayout.visibility = View.GONE + } else { + imageLayout.visibility = View.GONE + reasonLayout.visibility = View.VISIBLE + } + changeState = dataBean.nextState.toString() + approvalResult = dataBean.approvalResult + }.build().show() + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR) + } + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (resultCode == RESULT_OK) { + when (requestCode) { + PictureConfig.CHOOSE_REQUEST -> { + val selectList = PictureSelector.obtainMultipleResult(data) + for (media in selectList) { + val file = File(media.compressPath) + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR) + continue + } + uploadImagePresenter.onReadyRetrofitRequest(file) + } + } + PictureConfig.REQUEST_CAMERA -> { + val localMedia = PictureSelector.obtainMultipleResult(data)[0] + uploadImagePresenter.onReadyRetrofitRequest(File(localMedia.compressPath)) + } + } + } + } + + override fun showProgress() { + submitDialog!!.show() + } + + override fun hideProgress() { + submitDialog!!.dismiss() + } + + override fun obtainUploadAudioResult(resultBean: ActionResultBean) {} + override fun obtainUploadImageResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + PictureFileUtils.deleteAllCacheDirFile(this) + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + val sumItemCount = handleImageAdapter!!.count + 1 //每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + val url = resultBean.data + mediaList.add(url) + realPaths.add(StringHelper.appendCompleteURL(url)) + if (realPaths.size == 2) { + addImageView.visibility = View.GONE + } + handleImageAdapter!!.setImageList(realPaths) + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, realPaths) + } + //删除按钮点击事件 + handleImageAdapter!!.isDeleteVisible(true) + handleImageAdapter!!.setOnDeleteClickListener { position -> + mediaList.removeAt(position) + realPaths.removeAt(position) + handleImageAdapter!!.setImageList(realPaths) + if (realPaths.size != 2) { + addImageView.visibility = View.VISIBLE + } + } + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING) + } + } + } + + override fun obtainUploadVideoResult(resultBean: ActionResultBean) {} + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun obtainCaseHandleResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS) + when (title) { + "超时案卷" -> { + OvertimeCaseFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + } + "紧急案卷" -> { + UrgentCaseFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + } + "待办案卷" -> { + CaseTodoFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + } + } + finish() + } else { + ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR) + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + caseNextNodePresenter.disposeRetrofitRequest() + uploadImagePresenter.disposeRetrofitRequest() + caseHandlePresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java deleted file mode 100644 index 8b08041..0000000 --- a/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java +++ /dev/null @@ -1,289 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.EditText; -import android.widget.GridView; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.mvp.presenter.ShopChangePresenterImpl; -import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; -import com.casic.dcms.mvp.view.IShopInfoChangeView; -import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.luck.picture.lib.PictureSelector; -import com.luck.picture.lib.config.PictureConfig; -import com.luck.picture.lib.entity.LocalMedia; -import com.luck.picture.lib.tools.PictureFileUtils; -import com.qmuiteam.qmui.widget.dialog.QMUIDialog; -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; - -public class ChangeShopInfoActivity extends BaseCaseActivity implements View.OnClickListener, IUploadFileView, - IShopInfoChangeView { - - private static final String TAG = "ChangeShopInfoActivity"; - private Context context = this; - @BindView(R.id.shopView) - TextView shopView; - @BindView(R.id.communityNameView) - TextView communityNameView; - @BindView(R.id.shopLocationView) - EditText shopLocationView; - @BindView(R.id.shopKeeperView) - EditText shopKeeperView; - @BindView(R.id.phoneNumberView) - EditText phoneNumberView; - @BindView(R.id.selectedGridViewView) - GridView selectedGridViewView; - @BindView(R.id.addImageView) - ImageView addImageView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private UploadImagePresenterImpl uploadImagePresenter; - private ShopChangePresenterImpl shopChangePresenter; - private QMUITipDialog submitDialog; - private ImageGridViewAdapter imageAdapter; - private String merchantId;//商户id - private String merchantName; - private ArrayList realPaths = new ArrayList<>();//真实图片路径 - private List mediaList = new ArrayList<>();//上传到服务器的数据集 - - @Override - protected String setTitleName() { - return "商铺变更"; - } - - @Override - public int initLayoutView() { - return R.layout.activity_change_shop; - } - - @Override - public void initData() { - uploadImagePresenter = new UploadImagePresenterImpl(this); - shopChangePresenter = new ShopChangePresenterImpl(this); - submitDialog = new QMUITipDialog.Builder(this) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord("处理中,请稍后") - .create(); - imageAdapter = new ImageGridViewAdapter(this); - selectedGridViewView.setAdapter(imageAdapter); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @OnClick({R.id.shopLayout, R.id.addImageView, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.shopLayout: - Intent intent = new Intent(this, ArcGISMapActivity.class); - intent.putExtra("type", "商铺变更"); - startActivityForResult(intent, Constant.REQUEST_MAP_CODE); - break; - case R.id.addImageView: - new QMUIDialog.MenuDialogBuilder(this) - .addItem("相册中选取", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.selectPicture(ChangeShopInfoActivity.this); - } - }) - .addItem("相机拍照", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.takePicture(ChangeShopInfoActivity.this); - } - }) - .setCanceledOnTouchOutside(false) - .create().show(); - break; - case R.id.submitButton: - submitCase(); - break; - } - } - - private void submitCase() { - String phoneNumber = phoneNumberView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(phoneNumber)) { - ToastHelper.showToast("电话号码还未填写", ToastHelper.WARING); - return; - } - if (StringHelper.isPhoneNumber(phoneNumber)) { - String shopLocation = shopLocationView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(shopLocation)) { - ToastHelper.showToast("店铺地址还未填写", ToastHelper.WARING); - return; - } - String shopKeeper = shopKeeperView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(shopKeeper)) { - ToastHelper.showToast("店主名还未填写", ToastHelper.WARING); - return; - } - if (imageAdapter.getCount() != 2) { - ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING); - return; - } - shopChangePresenter.onReadyRetrofitRequest(merchantId, merchantName, shopKeeper, phoneNumber, StringHelper.reformatURL(mediaList)); - } else { - ToastHelper.showToast("电话号码格式不对", ToastHelper.WARING); - } - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - switch (requestCode) { - case Constant.REQUEST_MAP_CODE: - if (data == null) { - return; - } - String community = data.getStringExtra("community"); - merchantName = data.getStringExtra("shopName"); - merchantId = data.getStringExtra("shopID"); - - communityNameView.setText(community); - shopView.setText(merchantName); - shopView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - break; - case PictureConfig.CHOOSE_REQUEST: - List selectList = PictureSelector.obtainMultipleResult(data); - for (LocalMedia media : selectList) { - File file = new File(media.getCompressPath()); - if (file.length() <= Constant.IMAGE_MINUS_SIZE) { - ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); - continue; - } - uploadImagePresenter.onReadyRetrofitRequest(file); - } - break; - case PictureConfig.REQUEST_CAMERA: - LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); - break; - default: - break; - } - } - } - - @Override - public void showProgress() { - submitDialog.show(); - } - - @Override - public void hideProgress() { - submitDialog.dismiss(); - } - - @Override - public void obtainChangeResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("提交成功", ToastHelper.SUCCESS); - finish(); - } else { - ToastHelper.showToast("提交失败,请重试", ToastHelper.ERROR); - } - } - - @Override - public void obtainUploadAudioResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainUploadImageResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - PictureFileUtils.deleteAllCacheDirFile(this); - /** - * 系统路径static拼接图片返回路径 - * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg - */ - //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg - int sumItemCount = imageAdapter.getCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 2) { - String url = resultBean.getData(); - mediaList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - if (realPaths.size() == 2) { - addImageView.setVisibility(View.GONE); - } - imageAdapter.setImageList(realPaths); - //九宫格点击事件 - selectedGridViewView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, realPaths); - } - }); - //删除按钮点击事件 - imageAdapter.setOnDeleteClickListener(new ImageGridViewAdapter.OnDeleteItemClickListener() { - @Override - public void onClick(int position) { - mediaList.remove(position); - realPaths.remove(position); - imageAdapter.setImageList(realPaths); - if (realPaths.size() != 2) { - addImageView.setVisibility(View.VISIBLE); - } - } - }); - } else { - ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); - } - } - } - - @Override - public void obtainUploadVideoResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (uploadImagePresenter != null) { - uploadImagePresenter.disposeRetrofitRequest(); - } - if (shopChangePresenter != null) { - shopChangePresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.kt b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.kt new file mode 100644 index 0000000..4a9e91c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.kt @@ -0,0 +1,217 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.ShopChangePresenterImpl +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl +import com.casic.dcms.mvp.view.IShopInfoChangeView +import com.casic.dcms.mvp.view.IUploadFileView +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.luck.picture.lib.PictureSelector +import com.luck.picture.lib.config.PictureConfig +import com.luck.picture.lib.tools.PictureFileUtils +import com.qmuiteam.qmui.widget.dialog.QMUIDialog.MenuDialogBuilder +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog +import kotlinx.android.synthetic.main.activity_change_shop.* +import java.io.File +import java.util.* + +class ChangeShopInfoActivity : BaseCaseActivity(), IUploadFileView, IShopInfoChangeView { + + private lateinit var uploadImagePresenter: UploadImagePresenterImpl + private lateinit var shopChangePresenter: ShopChangePresenterImpl + private lateinit var merchantId: String //商户id + private lateinit var merchantName: String + private var submitDialog: QMUITipDialog? = null + private var imageAdapter: ImageGridViewAdapter? = null + private val realPaths = ArrayList() //真实图片路径 + private val mediaList: MutableList = ArrayList() //上传到服务器的数据集 + + override fun setTitleName(): String { + return "商铺变更" + } + + override fun initLayoutView(): Int { + return R.layout.activity_change_shop + } + + override fun initData() { + uploadImagePresenter = UploadImagePresenterImpl(this) + shopChangePresenter = ShopChangePresenterImpl(this) + submitDialog = QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create() + imageAdapter = ImageGridViewAdapter(this) + selectedGridViewView.adapter = imageAdapter + } + + override fun initEvent() { + shopLayout.setOnClickListener { + val intent = Intent(this, ArcGISMapActivity::class.java) + intent.putExtra("type", "商铺变更") + startActivityForResult(intent, Constant.REQUEST_MAP_CODE) + } + + addImageView.setOnClickListener { + MenuDialogBuilder(this) + .addItem("相册中选取") { dialog, which -> + dialog.dismiss() + OtherUtils.selectPicture(this) + } + .addItem("相机拍照") { dialog, which -> + dialog.dismiss() + OtherUtils.takePicture(this) + } + .setCanceledOnTouchOutside(false) + .create().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + val phoneNumber: String = phoneNumberView.text.toString().trim().replace(" ", "") + if (TextUtils.isEmpty(phoneNumber)) { + ToastHelper.showToast("电话号码还未填写", ToastHelper.WARING) + return@setOnClickListener + } + if (StringHelper.isPhoneNumber(phoneNumber)) { + val shopLocation: String = + shopLocationView.text.toString().trim().replace(" ", "") + if (TextUtils.isEmpty(shopLocation)) { + ToastHelper.showToast("店铺地址还未填写", ToastHelper.WARING) + return@setOnClickListener + } + val shopKeeper: String = shopKeeperView.text.toString().trim().replace(" ", "") + if (TextUtils.isEmpty(shopKeeper)) { + ToastHelper.showToast("店主名还未填写", ToastHelper.WARING) + return@setOnClickListener + } + if (imageAdapter!!.count != 2) { + ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING) + return@setOnClickListener + } + shopChangePresenter.onReadyRetrofitRequest( + merchantId, + merchantName, + shopKeeper, + phoneNumber, + StringHelper.reformatURL(mediaList) + ) + } else { + ToastHelper.showToast("电话号码格式不对", ToastHelper.WARING) + } + } + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (resultCode == RESULT_OK) { + when (requestCode) { + Constant.REQUEST_MAP_CODE -> { + if (data == null) { + return + } + val community = data.getStringExtra("community") + merchantName = data.getStringExtra("shopName")!! + merchantId = data.getStringExtra("shopID")!! + communityNameView.text = community + shopView.text = merchantName + shopView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + } + PictureConfig.CHOOSE_REQUEST -> { + val selectList = PictureSelector.obtainMultipleResult(data) + for (media in selectList) { + val file = File(media.compressPath) + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR) + continue + } + uploadImagePresenter.onReadyRetrofitRequest(file) + } + } + PictureConfig.REQUEST_CAMERA -> { + val localMedia = PictureSelector.obtainMultipleResult(data)[0] + uploadImagePresenter.onReadyRetrofitRequest(File(localMedia.compressPath)) + } + } + } + } + + override fun showProgress() { + submitDialog!!.show() + } + + override fun hideProgress() { + submitDialog!!.dismiss() + } + + override fun obtainChangeResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + ToastHelper.showToast("提交成功", ToastHelper.SUCCESS) + finish() + } else { + ToastHelper.showToast("提交失败,请重试", ToastHelper.ERROR) + } + } + + override fun obtainUploadAudioResult(resultBean: ActionResultBean) {} + + override fun obtainUploadImageResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + PictureFileUtils.deleteAllCacheDirFile(this) + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + val sumItemCount = imageAdapter!!.count + 1 //每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + val url = resultBean.data + mediaList.add(url) + realPaths.add(StringHelper.appendCompleteURL(url)) + if (realPaths.size == 2) { + addImageView.visibility = View.GONE + } + imageAdapter!!.setImageList(realPaths) + //九宫格点击事件 + selectedGridViewView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, realPaths) + } + //删除按钮点击事件 + imageAdapter!!.setOnDeleteClickListener { position -> + mediaList.removeAt(position) + realPaths.removeAt(position) + imageAdapter!!.setImageList(realPaths) + if (realPaths.size != 2) { + addImageView.visibility = View.VISIBLE + } + } + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING) + } + } + } + + override fun obtainUploadVideoResult(resultBean: ActionResultBean) {} + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + uploadImagePresenter.disposeRetrofitRequest() + shopChangePresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt index d2425dc..9e86954 100644 --- a/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt +++ b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt @@ -79,20 +79,27 @@ } changeServerConfigButton!!.setChangeAlphaWhenPress(true) changeServerConfigButton.setOnClickListener { - InputDialog.Builder() - .setContext(this) - .setTitle("修改服务器地址和端口") - .setOnDialogClickListener(object : InputDialog.OnDialogClickListener { - override fun onConfirmClick(serverValue: String, portValue: String) { - if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { - val serverConfig = "http:$serverValue:$portValue" - SaveKeyValues.putValue(Constant.IP_KEY, serverConfig) - ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS) - } + val defaultValue = SaveKeyValues.getValue( + Constant.IP_KEY, + "http://111.198.10.15:11409" + ) as String + InputDialog.Builder().setContext(this) + .setTitle("请输入后台服务器地址") + .setDefaultValue(defaultValue) + .setHintText("请输入服务器地址") + .setNegativeButton("取消") + .setPositiveButton("保存") + .setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener { + override fun onConfirmClick(input: String) { + SaveKeyValues.putValue(Constant.IP_KEY, input) + ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS) } - override fun onCancelClick() {} - }).build().show() + override fun onCancelClick() { + + } + }) + .build().show() } } diff --git a/app/src/main/java/com/casic/dcms/ui/WellListActivity.java b/app/src/main/java/com/casic/dcms/ui/WellListActivity.java index f9ab8ff..b23edcc 100644 --- a/app/src/main/java/com/casic/dcms/ui/WellListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WellListActivity.java @@ -157,7 +157,7 @@ @Override public void onClick(int position) { String bfzt = activity.dataBeans.get(position).getBfzt(); - String bfztName = ""; + String bfztName; if (bfzt.equals("0")) { bfztName = "布防"; bfzt = "1"; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java deleted file mode 100644 index a5f468d..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ /dev/null @@ -1,458 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.bean.CaseNextNodeBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl; -import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl; -import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailHandleView; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.mvp.view.ICaseNextNodeView; -import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.ui.fragment.check.CaseCheckFragment; -import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.luck.picture.lib.PictureSelector; -import com.luck.picture.lib.config.PictureConfig; -import com.luck.picture.lib.entity.LocalMedia; -import com.luck.picture.lib.tools.PictureFileUtils; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.dialog.QMUIDialog; -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, - IUploadFileView, ICaseNextNodeView, ICaseDetailHandleView { - - private Context context = this; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.caseHandleResultView) - TextView caseHandleResultView; - @BindView(R.id.caseHandleTimeView) - TextView caseHandleTimeView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.addImageView) - ImageView addImageView; - @BindView(R.id.caseCheckOptView) - TextView caseCheckOptView; - @BindView(R.id.caseCheckStatusView) - TextView caseCheckStatusView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private CaseDetailPresenterImpl caseDetailPresenter; - private UploadImagePresenterImpl uploadImagePresenter; - private CaseNextNodePresenterImpl caseNextNodePresenter; - private CaseHandlePresenterImpl caseHandlePresenter; - - private String id; - private String changeState; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private ArrayList realPaths = new ArrayList<>();//真实图片路径 - private List mediaList = new ArrayList<>();//上传到服务器的数据集 - private QMUITipDialog submitDialog; - private ImageGridViewAdapter checkImageAdapter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_check_detail; - } - - @Override - protected String setTitleName() { - return "案卷核查"; - } - - @Override - public void initData() { - id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - - uploadImagePresenter = new UploadImagePresenterImpl(this); - caseNextNodePresenter = new CaseNextNodePresenterImpl(this); - caseHandlePresenter = new CaseHandlePresenterImpl(this); - submitDialog = new QMUITipDialog.Builder(this) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord("处理中,请稍后") - .create(); - checkImageAdapter = new ImageGridViewAdapter(this); - checkGridView.setAdapter(checkImageAdapter); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.addImageView: - new QMUIDialog.MenuDialogBuilder(this) - .addItem("相册中选取", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.selectPicture(CaseCheckDetailActivity.this); - } - }) - .addItem("相机拍照", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.takePicture(CaseCheckDetailActivity.this); - } - }) - .create().show(); - break; - case R.id.caseCheckLayout: - caseNextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); - break; - case R.id.submitButton: - submitCase();//案卷提交 - break; - default: - break; - } - } - - private void submitCase() { - String remarks = caseCheckOptView.getText().toString(); - if (TextUtils.isEmpty(remarks)) { - ToastHelper.showToast("核查意见不能为空", ToastHelper.WARING); - return; - } - if (TextUtils.isEmpty(changeState)) { - ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); - return; - } - if (checkImageAdapter.getCount() != 2) { - ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); - return; - } - caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), - changeState, remarks, StringHelper.reformatURL(mediaList)); - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - switch (requestCode) { - case PictureConfig.CHOOSE_REQUEST: - List selectList = PictureSelector.obtainMultipleResult(data); - for (LocalMedia media : selectList) { - File file = new File(media.getCompressPath()); - if (file.length() <= Constant.IMAGE_MINUS_SIZE) { - ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); - continue; - } - uploadImagePresenter.onReadyRetrofitRequest(file); - } - break; - case PictureConfig.REQUEST_CAMERA: - LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); - break; - default: - break; - } - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - - /** - * 图片 - * */ - //核实照片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - - //处理照片 - String processImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(processImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = processImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - caseHandleResultView.setText(data.getProcessRemarks().equals("") ? "无处理意见" : data.getProcessRemarks()); - //TODO 服务器返回数据缺少此字段,暂时注掉 -// caseHandleTimeView.setText(); - } - } - - @Override - public void showProgress() { - submitDialog.show(); - } - - @Override - public void hideProgress() { - submitDialog.dismiss(); - } - - @Override - public void obtainCaseHandleResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("案卷核查提交成功", ToastHelper.SUCCESS); - //案卷办完以后通知待办和已办刷新数据 - CaseCheckFragment.sendEmptyMessage(Constant.CASE_CHECK_OK); - CaseCheckedFragment.sendEmptyMessage(Constant.CASE_CHECK_OK); - finish(); - } else { - ToastHelper.showToast("案卷核查提交失败,请检查", ToastHelper.ERROR); - } - } - - @Override - public void obtainUploadAudioResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainUploadImageResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - PictureFileUtils.deleteAllCacheDirFile(this); - /** - * 系统路径static拼接图片返回路径 - * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg - */ - //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg - int sumItemCount = checkImageAdapter.getCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 2) { - String url = resultBean.getData(); - mediaList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - if (realPaths.size() == 2) { - addImageView.setVisibility(View.GONE); - } - checkImageAdapter.setImageList(realPaths); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, realPaths); - } - }); - //删除按钮点击事件 - checkImageAdapter.isDeleteVisible(true); - checkImageAdapter.setOnDeleteClickListener(new ImageGridViewAdapter.OnDeleteItemClickListener() { - @Override - public void onClick(int position) { - mediaList.remove(position); - realPaths.remove(position); - checkImageAdapter.setImageList(realPaths); - if (realPaths.size() != 2) { - addImageView.setVisibility(View.VISIBLE); - } - } - }); - } else { - ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); - } - } - } - - @Override - public void obtainUploadVideoResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainNextNodeData(CaseNextNodeBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("核实情况"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - caseCheckStatusView.setText(dataBean.getNextOperation()); - caseCheckOptView.setText(dataBean.getNextOperation()); - changeState = String.valueOf(dataBean.getNextState()); - } - }).build().show(); - } else { - ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("上传失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (uploadImagePresenter != null) { - uploadImagePresenter.disposeRetrofitRequest(); - } - if (caseNextNodePresenter != null) { - caseNextNodePresenter.disposeRetrofitRequest(); - } - if (caseHandlePresenter != null) { - caseHandlePresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.kt new file mode 100644 index 0000000..c7d9d48 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.kt @@ -0,0 +1,340 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.bean.CaseNextNodeBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl +import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailHandleView +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.mvp.view.ICaseNextNodeView +import com.casic.dcms.mvp.view.IUploadFileView +import com.casic.dcms.ui.fragment.check.CaseCheckFragment +import com.casic.dcms.ui.fragment.check.CaseCheckedFragment +import com.casic.dcms.utils.* +import com.luck.picture.lib.PictureSelector +import com.luck.picture.lib.config.PictureConfig +import com.luck.picture.lib.tools.PictureFileUtils +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import com.qmuiteam.qmui.widget.dialog.QMUIDialog.MenuDialogBuilder +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog +import kotlinx.android.synthetic.main.activity_case_check_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import java.io.File +import java.util.* + +class CaseCheckDetailActivity : BaseCaseActivity(), ICaseDetailView, + IUploadFileView, ICaseNextNodeView, ICaseDetailHandleView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private lateinit var uploadImagePresenter: UploadImagePresenterImpl + private lateinit var caseNextNodePresenter: CaseNextNodePresenterImpl + private lateinit var caseHandlePresenter: CaseHandlePresenterImpl + private lateinit var id: String + private lateinit var changeState: String + private var submitDialog: QMUITipDialog? = null + private var checkImageAdapter: ImageGridViewAdapter? = null + private var data = CaseDetailBean.DataBean() + private val realPaths = ArrayList() //真实图片路径 + private val mediaList: MutableList = ArrayList() //上传到服务器的数据集 + + override fun initLayoutView(): Int = R.layout.activity_case_check_detail + + override fun setTitleName(): String { + return "案卷核查" + } + + override fun initData() { + id = intent.getStringExtra("id")!! + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + uploadImagePresenter = UploadImagePresenterImpl(this) + caseNextNodePresenter = CaseNextNodePresenterImpl(this) + caseHandlePresenter = CaseHandlePresenterImpl(this) + submitDialog = QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create() + checkImageAdapter = ImageGridViewAdapter(this) + checkGridView.adapter = checkImageAdapter + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + + addImageView.setOnClickListener { + MenuDialogBuilder(this) + .addItem("相册中选取") { dialog, which -> + dialog.dismiss() + OtherUtils.selectPicture(this@CaseCheckDetailActivity) + } + .addItem("相机拍照") { dialog, which -> + dialog.dismiss() + OtherUtils.takePicture(this@CaseCheckDetailActivity) + } + .create().show() + } + + caseCheckLayout.setOnClickListener { + caseNextNodePresenter.onReadyRetrofitRequest(data.caseState.toString()) + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + //案卷提交 + val remarks: String = caseCheckOptView.text.toString() + if (TextUtils.isEmpty(remarks)) { + ToastHelper.showToast("核查意见不能为空", ToastHelper.WARING) + return@setOnClickListener + } + if (TextUtils.isEmpty(changeState)) { + ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING) + return@setOnClickListener + } + if (checkImageAdapter!!.count != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING) + return@setOnClickListener + } + caseHandlePresenter.onReadyRetrofitRequest( + data.processId, id, data.caseState.toString(), + changeState, remarks, StringHelper.reformatURL(mediaList) + ) + } + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (resultCode == RESULT_OK) { + when (requestCode) { + PictureConfig.CHOOSE_REQUEST -> { + val selectList = PictureSelector.obtainMultipleResult(data) + for (media in selectList) { + val file = File(media.compressPath) + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR) + continue + } + uploadImagePresenter.onReadyRetrofitRequest(file) + } + } + PictureConfig.REQUEST_CAMERA -> { + val localMedia = PictureSelector.obtainMultipleResult(data)[0] + uploadImagePresenter.onReadyRetrofitRequest(File(localMedia.compressPath)) + } + } + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = + if (data.communityName == "") "无更详细社区信息" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + /** + * 图片 + */ + //核实照片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + + //处理照片 + val processImages = data.fileIdProcess + if (!TextUtils.isEmpty(processImages)) { + val urls = ArrayList() + val split = processImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + caseHandleResultView.text = + if (data.processRemarks == "") "无处理意见" else data.processRemarks + //TODO 服务器返回数据缺少此字段,暂时注掉 +// caseHandleTimeView.setText(); + } + } + + override fun showProgress() { + submitDialog!!.show() + } + + override fun hideProgress() { + submitDialog!!.dismiss() + } + + override fun obtainCaseHandleResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + ToastHelper.showToast("案卷核查提交成功", ToastHelper.SUCCESS) + //案卷办完以后通知待办和已办刷新数据 + CaseCheckFragment.sendEmptyMessage(Constant.CASE_CHECK_OK) + CaseCheckedFragment.sendEmptyMessage(Constant.CASE_CHECK_OK) + finish() + } else { + ToastHelper.showToast("案卷核查提交失败,请检查", ToastHelper.ERROR) + } + } + + override fun obtainUploadAudioResult(resultBean: ActionResultBean) {} + override fun obtainUploadImageResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + PictureFileUtils.deleteAllCacheDirFile(this) + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + val sumItemCount = checkImageAdapter!!.count + 1 //每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + val url = resultBean.data + mediaList.add(url) + realPaths.add(StringHelper.appendCompleteURL(url)) + if (realPaths.size == 2) { + addImageView.visibility = View.GONE + } + checkImageAdapter!!.setImageList(realPaths) + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, realPaths) + } + //删除按钮点击事件 + checkImageAdapter!!.isDeleteVisible(true) + checkImageAdapter!!.setOnDeleteClickListener { position -> + mediaList.removeAt(position) + realPaths.removeAt(position) + checkImageAdapter!!.setImageList(realPaths) + if (realPaths.size != 2) { + addImageView.visibility = View.VISIBLE + } + } + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING) + } + } + } + + override fun obtainUploadVideoResult(resultBean: ActionResultBean) {} + + override fun obtainNextNodeData(resultBean: CaseNextNodeBean) { + if (resultBean.isSuccess) { + val dataBeans = resultBean.data + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("核实情况") + for (dataBean in dataBeans) { + sheetBuilder.addItem(dataBean.nextOperation) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + val dataBean = dataBeans[position] + caseCheckStatusView.text = dataBean.nextOperation + caseCheckOptView.text = dataBean.nextOperation + changeState = dataBean.nextState.toString() + }.build().show() + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR) + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("上传失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + uploadImagePresenter.disposeRetrofitRequest() + caseNextNodePresenter.disposeRetrofitRequest() + caseHandlePresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java deleted file mode 100644 index 996401c..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ /dev/null @@ -1,460 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.EditText; -import android.widget.GridView; -import android.widget.ImageView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.annotation.Nullable; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.bean.CaseNextNodeBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl; -import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl; -import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailHandleView; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.mvp.view.ICaseNextNodeView; -import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.ui.fragment.handle.CaseHandledFragment; -import com.casic.dcms.ui.fragment.handle.CaseTodoFragment; -import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; -import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.luck.picture.lib.PictureSelector; -import com.luck.picture.lib.config.PictureConfig; -import com.luck.picture.lib.entity.LocalMedia; -import com.luck.picture.lib.tools.PictureFileUtils; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.dialog.QMUIDialog; -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandleDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView, ICaseNextNodeView, IUploadFileView, ICaseDetailHandleView { - - private Context context = this; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.caseHandleResultView) - TextView caseHandleResultView; - @BindView(R.id.imageLayout) - RelativeLayout imageLayout; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.addImageView) - ImageView addImageView; - @BindView(R.id.reasonLayout) - RelativeLayout reasonLayout; - @BindView(R.id.caseReasonView) - EditText caseReasonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private String title; - private String id; - private String changeState; - private String caseReason; - private String approvalResult; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private ArrayList realPaths = new ArrayList<>();//真实图片路径 - private List mediaList = new ArrayList<>();//上传到服务器的数据集 - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseNextNodePresenterImpl caseNextNodePresenter; - private UploadImagePresenterImpl uploadImagePresenter; - private CaseHandlePresenterImpl caseHandlePresenter; - private QMUITipDialog submitDialog; - private ImageGridViewAdapter handleImageAdapter;//处理图片的adapter - - @Override - public int initLayoutView() { - return R.layout.activity_case_handle_detail; - } - - @Override - protected String setTitleName() { - return title; - } - - @Override - public void initData() { - title = getIntent().getStringExtra("title"); - id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - - caseNextNodePresenter = new CaseNextNodePresenterImpl(this); - uploadImagePresenter = new UploadImagePresenterImpl(this); - caseHandlePresenter = new CaseHandlePresenterImpl(this); - submitDialog = new QMUITipDialog.Builder(this) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord("处理中,请稍后") - .create(); - handleImageAdapter = new ImageGridViewAdapter(this); - handleGridView.setAdapter(handleImageAdapter); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - caseHandleView.setText(data.getCaseStateName().equals("") ? "无处理意见" : data.getCaseStateName()); - - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - } - } - - @Override - public void obtainNextNodeData(CaseNextNodeBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("处理结果"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - String nextOperation = dataBean.getNextOperation(); - caseHandleResultView.setText(nextOperation); - if (nextOperation.equals("处理完成")) { - imageLayout.setVisibility(View.VISIBLE); - reasonLayout.setVisibility(View.GONE); - } else { - imageLayout.setVisibility(View.GONE); - reasonLayout.setVisibility(View.VISIBLE); - } - changeState = String.valueOf(dataBean.getNextState()); - approvalResult = dataBean.getApprovalResult(); - } - }).build().show(); - } else { - ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); - } - } - - @OnClick({R.id.locationMapView, R.id.caseHandleResultLayout, R.id.addImageView, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.caseHandleResultLayout: - caseNextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); - break; - case R.id.addImageView: - new QMUIDialog.MenuDialogBuilder(this) - .addItem("相册中选取", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.selectPicture(CaseHandleDetailActivity.this); - } - }) - .addItem("相机拍照", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.takePicture(CaseHandleDetailActivity.this); - } - }) - .create().show(); - break; - case R.id.submitButton: - submitCase();//案卷提交 - break; - default: - break; - } - } - - private void submitCase() { - String handleResult = caseHandleResultView.getText().toString(); - if (handleResult.equals("")) { - ToastHelper.showToast("还未选择处理结果", ToastHelper.WARING); - return; - } - if (handleResult.equals("处理完成")) { - //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getCount() != 2) { - ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); - return; - } - } - if (handleResult.equals("申请延期") || handleResult.equals("申请调整")) { - caseReason = caseReasonView.getText().toString(); - if (TextUtils.isEmpty(caseReason)) { - ToastHelper.showToast("延期/调整的原因必须填写", ToastHelper.WARING); - return; - } - } - caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), - changeState, caseReason, StringHelper.reformatURL(mediaList), approvalResult); - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - switch (requestCode) { - case PictureConfig.CHOOSE_REQUEST: - List selectList = PictureSelector.obtainMultipleResult(data); - for (LocalMedia media : selectList) { - File file = new File(media.getCompressPath()); - if (file.length() <= Constant.IMAGE_MINUS_SIZE) { - ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); - continue; - } - uploadImagePresenter.onReadyRetrofitRequest(file); - } - break; - case PictureConfig.REQUEST_CAMERA: - LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); - break; - default: - break; - } - } - } - - @Override - public void showProgress() { - submitDialog.show(); - } - - @Override - public void hideProgress() { - submitDialog.dismiss(); - } - - @Override - public void obtainUploadAudioResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainUploadImageResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - PictureFileUtils.deleteAllCacheDirFile(this); - /** - * 系统路径static拼接图片返回路径 - * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg - */ - //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg - int sumItemCount = handleImageAdapter.getCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 2) { - String url = resultBean.getData(); - mediaList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - if (realPaths.size() == 2) { - addImageView.setVisibility(View.GONE); - } - handleImageAdapter.setImageList(realPaths); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, realPaths); - } - }); - //删除按钮点击事件 - handleImageAdapter.isDeleteVisible(true); - handleImageAdapter.setOnDeleteClickListener(new ImageGridViewAdapter.OnDeleteItemClickListener() { - @Override - public void onClick(int position) { - mediaList.remove(position); - realPaths.remove(position); - handleImageAdapter.setImageList(realPaths); - if (realPaths.size() != 2) { - addImageView.setVisibility(View.VISIBLE); - } - } - }); - } else { - ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); - } - } - } - - @Override - public void obtainUploadVideoResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - public void obtainCaseHandleResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); - switch (title) { - case "超时案卷": - OvertimeCaseFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - break; - case "紧急案卷": - UrgentCaseFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - break; - case "待办案卷": - CaseTodoFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - break; - } - finish(); - } else { - ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (caseNextNodePresenter != null) { - caseNextNodePresenter.disposeRetrofitRequest(); - } - if (uploadImagePresenter != null) { - uploadImagePresenter.disposeRetrofitRequest(); - } - if (caseHandlePresenter != null) { - caseHandlePresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.kt new file mode 100644 index 0000000..c17a12d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.kt @@ -0,0 +1,341 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.bean.CaseNextNodeBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl +import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailHandleView +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.mvp.view.ICaseNextNodeView +import com.casic.dcms.mvp.view.IUploadFileView +import com.casic.dcms.ui.fragment.handle.CaseHandledFragment +import com.casic.dcms.ui.fragment.handle.CaseTodoFragment +import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment +import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment +import com.casic.dcms.utils.* +import com.luck.picture.lib.PictureSelector +import com.luck.picture.lib.config.PictureConfig +import com.luck.picture.lib.tools.PictureFileUtils +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import com.qmuiteam.qmui.widget.dialog.QMUIDialog.MenuDialogBuilder +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog +import kotlinx.android.synthetic.main.activity_case_handle_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import java.io.File +import java.util.* + +class CaseHandleDetailActivity : BaseCaseActivity(), ICaseDetailView, ICaseNextNodeView, + IUploadFileView, ICaseDetailHandleView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private lateinit var caseNextNodePresenter: CaseNextNodePresenterImpl + private lateinit var uploadImagePresenter: UploadImagePresenterImpl + private lateinit var caseHandlePresenter: CaseHandlePresenterImpl + private lateinit var title: String + private lateinit var id: String + private lateinit var changeState: String + private lateinit var caseReason: String + private lateinit var approvalResult: String + private var submitDialog: QMUITipDialog? = null + private var handleImageAdapter: ImageGridViewAdapter? = null + private var data = CaseDetailBean.DataBean() + private val realPaths = ArrayList() //真实图片路径 + private val mediaList: MutableList = ArrayList() //上传到服务器的数据集 + + override fun initLayoutView(): Int = R.layout.activity_case_handle_detail + + override fun setTitleName(): String { + return title + } + + override fun initData() { + title = intent.getStringExtra("title")!! + id = intent.getStringExtra("id")!! + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + caseNextNodePresenter = CaseNextNodePresenterImpl(this) + uploadImagePresenter = UploadImagePresenterImpl(this) + caseHandlePresenter = CaseHandlePresenterImpl(this) + submitDialog = QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create() + handleImageAdapter = ImageGridViewAdapter(this) + handleGridView.adapter = handleImageAdapter + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + + caseHandleResultLayout.setOnClickListener { + caseNextNodePresenter.onReadyRetrofitRequest(data.caseState.toString()) + } + + addImageView.setOnClickListener { + MenuDialogBuilder(this) + .addItem("相册中选取") { dialog, which -> + dialog.dismiss() + OtherUtils.selectPicture(this@CaseHandleDetailActivity) + } + .addItem("相机拍照") { dialog, which -> + dialog.dismiss() + OtherUtils.takePicture(this@CaseHandleDetailActivity) + } + .create().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + val handleResult: String = caseHandleResultView.text.toString() + if (handleResult == "") { + ToastHelper.showToast("还未选择处理结果", ToastHelper.WARING) + return@setOnClickListener + } + if (handleResult == "处理完成") { + //选择处理完成时,处理图片必传。至少一张,最多两张 + if (handleImageAdapter!!.count != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING) + return@setOnClickListener + } + } + if (handleResult == "申请延期" || handleResult == "申请调整") { + caseReason = caseReasonView.text.toString() + if (TextUtils.isEmpty(caseReason)) { + ToastHelper.showToast("延期/调整的原因必须填写", ToastHelper.WARING) + return@setOnClickListener + } + } + caseHandlePresenter.onReadyRetrofitRequest( + data.processId, id, data.caseState.toString(), + changeState, caseReason, StringHelper.reformatURL(mediaList), approvalResult + ) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = + if (data.communityName == "") "无更详细社区信息" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + caseHandleView.text = if (data.caseStateName == "") "无处理意见" else data.caseStateName + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + } + } + + override fun obtainNextNodeData(resultBean: CaseNextNodeBean) { + if (resultBean.isSuccess) { + val dataBeans = resultBean.data + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("处理结果") + for (dataBean in dataBeans) { + sheetBuilder.addItem(dataBean.nextOperation) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + val dataBean = dataBeans[position] + val nextOperation = dataBean.nextOperation + caseHandleResultView.text = nextOperation + if (nextOperation == "处理完成") { + imageLayout.visibility = View.VISIBLE + reasonLayout.visibility = View.GONE + } else { + imageLayout.visibility = View.GONE + reasonLayout.visibility = View.VISIBLE + } + changeState = dataBean.nextState.toString() + approvalResult = dataBean.approvalResult + }.build().show() + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR) + } + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (resultCode == RESULT_OK) { + when (requestCode) { + PictureConfig.CHOOSE_REQUEST -> { + val selectList = PictureSelector.obtainMultipleResult(data) + for (media in selectList) { + val file = File(media.compressPath) + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR) + continue + } + uploadImagePresenter.onReadyRetrofitRequest(file) + } + } + PictureConfig.REQUEST_CAMERA -> { + val localMedia = PictureSelector.obtainMultipleResult(data)[0] + uploadImagePresenter.onReadyRetrofitRequest(File(localMedia.compressPath)) + } + } + } + } + + override fun showProgress() { + submitDialog!!.show() + } + + override fun hideProgress() { + submitDialog!!.dismiss() + } + + override fun obtainUploadAudioResult(resultBean: ActionResultBean) {} + override fun obtainUploadImageResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + PictureFileUtils.deleteAllCacheDirFile(this) + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + val sumItemCount = handleImageAdapter!!.count + 1 //每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + val url = resultBean.data + mediaList.add(url) + realPaths.add(StringHelper.appendCompleteURL(url)) + if (realPaths.size == 2) { + addImageView.visibility = View.GONE + } + handleImageAdapter!!.setImageList(realPaths) + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, realPaths) + } + //删除按钮点击事件 + handleImageAdapter!!.isDeleteVisible(true) + handleImageAdapter!!.setOnDeleteClickListener { position -> + mediaList.removeAt(position) + realPaths.removeAt(position) + handleImageAdapter!!.setImageList(realPaths) + if (realPaths.size != 2) { + addImageView.visibility = View.VISIBLE + } + } + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING) + } + } + } + + override fun obtainUploadVideoResult(resultBean: ActionResultBean) {} + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun obtainCaseHandleResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS) + when (title) { + "超时案卷" -> { + OvertimeCaseFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + } + "紧急案卷" -> { + UrgentCaseFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + } + "待办案卷" -> { + CaseTodoFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + } + } + finish() + } else { + ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR) + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + caseNextNodePresenter.disposeRetrofitRequest() + uploadImagePresenter.disposeRetrofitRequest() + caseHandlePresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java deleted file mode 100644 index 8b08041..0000000 --- a/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java +++ /dev/null @@ -1,289 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.EditText; -import android.widget.GridView; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.mvp.presenter.ShopChangePresenterImpl; -import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; -import com.casic.dcms.mvp.view.IShopInfoChangeView; -import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.luck.picture.lib.PictureSelector; -import com.luck.picture.lib.config.PictureConfig; -import com.luck.picture.lib.entity.LocalMedia; -import com.luck.picture.lib.tools.PictureFileUtils; -import com.qmuiteam.qmui.widget.dialog.QMUIDialog; -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; - -public class ChangeShopInfoActivity extends BaseCaseActivity implements View.OnClickListener, IUploadFileView, - IShopInfoChangeView { - - private static final String TAG = "ChangeShopInfoActivity"; - private Context context = this; - @BindView(R.id.shopView) - TextView shopView; - @BindView(R.id.communityNameView) - TextView communityNameView; - @BindView(R.id.shopLocationView) - EditText shopLocationView; - @BindView(R.id.shopKeeperView) - EditText shopKeeperView; - @BindView(R.id.phoneNumberView) - EditText phoneNumberView; - @BindView(R.id.selectedGridViewView) - GridView selectedGridViewView; - @BindView(R.id.addImageView) - ImageView addImageView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private UploadImagePresenterImpl uploadImagePresenter; - private ShopChangePresenterImpl shopChangePresenter; - private QMUITipDialog submitDialog; - private ImageGridViewAdapter imageAdapter; - private String merchantId;//商户id - private String merchantName; - private ArrayList realPaths = new ArrayList<>();//真实图片路径 - private List mediaList = new ArrayList<>();//上传到服务器的数据集 - - @Override - protected String setTitleName() { - return "商铺变更"; - } - - @Override - public int initLayoutView() { - return R.layout.activity_change_shop; - } - - @Override - public void initData() { - uploadImagePresenter = new UploadImagePresenterImpl(this); - shopChangePresenter = new ShopChangePresenterImpl(this); - submitDialog = new QMUITipDialog.Builder(this) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord("处理中,请稍后") - .create(); - imageAdapter = new ImageGridViewAdapter(this); - selectedGridViewView.setAdapter(imageAdapter); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @OnClick({R.id.shopLayout, R.id.addImageView, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.shopLayout: - Intent intent = new Intent(this, ArcGISMapActivity.class); - intent.putExtra("type", "商铺变更"); - startActivityForResult(intent, Constant.REQUEST_MAP_CODE); - break; - case R.id.addImageView: - new QMUIDialog.MenuDialogBuilder(this) - .addItem("相册中选取", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.selectPicture(ChangeShopInfoActivity.this); - } - }) - .addItem("相机拍照", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.takePicture(ChangeShopInfoActivity.this); - } - }) - .setCanceledOnTouchOutside(false) - .create().show(); - break; - case R.id.submitButton: - submitCase(); - break; - } - } - - private void submitCase() { - String phoneNumber = phoneNumberView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(phoneNumber)) { - ToastHelper.showToast("电话号码还未填写", ToastHelper.WARING); - return; - } - if (StringHelper.isPhoneNumber(phoneNumber)) { - String shopLocation = shopLocationView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(shopLocation)) { - ToastHelper.showToast("店铺地址还未填写", ToastHelper.WARING); - return; - } - String shopKeeper = shopKeeperView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(shopKeeper)) { - ToastHelper.showToast("店主名还未填写", ToastHelper.WARING); - return; - } - if (imageAdapter.getCount() != 2) { - ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING); - return; - } - shopChangePresenter.onReadyRetrofitRequest(merchantId, merchantName, shopKeeper, phoneNumber, StringHelper.reformatURL(mediaList)); - } else { - ToastHelper.showToast("电话号码格式不对", ToastHelper.WARING); - } - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - switch (requestCode) { - case Constant.REQUEST_MAP_CODE: - if (data == null) { - return; - } - String community = data.getStringExtra("community"); - merchantName = data.getStringExtra("shopName"); - merchantId = data.getStringExtra("shopID"); - - communityNameView.setText(community); - shopView.setText(merchantName); - shopView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - break; - case PictureConfig.CHOOSE_REQUEST: - List selectList = PictureSelector.obtainMultipleResult(data); - for (LocalMedia media : selectList) { - File file = new File(media.getCompressPath()); - if (file.length() <= Constant.IMAGE_MINUS_SIZE) { - ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); - continue; - } - uploadImagePresenter.onReadyRetrofitRequest(file); - } - break; - case PictureConfig.REQUEST_CAMERA: - LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); - break; - default: - break; - } - } - } - - @Override - public void showProgress() { - submitDialog.show(); - } - - @Override - public void hideProgress() { - submitDialog.dismiss(); - } - - @Override - public void obtainChangeResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("提交成功", ToastHelper.SUCCESS); - finish(); - } else { - ToastHelper.showToast("提交失败,请重试", ToastHelper.ERROR); - } - } - - @Override - public void obtainUploadAudioResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainUploadImageResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - PictureFileUtils.deleteAllCacheDirFile(this); - /** - * 系统路径static拼接图片返回路径 - * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg - */ - //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg - int sumItemCount = imageAdapter.getCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 2) { - String url = resultBean.getData(); - mediaList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - if (realPaths.size() == 2) { - addImageView.setVisibility(View.GONE); - } - imageAdapter.setImageList(realPaths); - //九宫格点击事件 - selectedGridViewView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, realPaths); - } - }); - //删除按钮点击事件 - imageAdapter.setOnDeleteClickListener(new ImageGridViewAdapter.OnDeleteItemClickListener() { - @Override - public void onClick(int position) { - mediaList.remove(position); - realPaths.remove(position); - imageAdapter.setImageList(realPaths); - if (realPaths.size() != 2) { - addImageView.setVisibility(View.VISIBLE); - } - } - }); - } else { - ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); - } - } - } - - @Override - public void obtainUploadVideoResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (uploadImagePresenter != null) { - uploadImagePresenter.disposeRetrofitRequest(); - } - if (shopChangePresenter != null) { - shopChangePresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.kt b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.kt new file mode 100644 index 0000000..4a9e91c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.kt @@ -0,0 +1,217 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.ShopChangePresenterImpl +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl +import com.casic.dcms.mvp.view.IShopInfoChangeView +import com.casic.dcms.mvp.view.IUploadFileView +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.luck.picture.lib.PictureSelector +import com.luck.picture.lib.config.PictureConfig +import com.luck.picture.lib.tools.PictureFileUtils +import com.qmuiteam.qmui.widget.dialog.QMUIDialog.MenuDialogBuilder +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog +import kotlinx.android.synthetic.main.activity_change_shop.* +import java.io.File +import java.util.* + +class ChangeShopInfoActivity : BaseCaseActivity(), IUploadFileView, IShopInfoChangeView { + + private lateinit var uploadImagePresenter: UploadImagePresenterImpl + private lateinit var shopChangePresenter: ShopChangePresenterImpl + private lateinit var merchantId: String //商户id + private lateinit var merchantName: String + private var submitDialog: QMUITipDialog? = null + private var imageAdapter: ImageGridViewAdapter? = null + private val realPaths = ArrayList() //真实图片路径 + private val mediaList: MutableList = ArrayList() //上传到服务器的数据集 + + override fun setTitleName(): String { + return "商铺变更" + } + + override fun initLayoutView(): Int { + return R.layout.activity_change_shop + } + + override fun initData() { + uploadImagePresenter = UploadImagePresenterImpl(this) + shopChangePresenter = ShopChangePresenterImpl(this) + submitDialog = QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create() + imageAdapter = ImageGridViewAdapter(this) + selectedGridViewView.adapter = imageAdapter + } + + override fun initEvent() { + shopLayout.setOnClickListener { + val intent = Intent(this, ArcGISMapActivity::class.java) + intent.putExtra("type", "商铺变更") + startActivityForResult(intent, Constant.REQUEST_MAP_CODE) + } + + addImageView.setOnClickListener { + MenuDialogBuilder(this) + .addItem("相册中选取") { dialog, which -> + dialog.dismiss() + OtherUtils.selectPicture(this) + } + .addItem("相机拍照") { dialog, which -> + dialog.dismiss() + OtherUtils.takePicture(this) + } + .setCanceledOnTouchOutside(false) + .create().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + val phoneNumber: String = phoneNumberView.text.toString().trim().replace(" ", "") + if (TextUtils.isEmpty(phoneNumber)) { + ToastHelper.showToast("电话号码还未填写", ToastHelper.WARING) + return@setOnClickListener + } + if (StringHelper.isPhoneNumber(phoneNumber)) { + val shopLocation: String = + shopLocationView.text.toString().trim().replace(" ", "") + if (TextUtils.isEmpty(shopLocation)) { + ToastHelper.showToast("店铺地址还未填写", ToastHelper.WARING) + return@setOnClickListener + } + val shopKeeper: String = shopKeeperView.text.toString().trim().replace(" ", "") + if (TextUtils.isEmpty(shopKeeper)) { + ToastHelper.showToast("店主名还未填写", ToastHelper.WARING) + return@setOnClickListener + } + if (imageAdapter!!.count != 2) { + ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING) + return@setOnClickListener + } + shopChangePresenter.onReadyRetrofitRequest( + merchantId, + merchantName, + shopKeeper, + phoneNumber, + StringHelper.reformatURL(mediaList) + ) + } else { + ToastHelper.showToast("电话号码格式不对", ToastHelper.WARING) + } + } + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (resultCode == RESULT_OK) { + when (requestCode) { + Constant.REQUEST_MAP_CODE -> { + if (data == null) { + return + } + val community = data.getStringExtra("community") + merchantName = data.getStringExtra("shopName")!! + merchantId = data.getStringExtra("shopID")!! + communityNameView.text = community + shopView.text = merchantName + shopView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + } + PictureConfig.CHOOSE_REQUEST -> { + val selectList = PictureSelector.obtainMultipleResult(data) + for (media in selectList) { + val file = File(media.compressPath) + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR) + continue + } + uploadImagePresenter.onReadyRetrofitRequest(file) + } + } + PictureConfig.REQUEST_CAMERA -> { + val localMedia = PictureSelector.obtainMultipleResult(data)[0] + uploadImagePresenter.onReadyRetrofitRequest(File(localMedia.compressPath)) + } + } + } + } + + override fun showProgress() { + submitDialog!!.show() + } + + override fun hideProgress() { + submitDialog!!.dismiss() + } + + override fun obtainChangeResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + ToastHelper.showToast("提交成功", ToastHelper.SUCCESS) + finish() + } else { + ToastHelper.showToast("提交失败,请重试", ToastHelper.ERROR) + } + } + + override fun obtainUploadAudioResult(resultBean: ActionResultBean) {} + + override fun obtainUploadImageResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + PictureFileUtils.deleteAllCacheDirFile(this) + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + val sumItemCount = imageAdapter!!.count + 1 //每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + val url = resultBean.data + mediaList.add(url) + realPaths.add(StringHelper.appendCompleteURL(url)) + if (realPaths.size == 2) { + addImageView.visibility = View.GONE + } + imageAdapter!!.setImageList(realPaths) + //九宫格点击事件 + selectedGridViewView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, realPaths) + } + //删除按钮点击事件 + imageAdapter!!.setOnDeleteClickListener { position -> + mediaList.removeAt(position) + realPaths.removeAt(position) + imageAdapter!!.setImageList(realPaths) + if (realPaths.size != 2) { + addImageView.visibility = View.VISIBLE + } + } + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING) + } + } + } + + override fun obtainUploadVideoResult(resultBean: ActionResultBean) {} + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + uploadImagePresenter.disposeRetrofitRequest() + shopChangePresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt index d2425dc..9e86954 100644 --- a/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt +++ b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt @@ -79,20 +79,27 @@ } changeServerConfigButton!!.setChangeAlphaWhenPress(true) changeServerConfigButton.setOnClickListener { - InputDialog.Builder() - .setContext(this) - .setTitle("修改服务器地址和端口") - .setOnDialogClickListener(object : InputDialog.OnDialogClickListener { - override fun onConfirmClick(serverValue: String, portValue: String) { - if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { - val serverConfig = "http:$serverValue:$portValue" - SaveKeyValues.putValue(Constant.IP_KEY, serverConfig) - ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS) - } + val defaultValue = SaveKeyValues.getValue( + Constant.IP_KEY, + "http://111.198.10.15:11409" + ) as String + InputDialog.Builder().setContext(this) + .setTitle("请输入后台服务器地址") + .setDefaultValue(defaultValue) + .setHintText("请输入服务器地址") + .setNegativeButton("取消") + .setPositiveButton("保存") + .setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener { + override fun onConfirmClick(input: String) { + SaveKeyValues.putValue(Constant.IP_KEY, input) + ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS) } - override fun onCancelClick() {} - }).build().show() + override fun onCancelClick() { + + } + }) + .build().show() } } diff --git a/app/src/main/java/com/casic/dcms/ui/WellListActivity.java b/app/src/main/java/com/casic/dcms/ui/WellListActivity.java index f9ab8ff..b23edcc 100644 --- a/app/src/main/java/com/casic/dcms/ui/WellListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WellListActivity.java @@ -157,7 +157,7 @@ @Override public void onClick(int position) { String bfzt = activity.dataBeans.get(position).getBfzt(); - String bfztName = ""; + String bfztName; if (bfzt.equals("0")) { bfztName = "布防"; bfzt = "1"; diff --git a/app/src/main/java/com/casic/dcms/widgets/InputDialog.java b/app/src/main/java/com/casic/dcms/widgets/InputDialog.java deleted file mode 100644 index 36def9c..0000000 --- a/app/src/main/java/com/casic/dcms/widgets/InputDialog.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.casic.dcms.widgets; - -import android.app.Dialog; -import android.content.Context; -import android.os.Bundle; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import com.casic.dcms.R; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -/** - * @Author: Pengxh - * @Time: 2021/4/13 13:18 - * @Email: 290677893@qq.com - **/ -public class InputDialog extends Dialog implements View.OnClickListener { - - private static final String TAG = "InputDialog"; - private String title; - private OnDialogClickListener listener; - private EditText serverView; - private EditText portView; - - private InputDialog(Builder builder) { - super(builder.mContext); - this.title = builder.title; - this.listener = builder.listener; - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.dialog_input); - initView(); - } - - private void initView() { - TextView dialogTitle = findViewById(R.id.dialogTitle); - serverView = findViewById(R.id.inputServerView); - portView = findViewById(R.id.inputPortView); - QMUIRoundButton dialogCancelButton = findViewById(R.id.dialogCancelButton); - dialogCancelButton.setChangeAlphaWhenPress(true); - dialogCancelButton.setOnClickListener(this); - - QMUIRoundButton dialogConfirmButton = findViewById(R.id.dialogConfirmButton); - dialogConfirmButton.setChangeAlphaWhenPress(true); - dialogConfirmButton.setOnClickListener(this); - - if (!TextUtils.isEmpty(title)) { - dialogTitle.setText(title); - } - } - - @Override - public void onClick(View view) { - int i = view.getId(); - if (i == R.id.dialogCancelButton) { - if (listener != null) { - listener.onCancelClick(); - } - } else if (i == R.id.dialogConfirmButton) { - if (listener != null) { - String server = serverView.getText().toString().trim(); - String port = portView.getText().toString().trim(); - listener.onConfirmClick(server, port); - } - } - this.dismiss(); - } - - public static class Builder { - private Context mContext; - private String title; - private OnDialogClickListener listener; - - public Builder setContext(Context context) { - this.mContext = context; - return this; - } - - public Builder setTitle(String title) { - this.title = title; - return this; - } - - public Builder setOnDialogClickListener(OnDialogClickListener listener) { - this.listener = listener; - return this; - } - - public InputDialog build() { - return new InputDialog(this); - } - } - - public interface OnDialogClickListener { - void onConfirmClick(String serverValue, String portValue); - - void onCancelClick(); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java deleted file mode 100644 index a5f468d..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ /dev/null @@ -1,458 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.bean.CaseNextNodeBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl; -import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl; -import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailHandleView; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.mvp.view.ICaseNextNodeView; -import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.ui.fragment.check.CaseCheckFragment; -import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.luck.picture.lib.PictureSelector; -import com.luck.picture.lib.config.PictureConfig; -import com.luck.picture.lib.entity.LocalMedia; -import com.luck.picture.lib.tools.PictureFileUtils; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.dialog.QMUIDialog; -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, - IUploadFileView, ICaseNextNodeView, ICaseDetailHandleView { - - private Context context = this; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.caseHandleResultView) - TextView caseHandleResultView; - @BindView(R.id.caseHandleTimeView) - TextView caseHandleTimeView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.addImageView) - ImageView addImageView; - @BindView(R.id.caseCheckOptView) - TextView caseCheckOptView; - @BindView(R.id.caseCheckStatusView) - TextView caseCheckStatusView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private CaseDetailPresenterImpl caseDetailPresenter; - private UploadImagePresenterImpl uploadImagePresenter; - private CaseNextNodePresenterImpl caseNextNodePresenter; - private CaseHandlePresenterImpl caseHandlePresenter; - - private String id; - private String changeState; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private ArrayList realPaths = new ArrayList<>();//真实图片路径 - private List mediaList = new ArrayList<>();//上传到服务器的数据集 - private QMUITipDialog submitDialog; - private ImageGridViewAdapter checkImageAdapter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_check_detail; - } - - @Override - protected String setTitleName() { - return "案卷核查"; - } - - @Override - public void initData() { - id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - - uploadImagePresenter = new UploadImagePresenterImpl(this); - caseNextNodePresenter = new CaseNextNodePresenterImpl(this); - caseHandlePresenter = new CaseHandlePresenterImpl(this); - submitDialog = new QMUITipDialog.Builder(this) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord("处理中,请稍后") - .create(); - checkImageAdapter = new ImageGridViewAdapter(this); - checkGridView.setAdapter(checkImageAdapter); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.addImageView: - new QMUIDialog.MenuDialogBuilder(this) - .addItem("相册中选取", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.selectPicture(CaseCheckDetailActivity.this); - } - }) - .addItem("相机拍照", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.takePicture(CaseCheckDetailActivity.this); - } - }) - .create().show(); - break; - case R.id.caseCheckLayout: - caseNextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); - break; - case R.id.submitButton: - submitCase();//案卷提交 - break; - default: - break; - } - } - - private void submitCase() { - String remarks = caseCheckOptView.getText().toString(); - if (TextUtils.isEmpty(remarks)) { - ToastHelper.showToast("核查意见不能为空", ToastHelper.WARING); - return; - } - if (TextUtils.isEmpty(changeState)) { - ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); - return; - } - if (checkImageAdapter.getCount() != 2) { - ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); - return; - } - caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), - changeState, remarks, StringHelper.reformatURL(mediaList)); - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - switch (requestCode) { - case PictureConfig.CHOOSE_REQUEST: - List selectList = PictureSelector.obtainMultipleResult(data); - for (LocalMedia media : selectList) { - File file = new File(media.getCompressPath()); - if (file.length() <= Constant.IMAGE_MINUS_SIZE) { - ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); - continue; - } - uploadImagePresenter.onReadyRetrofitRequest(file); - } - break; - case PictureConfig.REQUEST_CAMERA: - LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); - break; - default: - break; - } - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - - /** - * 图片 - * */ - //核实照片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - - //处理照片 - String processImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(processImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = processImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - caseHandleResultView.setText(data.getProcessRemarks().equals("") ? "无处理意见" : data.getProcessRemarks()); - //TODO 服务器返回数据缺少此字段,暂时注掉 -// caseHandleTimeView.setText(); - } - } - - @Override - public void showProgress() { - submitDialog.show(); - } - - @Override - public void hideProgress() { - submitDialog.dismiss(); - } - - @Override - public void obtainCaseHandleResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("案卷核查提交成功", ToastHelper.SUCCESS); - //案卷办完以后通知待办和已办刷新数据 - CaseCheckFragment.sendEmptyMessage(Constant.CASE_CHECK_OK); - CaseCheckedFragment.sendEmptyMessage(Constant.CASE_CHECK_OK); - finish(); - } else { - ToastHelper.showToast("案卷核查提交失败,请检查", ToastHelper.ERROR); - } - } - - @Override - public void obtainUploadAudioResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainUploadImageResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - PictureFileUtils.deleteAllCacheDirFile(this); - /** - * 系统路径static拼接图片返回路径 - * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg - */ - //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg - int sumItemCount = checkImageAdapter.getCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 2) { - String url = resultBean.getData(); - mediaList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - if (realPaths.size() == 2) { - addImageView.setVisibility(View.GONE); - } - checkImageAdapter.setImageList(realPaths); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, realPaths); - } - }); - //删除按钮点击事件 - checkImageAdapter.isDeleteVisible(true); - checkImageAdapter.setOnDeleteClickListener(new ImageGridViewAdapter.OnDeleteItemClickListener() { - @Override - public void onClick(int position) { - mediaList.remove(position); - realPaths.remove(position); - checkImageAdapter.setImageList(realPaths); - if (realPaths.size() != 2) { - addImageView.setVisibility(View.VISIBLE); - } - } - }); - } else { - ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); - } - } - } - - @Override - public void obtainUploadVideoResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainNextNodeData(CaseNextNodeBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("核实情况"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - caseCheckStatusView.setText(dataBean.getNextOperation()); - caseCheckOptView.setText(dataBean.getNextOperation()); - changeState = String.valueOf(dataBean.getNextState()); - } - }).build().show(); - } else { - ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("上传失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (uploadImagePresenter != null) { - uploadImagePresenter.disposeRetrofitRequest(); - } - if (caseNextNodePresenter != null) { - caseNextNodePresenter.disposeRetrofitRequest(); - } - if (caseHandlePresenter != null) { - caseHandlePresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.kt new file mode 100644 index 0000000..c7d9d48 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.kt @@ -0,0 +1,340 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.bean.CaseNextNodeBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl +import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailHandleView +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.mvp.view.ICaseNextNodeView +import com.casic.dcms.mvp.view.IUploadFileView +import com.casic.dcms.ui.fragment.check.CaseCheckFragment +import com.casic.dcms.ui.fragment.check.CaseCheckedFragment +import com.casic.dcms.utils.* +import com.luck.picture.lib.PictureSelector +import com.luck.picture.lib.config.PictureConfig +import com.luck.picture.lib.tools.PictureFileUtils +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import com.qmuiteam.qmui.widget.dialog.QMUIDialog.MenuDialogBuilder +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog +import kotlinx.android.synthetic.main.activity_case_check_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import java.io.File +import java.util.* + +class CaseCheckDetailActivity : BaseCaseActivity(), ICaseDetailView, + IUploadFileView, ICaseNextNodeView, ICaseDetailHandleView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private lateinit var uploadImagePresenter: UploadImagePresenterImpl + private lateinit var caseNextNodePresenter: CaseNextNodePresenterImpl + private lateinit var caseHandlePresenter: CaseHandlePresenterImpl + private lateinit var id: String + private lateinit var changeState: String + private var submitDialog: QMUITipDialog? = null + private var checkImageAdapter: ImageGridViewAdapter? = null + private var data = CaseDetailBean.DataBean() + private val realPaths = ArrayList() //真实图片路径 + private val mediaList: MutableList = ArrayList() //上传到服务器的数据集 + + override fun initLayoutView(): Int = R.layout.activity_case_check_detail + + override fun setTitleName(): String { + return "案卷核查" + } + + override fun initData() { + id = intent.getStringExtra("id")!! + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + uploadImagePresenter = UploadImagePresenterImpl(this) + caseNextNodePresenter = CaseNextNodePresenterImpl(this) + caseHandlePresenter = CaseHandlePresenterImpl(this) + submitDialog = QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create() + checkImageAdapter = ImageGridViewAdapter(this) + checkGridView.adapter = checkImageAdapter + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + + addImageView.setOnClickListener { + MenuDialogBuilder(this) + .addItem("相册中选取") { dialog, which -> + dialog.dismiss() + OtherUtils.selectPicture(this@CaseCheckDetailActivity) + } + .addItem("相机拍照") { dialog, which -> + dialog.dismiss() + OtherUtils.takePicture(this@CaseCheckDetailActivity) + } + .create().show() + } + + caseCheckLayout.setOnClickListener { + caseNextNodePresenter.onReadyRetrofitRequest(data.caseState.toString()) + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + //案卷提交 + val remarks: String = caseCheckOptView.text.toString() + if (TextUtils.isEmpty(remarks)) { + ToastHelper.showToast("核查意见不能为空", ToastHelper.WARING) + return@setOnClickListener + } + if (TextUtils.isEmpty(changeState)) { + ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING) + return@setOnClickListener + } + if (checkImageAdapter!!.count != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING) + return@setOnClickListener + } + caseHandlePresenter.onReadyRetrofitRequest( + data.processId, id, data.caseState.toString(), + changeState, remarks, StringHelper.reformatURL(mediaList) + ) + } + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (resultCode == RESULT_OK) { + when (requestCode) { + PictureConfig.CHOOSE_REQUEST -> { + val selectList = PictureSelector.obtainMultipleResult(data) + for (media in selectList) { + val file = File(media.compressPath) + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR) + continue + } + uploadImagePresenter.onReadyRetrofitRequest(file) + } + } + PictureConfig.REQUEST_CAMERA -> { + val localMedia = PictureSelector.obtainMultipleResult(data)[0] + uploadImagePresenter.onReadyRetrofitRequest(File(localMedia.compressPath)) + } + } + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = + if (data.communityName == "") "无更详细社区信息" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + /** + * 图片 + */ + //核实照片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + + //处理照片 + val processImages = data.fileIdProcess + if (!TextUtils.isEmpty(processImages)) { + val urls = ArrayList() + val split = processImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + caseHandleResultView.text = + if (data.processRemarks == "") "无处理意见" else data.processRemarks + //TODO 服务器返回数据缺少此字段,暂时注掉 +// caseHandleTimeView.setText(); + } + } + + override fun showProgress() { + submitDialog!!.show() + } + + override fun hideProgress() { + submitDialog!!.dismiss() + } + + override fun obtainCaseHandleResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + ToastHelper.showToast("案卷核查提交成功", ToastHelper.SUCCESS) + //案卷办完以后通知待办和已办刷新数据 + CaseCheckFragment.sendEmptyMessage(Constant.CASE_CHECK_OK) + CaseCheckedFragment.sendEmptyMessage(Constant.CASE_CHECK_OK) + finish() + } else { + ToastHelper.showToast("案卷核查提交失败,请检查", ToastHelper.ERROR) + } + } + + override fun obtainUploadAudioResult(resultBean: ActionResultBean) {} + override fun obtainUploadImageResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + PictureFileUtils.deleteAllCacheDirFile(this) + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + val sumItemCount = checkImageAdapter!!.count + 1 //每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + val url = resultBean.data + mediaList.add(url) + realPaths.add(StringHelper.appendCompleteURL(url)) + if (realPaths.size == 2) { + addImageView.visibility = View.GONE + } + checkImageAdapter!!.setImageList(realPaths) + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, realPaths) + } + //删除按钮点击事件 + checkImageAdapter!!.isDeleteVisible(true) + checkImageAdapter!!.setOnDeleteClickListener { position -> + mediaList.removeAt(position) + realPaths.removeAt(position) + checkImageAdapter!!.setImageList(realPaths) + if (realPaths.size != 2) { + addImageView.visibility = View.VISIBLE + } + } + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING) + } + } + } + + override fun obtainUploadVideoResult(resultBean: ActionResultBean) {} + + override fun obtainNextNodeData(resultBean: CaseNextNodeBean) { + if (resultBean.isSuccess) { + val dataBeans = resultBean.data + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("核实情况") + for (dataBean in dataBeans) { + sheetBuilder.addItem(dataBean.nextOperation) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + val dataBean = dataBeans[position] + caseCheckStatusView.text = dataBean.nextOperation + caseCheckOptView.text = dataBean.nextOperation + changeState = dataBean.nextState.toString() + }.build().show() + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR) + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("上传失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + uploadImagePresenter.disposeRetrofitRequest() + caseNextNodePresenter.disposeRetrofitRequest() + caseHandlePresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java deleted file mode 100644 index 996401c..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ /dev/null @@ -1,460 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.EditText; -import android.widget.GridView; -import android.widget.ImageView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.annotation.Nullable; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.bean.CaseNextNodeBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl; -import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl; -import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailHandleView; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.mvp.view.ICaseNextNodeView; -import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.ui.fragment.handle.CaseHandledFragment; -import com.casic.dcms.ui.fragment.handle.CaseTodoFragment; -import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; -import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.luck.picture.lib.PictureSelector; -import com.luck.picture.lib.config.PictureConfig; -import com.luck.picture.lib.entity.LocalMedia; -import com.luck.picture.lib.tools.PictureFileUtils; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.dialog.QMUIDialog; -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandleDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView, ICaseNextNodeView, IUploadFileView, ICaseDetailHandleView { - - private Context context = this; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.caseHandleResultView) - TextView caseHandleResultView; - @BindView(R.id.imageLayout) - RelativeLayout imageLayout; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.addImageView) - ImageView addImageView; - @BindView(R.id.reasonLayout) - RelativeLayout reasonLayout; - @BindView(R.id.caseReasonView) - EditText caseReasonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private String title; - private String id; - private String changeState; - private String caseReason; - private String approvalResult; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private ArrayList realPaths = new ArrayList<>();//真实图片路径 - private List mediaList = new ArrayList<>();//上传到服务器的数据集 - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseNextNodePresenterImpl caseNextNodePresenter; - private UploadImagePresenterImpl uploadImagePresenter; - private CaseHandlePresenterImpl caseHandlePresenter; - private QMUITipDialog submitDialog; - private ImageGridViewAdapter handleImageAdapter;//处理图片的adapter - - @Override - public int initLayoutView() { - return R.layout.activity_case_handle_detail; - } - - @Override - protected String setTitleName() { - return title; - } - - @Override - public void initData() { - title = getIntent().getStringExtra("title"); - id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - - caseNextNodePresenter = new CaseNextNodePresenterImpl(this); - uploadImagePresenter = new UploadImagePresenterImpl(this); - caseHandlePresenter = new CaseHandlePresenterImpl(this); - submitDialog = new QMUITipDialog.Builder(this) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord("处理中,请稍后") - .create(); - handleImageAdapter = new ImageGridViewAdapter(this); - handleGridView.setAdapter(handleImageAdapter); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - caseHandleView.setText(data.getCaseStateName().equals("") ? "无处理意见" : data.getCaseStateName()); - - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - } - } - - @Override - public void obtainNextNodeData(CaseNextNodeBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("处理结果"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - String nextOperation = dataBean.getNextOperation(); - caseHandleResultView.setText(nextOperation); - if (nextOperation.equals("处理完成")) { - imageLayout.setVisibility(View.VISIBLE); - reasonLayout.setVisibility(View.GONE); - } else { - imageLayout.setVisibility(View.GONE); - reasonLayout.setVisibility(View.VISIBLE); - } - changeState = String.valueOf(dataBean.getNextState()); - approvalResult = dataBean.getApprovalResult(); - } - }).build().show(); - } else { - ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); - } - } - - @OnClick({R.id.locationMapView, R.id.caseHandleResultLayout, R.id.addImageView, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.caseHandleResultLayout: - caseNextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); - break; - case R.id.addImageView: - new QMUIDialog.MenuDialogBuilder(this) - .addItem("相册中选取", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.selectPicture(CaseHandleDetailActivity.this); - } - }) - .addItem("相机拍照", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.takePicture(CaseHandleDetailActivity.this); - } - }) - .create().show(); - break; - case R.id.submitButton: - submitCase();//案卷提交 - break; - default: - break; - } - } - - private void submitCase() { - String handleResult = caseHandleResultView.getText().toString(); - if (handleResult.equals("")) { - ToastHelper.showToast("还未选择处理结果", ToastHelper.WARING); - return; - } - if (handleResult.equals("处理完成")) { - //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getCount() != 2) { - ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); - return; - } - } - if (handleResult.equals("申请延期") || handleResult.equals("申请调整")) { - caseReason = caseReasonView.getText().toString(); - if (TextUtils.isEmpty(caseReason)) { - ToastHelper.showToast("延期/调整的原因必须填写", ToastHelper.WARING); - return; - } - } - caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), - changeState, caseReason, StringHelper.reformatURL(mediaList), approvalResult); - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - switch (requestCode) { - case PictureConfig.CHOOSE_REQUEST: - List selectList = PictureSelector.obtainMultipleResult(data); - for (LocalMedia media : selectList) { - File file = new File(media.getCompressPath()); - if (file.length() <= Constant.IMAGE_MINUS_SIZE) { - ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); - continue; - } - uploadImagePresenter.onReadyRetrofitRequest(file); - } - break; - case PictureConfig.REQUEST_CAMERA: - LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); - break; - default: - break; - } - } - } - - @Override - public void showProgress() { - submitDialog.show(); - } - - @Override - public void hideProgress() { - submitDialog.dismiss(); - } - - @Override - public void obtainUploadAudioResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainUploadImageResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - PictureFileUtils.deleteAllCacheDirFile(this); - /** - * 系统路径static拼接图片返回路径 - * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg - */ - //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg - int sumItemCount = handleImageAdapter.getCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 2) { - String url = resultBean.getData(); - mediaList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - if (realPaths.size() == 2) { - addImageView.setVisibility(View.GONE); - } - handleImageAdapter.setImageList(realPaths); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, realPaths); - } - }); - //删除按钮点击事件 - handleImageAdapter.isDeleteVisible(true); - handleImageAdapter.setOnDeleteClickListener(new ImageGridViewAdapter.OnDeleteItemClickListener() { - @Override - public void onClick(int position) { - mediaList.remove(position); - realPaths.remove(position); - handleImageAdapter.setImageList(realPaths); - if (realPaths.size() != 2) { - addImageView.setVisibility(View.VISIBLE); - } - } - }); - } else { - ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); - } - } - } - - @Override - public void obtainUploadVideoResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - public void obtainCaseHandleResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); - switch (title) { - case "超时案卷": - OvertimeCaseFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - break; - case "紧急案卷": - UrgentCaseFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - break; - case "待办案卷": - CaseTodoFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - break; - } - finish(); - } else { - ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (caseNextNodePresenter != null) { - caseNextNodePresenter.disposeRetrofitRequest(); - } - if (uploadImagePresenter != null) { - uploadImagePresenter.disposeRetrofitRequest(); - } - if (caseHandlePresenter != null) { - caseHandlePresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.kt new file mode 100644 index 0000000..c17a12d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.kt @@ -0,0 +1,341 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.bean.CaseNextNodeBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl +import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailHandleView +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.mvp.view.ICaseNextNodeView +import com.casic.dcms.mvp.view.IUploadFileView +import com.casic.dcms.ui.fragment.handle.CaseHandledFragment +import com.casic.dcms.ui.fragment.handle.CaseTodoFragment +import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment +import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment +import com.casic.dcms.utils.* +import com.luck.picture.lib.PictureSelector +import com.luck.picture.lib.config.PictureConfig +import com.luck.picture.lib.tools.PictureFileUtils +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import com.qmuiteam.qmui.widget.dialog.QMUIDialog.MenuDialogBuilder +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog +import kotlinx.android.synthetic.main.activity_case_handle_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import java.io.File +import java.util.* + +class CaseHandleDetailActivity : BaseCaseActivity(), ICaseDetailView, ICaseNextNodeView, + IUploadFileView, ICaseDetailHandleView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private lateinit var caseNextNodePresenter: CaseNextNodePresenterImpl + private lateinit var uploadImagePresenter: UploadImagePresenterImpl + private lateinit var caseHandlePresenter: CaseHandlePresenterImpl + private lateinit var title: String + private lateinit var id: String + private lateinit var changeState: String + private lateinit var caseReason: String + private lateinit var approvalResult: String + private var submitDialog: QMUITipDialog? = null + private var handleImageAdapter: ImageGridViewAdapter? = null + private var data = CaseDetailBean.DataBean() + private val realPaths = ArrayList() //真实图片路径 + private val mediaList: MutableList = ArrayList() //上传到服务器的数据集 + + override fun initLayoutView(): Int = R.layout.activity_case_handle_detail + + override fun setTitleName(): String { + return title + } + + override fun initData() { + title = intent.getStringExtra("title")!! + id = intent.getStringExtra("id")!! + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + caseNextNodePresenter = CaseNextNodePresenterImpl(this) + uploadImagePresenter = UploadImagePresenterImpl(this) + caseHandlePresenter = CaseHandlePresenterImpl(this) + submitDialog = QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create() + handleImageAdapter = ImageGridViewAdapter(this) + handleGridView.adapter = handleImageAdapter + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + + caseHandleResultLayout.setOnClickListener { + caseNextNodePresenter.onReadyRetrofitRequest(data.caseState.toString()) + } + + addImageView.setOnClickListener { + MenuDialogBuilder(this) + .addItem("相册中选取") { dialog, which -> + dialog.dismiss() + OtherUtils.selectPicture(this@CaseHandleDetailActivity) + } + .addItem("相机拍照") { dialog, which -> + dialog.dismiss() + OtherUtils.takePicture(this@CaseHandleDetailActivity) + } + .create().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + val handleResult: String = caseHandleResultView.text.toString() + if (handleResult == "") { + ToastHelper.showToast("还未选择处理结果", ToastHelper.WARING) + return@setOnClickListener + } + if (handleResult == "处理完成") { + //选择处理完成时,处理图片必传。至少一张,最多两张 + if (handleImageAdapter!!.count != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING) + return@setOnClickListener + } + } + if (handleResult == "申请延期" || handleResult == "申请调整") { + caseReason = caseReasonView.text.toString() + if (TextUtils.isEmpty(caseReason)) { + ToastHelper.showToast("延期/调整的原因必须填写", ToastHelper.WARING) + return@setOnClickListener + } + } + caseHandlePresenter.onReadyRetrofitRequest( + data.processId, id, data.caseState.toString(), + changeState, caseReason, StringHelper.reformatURL(mediaList), approvalResult + ) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = + if (data.communityName == "") "无更详细社区信息" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + caseHandleView.text = if (data.caseStateName == "") "无处理意见" else data.caseStateName + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + } + } + + override fun obtainNextNodeData(resultBean: CaseNextNodeBean) { + if (resultBean.isSuccess) { + val dataBeans = resultBean.data + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("处理结果") + for (dataBean in dataBeans) { + sheetBuilder.addItem(dataBean.nextOperation) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + val dataBean = dataBeans[position] + val nextOperation = dataBean.nextOperation + caseHandleResultView.text = nextOperation + if (nextOperation == "处理完成") { + imageLayout.visibility = View.VISIBLE + reasonLayout.visibility = View.GONE + } else { + imageLayout.visibility = View.GONE + reasonLayout.visibility = View.VISIBLE + } + changeState = dataBean.nextState.toString() + approvalResult = dataBean.approvalResult + }.build().show() + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR) + } + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (resultCode == RESULT_OK) { + when (requestCode) { + PictureConfig.CHOOSE_REQUEST -> { + val selectList = PictureSelector.obtainMultipleResult(data) + for (media in selectList) { + val file = File(media.compressPath) + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR) + continue + } + uploadImagePresenter.onReadyRetrofitRequest(file) + } + } + PictureConfig.REQUEST_CAMERA -> { + val localMedia = PictureSelector.obtainMultipleResult(data)[0] + uploadImagePresenter.onReadyRetrofitRequest(File(localMedia.compressPath)) + } + } + } + } + + override fun showProgress() { + submitDialog!!.show() + } + + override fun hideProgress() { + submitDialog!!.dismiss() + } + + override fun obtainUploadAudioResult(resultBean: ActionResultBean) {} + override fun obtainUploadImageResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + PictureFileUtils.deleteAllCacheDirFile(this) + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + val sumItemCount = handleImageAdapter!!.count + 1 //每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + val url = resultBean.data + mediaList.add(url) + realPaths.add(StringHelper.appendCompleteURL(url)) + if (realPaths.size == 2) { + addImageView.visibility = View.GONE + } + handleImageAdapter!!.setImageList(realPaths) + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, realPaths) + } + //删除按钮点击事件 + handleImageAdapter!!.isDeleteVisible(true) + handleImageAdapter!!.setOnDeleteClickListener { position -> + mediaList.removeAt(position) + realPaths.removeAt(position) + handleImageAdapter!!.setImageList(realPaths) + if (realPaths.size != 2) { + addImageView.visibility = View.VISIBLE + } + } + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING) + } + } + } + + override fun obtainUploadVideoResult(resultBean: ActionResultBean) {} + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun obtainCaseHandleResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS) + when (title) { + "超时案卷" -> { + OvertimeCaseFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + } + "紧急案卷" -> { + UrgentCaseFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + } + "待办案卷" -> { + CaseTodoFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + } + } + finish() + } else { + ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR) + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + caseNextNodePresenter.disposeRetrofitRequest() + uploadImagePresenter.disposeRetrofitRequest() + caseHandlePresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java deleted file mode 100644 index 8b08041..0000000 --- a/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java +++ /dev/null @@ -1,289 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.EditText; -import android.widget.GridView; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.mvp.presenter.ShopChangePresenterImpl; -import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; -import com.casic.dcms.mvp.view.IShopInfoChangeView; -import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.luck.picture.lib.PictureSelector; -import com.luck.picture.lib.config.PictureConfig; -import com.luck.picture.lib.entity.LocalMedia; -import com.luck.picture.lib.tools.PictureFileUtils; -import com.qmuiteam.qmui.widget.dialog.QMUIDialog; -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; - -public class ChangeShopInfoActivity extends BaseCaseActivity implements View.OnClickListener, IUploadFileView, - IShopInfoChangeView { - - private static final String TAG = "ChangeShopInfoActivity"; - private Context context = this; - @BindView(R.id.shopView) - TextView shopView; - @BindView(R.id.communityNameView) - TextView communityNameView; - @BindView(R.id.shopLocationView) - EditText shopLocationView; - @BindView(R.id.shopKeeperView) - EditText shopKeeperView; - @BindView(R.id.phoneNumberView) - EditText phoneNumberView; - @BindView(R.id.selectedGridViewView) - GridView selectedGridViewView; - @BindView(R.id.addImageView) - ImageView addImageView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private UploadImagePresenterImpl uploadImagePresenter; - private ShopChangePresenterImpl shopChangePresenter; - private QMUITipDialog submitDialog; - private ImageGridViewAdapter imageAdapter; - private String merchantId;//商户id - private String merchantName; - private ArrayList realPaths = new ArrayList<>();//真实图片路径 - private List mediaList = new ArrayList<>();//上传到服务器的数据集 - - @Override - protected String setTitleName() { - return "商铺变更"; - } - - @Override - public int initLayoutView() { - return R.layout.activity_change_shop; - } - - @Override - public void initData() { - uploadImagePresenter = new UploadImagePresenterImpl(this); - shopChangePresenter = new ShopChangePresenterImpl(this); - submitDialog = new QMUITipDialog.Builder(this) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord("处理中,请稍后") - .create(); - imageAdapter = new ImageGridViewAdapter(this); - selectedGridViewView.setAdapter(imageAdapter); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @OnClick({R.id.shopLayout, R.id.addImageView, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.shopLayout: - Intent intent = new Intent(this, ArcGISMapActivity.class); - intent.putExtra("type", "商铺变更"); - startActivityForResult(intent, Constant.REQUEST_MAP_CODE); - break; - case R.id.addImageView: - new QMUIDialog.MenuDialogBuilder(this) - .addItem("相册中选取", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.selectPicture(ChangeShopInfoActivity.this); - } - }) - .addItem("相机拍照", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.takePicture(ChangeShopInfoActivity.this); - } - }) - .setCanceledOnTouchOutside(false) - .create().show(); - break; - case R.id.submitButton: - submitCase(); - break; - } - } - - private void submitCase() { - String phoneNumber = phoneNumberView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(phoneNumber)) { - ToastHelper.showToast("电话号码还未填写", ToastHelper.WARING); - return; - } - if (StringHelper.isPhoneNumber(phoneNumber)) { - String shopLocation = shopLocationView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(shopLocation)) { - ToastHelper.showToast("店铺地址还未填写", ToastHelper.WARING); - return; - } - String shopKeeper = shopKeeperView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(shopKeeper)) { - ToastHelper.showToast("店主名还未填写", ToastHelper.WARING); - return; - } - if (imageAdapter.getCount() != 2) { - ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING); - return; - } - shopChangePresenter.onReadyRetrofitRequest(merchantId, merchantName, shopKeeper, phoneNumber, StringHelper.reformatURL(mediaList)); - } else { - ToastHelper.showToast("电话号码格式不对", ToastHelper.WARING); - } - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - switch (requestCode) { - case Constant.REQUEST_MAP_CODE: - if (data == null) { - return; - } - String community = data.getStringExtra("community"); - merchantName = data.getStringExtra("shopName"); - merchantId = data.getStringExtra("shopID"); - - communityNameView.setText(community); - shopView.setText(merchantName); - shopView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - break; - case PictureConfig.CHOOSE_REQUEST: - List selectList = PictureSelector.obtainMultipleResult(data); - for (LocalMedia media : selectList) { - File file = new File(media.getCompressPath()); - if (file.length() <= Constant.IMAGE_MINUS_SIZE) { - ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); - continue; - } - uploadImagePresenter.onReadyRetrofitRequest(file); - } - break; - case PictureConfig.REQUEST_CAMERA: - LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); - break; - default: - break; - } - } - } - - @Override - public void showProgress() { - submitDialog.show(); - } - - @Override - public void hideProgress() { - submitDialog.dismiss(); - } - - @Override - public void obtainChangeResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("提交成功", ToastHelper.SUCCESS); - finish(); - } else { - ToastHelper.showToast("提交失败,请重试", ToastHelper.ERROR); - } - } - - @Override - public void obtainUploadAudioResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainUploadImageResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - PictureFileUtils.deleteAllCacheDirFile(this); - /** - * 系统路径static拼接图片返回路径 - * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg - */ - //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg - int sumItemCount = imageAdapter.getCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 2) { - String url = resultBean.getData(); - mediaList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - if (realPaths.size() == 2) { - addImageView.setVisibility(View.GONE); - } - imageAdapter.setImageList(realPaths); - //九宫格点击事件 - selectedGridViewView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, realPaths); - } - }); - //删除按钮点击事件 - imageAdapter.setOnDeleteClickListener(new ImageGridViewAdapter.OnDeleteItemClickListener() { - @Override - public void onClick(int position) { - mediaList.remove(position); - realPaths.remove(position); - imageAdapter.setImageList(realPaths); - if (realPaths.size() != 2) { - addImageView.setVisibility(View.VISIBLE); - } - } - }); - } else { - ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); - } - } - } - - @Override - public void obtainUploadVideoResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (uploadImagePresenter != null) { - uploadImagePresenter.disposeRetrofitRequest(); - } - if (shopChangePresenter != null) { - shopChangePresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.kt b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.kt new file mode 100644 index 0000000..4a9e91c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.kt @@ -0,0 +1,217 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.ShopChangePresenterImpl +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl +import com.casic.dcms.mvp.view.IShopInfoChangeView +import com.casic.dcms.mvp.view.IUploadFileView +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.luck.picture.lib.PictureSelector +import com.luck.picture.lib.config.PictureConfig +import com.luck.picture.lib.tools.PictureFileUtils +import com.qmuiteam.qmui.widget.dialog.QMUIDialog.MenuDialogBuilder +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog +import kotlinx.android.synthetic.main.activity_change_shop.* +import java.io.File +import java.util.* + +class ChangeShopInfoActivity : BaseCaseActivity(), IUploadFileView, IShopInfoChangeView { + + private lateinit var uploadImagePresenter: UploadImagePresenterImpl + private lateinit var shopChangePresenter: ShopChangePresenterImpl + private lateinit var merchantId: String //商户id + private lateinit var merchantName: String + private var submitDialog: QMUITipDialog? = null + private var imageAdapter: ImageGridViewAdapter? = null + private val realPaths = ArrayList() //真实图片路径 + private val mediaList: MutableList = ArrayList() //上传到服务器的数据集 + + override fun setTitleName(): String { + return "商铺变更" + } + + override fun initLayoutView(): Int { + return R.layout.activity_change_shop + } + + override fun initData() { + uploadImagePresenter = UploadImagePresenterImpl(this) + shopChangePresenter = ShopChangePresenterImpl(this) + submitDialog = QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create() + imageAdapter = ImageGridViewAdapter(this) + selectedGridViewView.adapter = imageAdapter + } + + override fun initEvent() { + shopLayout.setOnClickListener { + val intent = Intent(this, ArcGISMapActivity::class.java) + intent.putExtra("type", "商铺变更") + startActivityForResult(intent, Constant.REQUEST_MAP_CODE) + } + + addImageView.setOnClickListener { + MenuDialogBuilder(this) + .addItem("相册中选取") { dialog, which -> + dialog.dismiss() + OtherUtils.selectPicture(this) + } + .addItem("相机拍照") { dialog, which -> + dialog.dismiss() + OtherUtils.takePicture(this) + } + .setCanceledOnTouchOutside(false) + .create().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + val phoneNumber: String = phoneNumberView.text.toString().trim().replace(" ", "") + if (TextUtils.isEmpty(phoneNumber)) { + ToastHelper.showToast("电话号码还未填写", ToastHelper.WARING) + return@setOnClickListener + } + if (StringHelper.isPhoneNumber(phoneNumber)) { + val shopLocation: String = + shopLocationView.text.toString().trim().replace(" ", "") + if (TextUtils.isEmpty(shopLocation)) { + ToastHelper.showToast("店铺地址还未填写", ToastHelper.WARING) + return@setOnClickListener + } + val shopKeeper: String = shopKeeperView.text.toString().trim().replace(" ", "") + if (TextUtils.isEmpty(shopKeeper)) { + ToastHelper.showToast("店主名还未填写", ToastHelper.WARING) + return@setOnClickListener + } + if (imageAdapter!!.count != 2) { + ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING) + return@setOnClickListener + } + shopChangePresenter.onReadyRetrofitRequest( + merchantId, + merchantName, + shopKeeper, + phoneNumber, + StringHelper.reformatURL(mediaList) + ) + } else { + ToastHelper.showToast("电话号码格式不对", ToastHelper.WARING) + } + } + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (resultCode == RESULT_OK) { + when (requestCode) { + Constant.REQUEST_MAP_CODE -> { + if (data == null) { + return + } + val community = data.getStringExtra("community") + merchantName = data.getStringExtra("shopName")!! + merchantId = data.getStringExtra("shopID")!! + communityNameView.text = community + shopView.text = merchantName + shopView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + } + PictureConfig.CHOOSE_REQUEST -> { + val selectList = PictureSelector.obtainMultipleResult(data) + for (media in selectList) { + val file = File(media.compressPath) + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR) + continue + } + uploadImagePresenter.onReadyRetrofitRequest(file) + } + } + PictureConfig.REQUEST_CAMERA -> { + val localMedia = PictureSelector.obtainMultipleResult(data)[0] + uploadImagePresenter.onReadyRetrofitRequest(File(localMedia.compressPath)) + } + } + } + } + + override fun showProgress() { + submitDialog!!.show() + } + + override fun hideProgress() { + submitDialog!!.dismiss() + } + + override fun obtainChangeResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + ToastHelper.showToast("提交成功", ToastHelper.SUCCESS) + finish() + } else { + ToastHelper.showToast("提交失败,请重试", ToastHelper.ERROR) + } + } + + override fun obtainUploadAudioResult(resultBean: ActionResultBean) {} + + override fun obtainUploadImageResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + PictureFileUtils.deleteAllCacheDirFile(this) + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + val sumItemCount = imageAdapter!!.count + 1 //每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + val url = resultBean.data + mediaList.add(url) + realPaths.add(StringHelper.appendCompleteURL(url)) + if (realPaths.size == 2) { + addImageView.visibility = View.GONE + } + imageAdapter!!.setImageList(realPaths) + //九宫格点击事件 + selectedGridViewView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, realPaths) + } + //删除按钮点击事件 + imageAdapter!!.setOnDeleteClickListener { position -> + mediaList.removeAt(position) + realPaths.removeAt(position) + imageAdapter!!.setImageList(realPaths) + if (realPaths.size != 2) { + addImageView.visibility = View.VISIBLE + } + } + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING) + } + } + } + + override fun obtainUploadVideoResult(resultBean: ActionResultBean) {} + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + uploadImagePresenter.disposeRetrofitRequest() + shopChangePresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt index d2425dc..9e86954 100644 --- a/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt +++ b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt @@ -79,20 +79,27 @@ } changeServerConfigButton!!.setChangeAlphaWhenPress(true) changeServerConfigButton.setOnClickListener { - InputDialog.Builder() - .setContext(this) - .setTitle("修改服务器地址和端口") - .setOnDialogClickListener(object : InputDialog.OnDialogClickListener { - override fun onConfirmClick(serverValue: String, portValue: String) { - if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { - val serverConfig = "http:$serverValue:$portValue" - SaveKeyValues.putValue(Constant.IP_KEY, serverConfig) - ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS) - } + val defaultValue = SaveKeyValues.getValue( + Constant.IP_KEY, + "http://111.198.10.15:11409" + ) as String + InputDialog.Builder().setContext(this) + .setTitle("请输入后台服务器地址") + .setDefaultValue(defaultValue) + .setHintText("请输入服务器地址") + .setNegativeButton("取消") + .setPositiveButton("保存") + .setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener { + override fun onConfirmClick(input: String) { + SaveKeyValues.putValue(Constant.IP_KEY, input) + ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS) } - override fun onCancelClick() {} - }).build().show() + override fun onCancelClick() { + + } + }) + .build().show() } } diff --git a/app/src/main/java/com/casic/dcms/ui/WellListActivity.java b/app/src/main/java/com/casic/dcms/ui/WellListActivity.java index f9ab8ff..b23edcc 100644 --- a/app/src/main/java/com/casic/dcms/ui/WellListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WellListActivity.java @@ -157,7 +157,7 @@ @Override public void onClick(int position) { String bfzt = activity.dataBeans.get(position).getBfzt(); - String bfztName = ""; + String bfztName; if (bfzt.equals("0")) { bfztName = "布防"; bfzt = "1"; diff --git a/app/src/main/java/com/casic/dcms/widgets/InputDialog.java b/app/src/main/java/com/casic/dcms/widgets/InputDialog.java deleted file mode 100644 index 36def9c..0000000 --- a/app/src/main/java/com/casic/dcms/widgets/InputDialog.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.casic.dcms.widgets; - -import android.app.Dialog; -import android.content.Context; -import android.os.Bundle; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import com.casic.dcms.R; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -/** - * @Author: Pengxh - * @Time: 2021/4/13 13:18 - * @Email: 290677893@qq.com - **/ -public class InputDialog extends Dialog implements View.OnClickListener { - - private static final String TAG = "InputDialog"; - private String title; - private OnDialogClickListener listener; - private EditText serverView; - private EditText portView; - - private InputDialog(Builder builder) { - super(builder.mContext); - this.title = builder.title; - this.listener = builder.listener; - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.dialog_input); - initView(); - } - - private void initView() { - TextView dialogTitle = findViewById(R.id.dialogTitle); - serverView = findViewById(R.id.inputServerView); - portView = findViewById(R.id.inputPortView); - QMUIRoundButton dialogCancelButton = findViewById(R.id.dialogCancelButton); - dialogCancelButton.setChangeAlphaWhenPress(true); - dialogCancelButton.setOnClickListener(this); - - QMUIRoundButton dialogConfirmButton = findViewById(R.id.dialogConfirmButton); - dialogConfirmButton.setChangeAlphaWhenPress(true); - dialogConfirmButton.setOnClickListener(this); - - if (!TextUtils.isEmpty(title)) { - dialogTitle.setText(title); - } - } - - @Override - public void onClick(View view) { - int i = view.getId(); - if (i == R.id.dialogCancelButton) { - if (listener != null) { - listener.onCancelClick(); - } - } else if (i == R.id.dialogConfirmButton) { - if (listener != null) { - String server = serverView.getText().toString().trim(); - String port = portView.getText().toString().trim(); - listener.onConfirmClick(server, port); - } - } - this.dismiss(); - } - - public static class Builder { - private Context mContext; - private String title; - private OnDialogClickListener listener; - - public Builder setContext(Context context) { - this.mContext = context; - return this; - } - - public Builder setTitle(String title) { - this.title = title; - return this; - } - - public Builder setOnDialogClickListener(OnDialogClickListener listener) { - this.listener = listener; - return this; - } - - public InputDialog build() { - return new InputDialog(this); - } - } - - public interface OnDialogClickListener { - void onConfirmClick(String serverValue, String portValue); - - void onCancelClick(); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/widgets/InputDialog.kt b/app/src/main/java/com/casic/dcms/widgets/InputDialog.kt new file mode 100644 index 0000000..4a89ba8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/widgets/InputDialog.kt @@ -0,0 +1,135 @@ +package com.casic.dcms.widgets + +import android.app.Dialog +import android.content.Context +import android.graphics.Color +import android.graphics.drawable.ColorDrawable +import android.os.Bundle +import android.view.WindowManager +import com.casic.dcms.R +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.dialog_input.* + +/** + * @Author: Pengxh + * @Time: 2021/4/13 13:18 + * @Email: 290677893@qq.com + */ +class InputDialog private constructor(builder: Builder) : Dialog(builder.mContext!!) { + + private var ctx: Context? = null + private var title: String? = null + private var hint: String? = null + private var value: String? = null + private var positiveBtn: String? = null + private var negativeBtn: String? = null + private var listener: OnDialogButtonClickListener? = null + + init { + this.ctx = builder.mContext + this.title = builder.title + this.hint = builder.hint + this.value = builder.value + this.positiveBtn = builder.positiveBtn + this.negativeBtn = builder.negativeBtn + this.listener = builder.listener + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + configDialogLayout() + setContentView(R.layout.dialog_input) + setCancelable(false) + setCanceledOnTouchOutside(false) + + dialogTitleView.text = title + dialogInputView.hint = hint!! + value.apply { + dialogInputView.setText(this) + } + + dialogCancelButton.text = negativeBtn + dialogCancelButton.setChangeAlphaWhenPress(true) + dialogCancelButton.setOnClickListener { + this.dismiss() + listener?.onCancelClick() + } + + dialogConfirmButton.text = positiveBtn + dialogConfirmButton.setChangeAlphaWhenPress(true) + dialogConfirmButton.setOnClickListener { + val inputValue = dialogInputView.text.toString().trim() + if (inputValue.isEmpty()) { + ToastHelper.showToast("什么都没输入,请重新输入", ToastHelper.WARING) + return@setOnClickListener + } + this.dismiss() + listener?.onConfirmClick(inputValue) + } + } + + private fun configDialogLayout() { + window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) + window?.decorView?.setBackgroundColor(Color.TRANSPARENT) + val params: WindowManager.LayoutParams? = window?.attributes + params?.width = QMUIDisplayHelper.dp2px(ctx, 280) + params?.height = WindowManager.LayoutParams.WRAP_CONTENT + window?.attributes = params + } + + class Builder { + var mContext: Context? = null + var title: String? = null + var hint: String? = null + var value: String? = null + var positiveBtn: String? = null + var negativeBtn: String? = null + var listener: OnDialogButtonClickListener? = null + + fun setContext(context: Context?): Builder { + mContext = context + return this + } + + fun setTitle(title: String?): Builder { + this.title = title + return this + } + + fun setHintText(hint: String?): Builder { + this.hint = hint + return this + } + + fun setDefaultValue(value: String?): Builder { + this.value = value + return this + } + + fun setPositiveButton(name: String?): Builder { + positiveBtn = name + return this + } + + fun setNegativeButton(name: String?): Builder { + negativeBtn = name + return this + } + + fun setOnDialogClickListener(listener: OnDialogButtonClickListener): Builder { + this.listener = listener + return this + } + + fun build(): InputDialog { + return InputDialog(this) + } + } + + interface OnDialogButtonClickListener { + fun onCancelClick() + + fun onConfirmClick(input: String) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java deleted file mode 100644 index a5f468d..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ /dev/null @@ -1,458 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.bean.CaseNextNodeBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl; -import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl; -import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailHandleView; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.mvp.view.ICaseNextNodeView; -import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.ui.fragment.check.CaseCheckFragment; -import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.luck.picture.lib.PictureSelector; -import com.luck.picture.lib.config.PictureConfig; -import com.luck.picture.lib.entity.LocalMedia; -import com.luck.picture.lib.tools.PictureFileUtils; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.dialog.QMUIDialog; -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, - IUploadFileView, ICaseNextNodeView, ICaseDetailHandleView { - - private Context context = this; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.caseHandleResultView) - TextView caseHandleResultView; - @BindView(R.id.caseHandleTimeView) - TextView caseHandleTimeView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.addImageView) - ImageView addImageView; - @BindView(R.id.caseCheckOptView) - TextView caseCheckOptView; - @BindView(R.id.caseCheckStatusView) - TextView caseCheckStatusView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private CaseDetailPresenterImpl caseDetailPresenter; - private UploadImagePresenterImpl uploadImagePresenter; - private CaseNextNodePresenterImpl caseNextNodePresenter; - private CaseHandlePresenterImpl caseHandlePresenter; - - private String id; - private String changeState; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private ArrayList realPaths = new ArrayList<>();//真实图片路径 - private List mediaList = new ArrayList<>();//上传到服务器的数据集 - private QMUITipDialog submitDialog; - private ImageGridViewAdapter checkImageAdapter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_check_detail; - } - - @Override - protected String setTitleName() { - return "案卷核查"; - } - - @Override - public void initData() { - id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - - uploadImagePresenter = new UploadImagePresenterImpl(this); - caseNextNodePresenter = new CaseNextNodePresenterImpl(this); - caseHandlePresenter = new CaseHandlePresenterImpl(this); - submitDialog = new QMUITipDialog.Builder(this) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord("处理中,请稍后") - .create(); - checkImageAdapter = new ImageGridViewAdapter(this); - checkGridView.setAdapter(checkImageAdapter); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.addImageView: - new QMUIDialog.MenuDialogBuilder(this) - .addItem("相册中选取", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.selectPicture(CaseCheckDetailActivity.this); - } - }) - .addItem("相机拍照", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.takePicture(CaseCheckDetailActivity.this); - } - }) - .create().show(); - break; - case R.id.caseCheckLayout: - caseNextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); - break; - case R.id.submitButton: - submitCase();//案卷提交 - break; - default: - break; - } - } - - private void submitCase() { - String remarks = caseCheckOptView.getText().toString(); - if (TextUtils.isEmpty(remarks)) { - ToastHelper.showToast("核查意见不能为空", ToastHelper.WARING); - return; - } - if (TextUtils.isEmpty(changeState)) { - ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); - return; - } - if (checkImageAdapter.getCount() != 2) { - ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); - return; - } - caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), - changeState, remarks, StringHelper.reformatURL(mediaList)); - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - switch (requestCode) { - case PictureConfig.CHOOSE_REQUEST: - List selectList = PictureSelector.obtainMultipleResult(data); - for (LocalMedia media : selectList) { - File file = new File(media.getCompressPath()); - if (file.length() <= Constant.IMAGE_MINUS_SIZE) { - ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); - continue; - } - uploadImagePresenter.onReadyRetrofitRequest(file); - } - break; - case PictureConfig.REQUEST_CAMERA: - LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); - break; - default: - break; - } - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - - /** - * 图片 - * */ - //核实照片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - - //处理照片 - String processImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(processImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = processImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - caseHandleResultView.setText(data.getProcessRemarks().equals("") ? "无处理意见" : data.getProcessRemarks()); - //TODO 服务器返回数据缺少此字段,暂时注掉 -// caseHandleTimeView.setText(); - } - } - - @Override - public void showProgress() { - submitDialog.show(); - } - - @Override - public void hideProgress() { - submitDialog.dismiss(); - } - - @Override - public void obtainCaseHandleResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("案卷核查提交成功", ToastHelper.SUCCESS); - //案卷办完以后通知待办和已办刷新数据 - CaseCheckFragment.sendEmptyMessage(Constant.CASE_CHECK_OK); - CaseCheckedFragment.sendEmptyMessage(Constant.CASE_CHECK_OK); - finish(); - } else { - ToastHelper.showToast("案卷核查提交失败,请检查", ToastHelper.ERROR); - } - } - - @Override - public void obtainUploadAudioResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainUploadImageResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - PictureFileUtils.deleteAllCacheDirFile(this); - /** - * 系统路径static拼接图片返回路径 - * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg - */ - //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg - int sumItemCount = checkImageAdapter.getCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 2) { - String url = resultBean.getData(); - mediaList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - if (realPaths.size() == 2) { - addImageView.setVisibility(View.GONE); - } - checkImageAdapter.setImageList(realPaths); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, realPaths); - } - }); - //删除按钮点击事件 - checkImageAdapter.isDeleteVisible(true); - checkImageAdapter.setOnDeleteClickListener(new ImageGridViewAdapter.OnDeleteItemClickListener() { - @Override - public void onClick(int position) { - mediaList.remove(position); - realPaths.remove(position); - checkImageAdapter.setImageList(realPaths); - if (realPaths.size() != 2) { - addImageView.setVisibility(View.VISIBLE); - } - } - }); - } else { - ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); - } - } - } - - @Override - public void obtainUploadVideoResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainNextNodeData(CaseNextNodeBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("核实情况"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - caseCheckStatusView.setText(dataBean.getNextOperation()); - caseCheckOptView.setText(dataBean.getNextOperation()); - changeState = String.valueOf(dataBean.getNextState()); - } - }).build().show(); - } else { - ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("上传失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (uploadImagePresenter != null) { - uploadImagePresenter.disposeRetrofitRequest(); - } - if (caseNextNodePresenter != null) { - caseNextNodePresenter.disposeRetrofitRequest(); - } - if (caseHandlePresenter != null) { - caseHandlePresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.kt new file mode 100644 index 0000000..c7d9d48 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.kt @@ -0,0 +1,340 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.bean.CaseNextNodeBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl +import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailHandleView +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.mvp.view.ICaseNextNodeView +import com.casic.dcms.mvp.view.IUploadFileView +import com.casic.dcms.ui.fragment.check.CaseCheckFragment +import com.casic.dcms.ui.fragment.check.CaseCheckedFragment +import com.casic.dcms.utils.* +import com.luck.picture.lib.PictureSelector +import com.luck.picture.lib.config.PictureConfig +import com.luck.picture.lib.tools.PictureFileUtils +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import com.qmuiteam.qmui.widget.dialog.QMUIDialog.MenuDialogBuilder +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog +import kotlinx.android.synthetic.main.activity_case_check_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import java.io.File +import java.util.* + +class CaseCheckDetailActivity : BaseCaseActivity(), ICaseDetailView, + IUploadFileView, ICaseNextNodeView, ICaseDetailHandleView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private lateinit var uploadImagePresenter: UploadImagePresenterImpl + private lateinit var caseNextNodePresenter: CaseNextNodePresenterImpl + private lateinit var caseHandlePresenter: CaseHandlePresenterImpl + private lateinit var id: String + private lateinit var changeState: String + private var submitDialog: QMUITipDialog? = null + private var checkImageAdapter: ImageGridViewAdapter? = null + private var data = CaseDetailBean.DataBean() + private val realPaths = ArrayList() //真实图片路径 + private val mediaList: MutableList = ArrayList() //上传到服务器的数据集 + + override fun initLayoutView(): Int = R.layout.activity_case_check_detail + + override fun setTitleName(): String { + return "案卷核查" + } + + override fun initData() { + id = intent.getStringExtra("id")!! + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + uploadImagePresenter = UploadImagePresenterImpl(this) + caseNextNodePresenter = CaseNextNodePresenterImpl(this) + caseHandlePresenter = CaseHandlePresenterImpl(this) + submitDialog = QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create() + checkImageAdapter = ImageGridViewAdapter(this) + checkGridView.adapter = checkImageAdapter + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + + addImageView.setOnClickListener { + MenuDialogBuilder(this) + .addItem("相册中选取") { dialog, which -> + dialog.dismiss() + OtherUtils.selectPicture(this@CaseCheckDetailActivity) + } + .addItem("相机拍照") { dialog, which -> + dialog.dismiss() + OtherUtils.takePicture(this@CaseCheckDetailActivity) + } + .create().show() + } + + caseCheckLayout.setOnClickListener { + caseNextNodePresenter.onReadyRetrofitRequest(data.caseState.toString()) + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + //案卷提交 + val remarks: String = caseCheckOptView.text.toString() + if (TextUtils.isEmpty(remarks)) { + ToastHelper.showToast("核查意见不能为空", ToastHelper.WARING) + return@setOnClickListener + } + if (TextUtils.isEmpty(changeState)) { + ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING) + return@setOnClickListener + } + if (checkImageAdapter!!.count != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING) + return@setOnClickListener + } + caseHandlePresenter.onReadyRetrofitRequest( + data.processId, id, data.caseState.toString(), + changeState, remarks, StringHelper.reformatURL(mediaList) + ) + } + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (resultCode == RESULT_OK) { + when (requestCode) { + PictureConfig.CHOOSE_REQUEST -> { + val selectList = PictureSelector.obtainMultipleResult(data) + for (media in selectList) { + val file = File(media.compressPath) + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR) + continue + } + uploadImagePresenter.onReadyRetrofitRequest(file) + } + } + PictureConfig.REQUEST_CAMERA -> { + val localMedia = PictureSelector.obtainMultipleResult(data)[0] + uploadImagePresenter.onReadyRetrofitRequest(File(localMedia.compressPath)) + } + } + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = + if (data.communityName == "") "无更详细社区信息" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + /** + * 图片 + */ + //核实照片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + + //处理照片 + val processImages = data.fileIdProcess + if (!TextUtils.isEmpty(processImages)) { + val urls = ArrayList() + val split = processImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + caseHandleResultView.text = + if (data.processRemarks == "") "无处理意见" else data.processRemarks + //TODO 服务器返回数据缺少此字段,暂时注掉 +// caseHandleTimeView.setText(); + } + } + + override fun showProgress() { + submitDialog!!.show() + } + + override fun hideProgress() { + submitDialog!!.dismiss() + } + + override fun obtainCaseHandleResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + ToastHelper.showToast("案卷核查提交成功", ToastHelper.SUCCESS) + //案卷办完以后通知待办和已办刷新数据 + CaseCheckFragment.sendEmptyMessage(Constant.CASE_CHECK_OK) + CaseCheckedFragment.sendEmptyMessage(Constant.CASE_CHECK_OK) + finish() + } else { + ToastHelper.showToast("案卷核查提交失败,请检查", ToastHelper.ERROR) + } + } + + override fun obtainUploadAudioResult(resultBean: ActionResultBean) {} + override fun obtainUploadImageResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + PictureFileUtils.deleteAllCacheDirFile(this) + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + val sumItemCount = checkImageAdapter!!.count + 1 //每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + val url = resultBean.data + mediaList.add(url) + realPaths.add(StringHelper.appendCompleteURL(url)) + if (realPaths.size == 2) { + addImageView.visibility = View.GONE + } + checkImageAdapter!!.setImageList(realPaths) + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, realPaths) + } + //删除按钮点击事件 + checkImageAdapter!!.isDeleteVisible(true) + checkImageAdapter!!.setOnDeleteClickListener { position -> + mediaList.removeAt(position) + realPaths.removeAt(position) + checkImageAdapter!!.setImageList(realPaths) + if (realPaths.size != 2) { + addImageView.visibility = View.VISIBLE + } + } + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING) + } + } + } + + override fun obtainUploadVideoResult(resultBean: ActionResultBean) {} + + override fun obtainNextNodeData(resultBean: CaseNextNodeBean) { + if (resultBean.isSuccess) { + val dataBeans = resultBean.data + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("核实情况") + for (dataBean in dataBeans) { + sheetBuilder.addItem(dataBean.nextOperation) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + val dataBean = dataBeans[position] + caseCheckStatusView.text = dataBean.nextOperation + caseCheckOptView.text = dataBean.nextOperation + changeState = dataBean.nextState.toString() + }.build().show() + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR) + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("上传失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + uploadImagePresenter.disposeRetrofitRequest() + caseNextNodePresenter.disposeRetrofitRequest() + caseHandlePresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java deleted file mode 100644 index 996401c..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ /dev/null @@ -1,460 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.EditText; -import android.widget.GridView; -import android.widget.ImageView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.annotation.Nullable; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.bean.CaseNextNodeBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl; -import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl; -import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailHandleView; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.mvp.view.ICaseNextNodeView; -import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.ui.fragment.handle.CaseHandledFragment; -import com.casic.dcms.ui.fragment.handle.CaseTodoFragment; -import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; -import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.luck.picture.lib.PictureSelector; -import com.luck.picture.lib.config.PictureConfig; -import com.luck.picture.lib.entity.LocalMedia; -import com.luck.picture.lib.tools.PictureFileUtils; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.dialog.QMUIDialog; -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandleDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView, ICaseNextNodeView, IUploadFileView, ICaseDetailHandleView { - - private Context context = this; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.caseHandleResultView) - TextView caseHandleResultView; - @BindView(R.id.imageLayout) - RelativeLayout imageLayout; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.addImageView) - ImageView addImageView; - @BindView(R.id.reasonLayout) - RelativeLayout reasonLayout; - @BindView(R.id.caseReasonView) - EditText caseReasonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private String title; - private String id; - private String changeState; - private String caseReason; - private String approvalResult; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private ArrayList realPaths = new ArrayList<>();//真实图片路径 - private List mediaList = new ArrayList<>();//上传到服务器的数据集 - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseNextNodePresenterImpl caseNextNodePresenter; - private UploadImagePresenterImpl uploadImagePresenter; - private CaseHandlePresenterImpl caseHandlePresenter; - private QMUITipDialog submitDialog; - private ImageGridViewAdapter handleImageAdapter;//处理图片的adapter - - @Override - public int initLayoutView() { - return R.layout.activity_case_handle_detail; - } - - @Override - protected String setTitleName() { - return title; - } - - @Override - public void initData() { - title = getIntent().getStringExtra("title"); - id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - - caseNextNodePresenter = new CaseNextNodePresenterImpl(this); - uploadImagePresenter = new UploadImagePresenterImpl(this); - caseHandlePresenter = new CaseHandlePresenterImpl(this); - submitDialog = new QMUITipDialog.Builder(this) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord("处理中,请稍后") - .create(); - handleImageAdapter = new ImageGridViewAdapter(this); - handleGridView.setAdapter(handleImageAdapter); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - caseHandleView.setText(data.getCaseStateName().equals("") ? "无处理意见" : data.getCaseStateName()); - - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - } - } - - @Override - public void obtainNextNodeData(CaseNextNodeBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("处理结果"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - String nextOperation = dataBean.getNextOperation(); - caseHandleResultView.setText(nextOperation); - if (nextOperation.equals("处理完成")) { - imageLayout.setVisibility(View.VISIBLE); - reasonLayout.setVisibility(View.GONE); - } else { - imageLayout.setVisibility(View.GONE); - reasonLayout.setVisibility(View.VISIBLE); - } - changeState = String.valueOf(dataBean.getNextState()); - approvalResult = dataBean.getApprovalResult(); - } - }).build().show(); - } else { - ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); - } - } - - @OnClick({R.id.locationMapView, R.id.caseHandleResultLayout, R.id.addImageView, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.caseHandleResultLayout: - caseNextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); - break; - case R.id.addImageView: - new QMUIDialog.MenuDialogBuilder(this) - .addItem("相册中选取", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.selectPicture(CaseHandleDetailActivity.this); - } - }) - .addItem("相机拍照", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.takePicture(CaseHandleDetailActivity.this); - } - }) - .create().show(); - break; - case R.id.submitButton: - submitCase();//案卷提交 - break; - default: - break; - } - } - - private void submitCase() { - String handleResult = caseHandleResultView.getText().toString(); - if (handleResult.equals("")) { - ToastHelper.showToast("还未选择处理结果", ToastHelper.WARING); - return; - } - if (handleResult.equals("处理完成")) { - //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getCount() != 2) { - ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); - return; - } - } - if (handleResult.equals("申请延期") || handleResult.equals("申请调整")) { - caseReason = caseReasonView.getText().toString(); - if (TextUtils.isEmpty(caseReason)) { - ToastHelper.showToast("延期/调整的原因必须填写", ToastHelper.WARING); - return; - } - } - caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), - changeState, caseReason, StringHelper.reformatURL(mediaList), approvalResult); - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - switch (requestCode) { - case PictureConfig.CHOOSE_REQUEST: - List selectList = PictureSelector.obtainMultipleResult(data); - for (LocalMedia media : selectList) { - File file = new File(media.getCompressPath()); - if (file.length() <= Constant.IMAGE_MINUS_SIZE) { - ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); - continue; - } - uploadImagePresenter.onReadyRetrofitRequest(file); - } - break; - case PictureConfig.REQUEST_CAMERA: - LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); - break; - default: - break; - } - } - } - - @Override - public void showProgress() { - submitDialog.show(); - } - - @Override - public void hideProgress() { - submitDialog.dismiss(); - } - - @Override - public void obtainUploadAudioResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainUploadImageResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - PictureFileUtils.deleteAllCacheDirFile(this); - /** - * 系统路径static拼接图片返回路径 - * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg - */ - //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg - int sumItemCount = handleImageAdapter.getCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 2) { - String url = resultBean.getData(); - mediaList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - if (realPaths.size() == 2) { - addImageView.setVisibility(View.GONE); - } - handleImageAdapter.setImageList(realPaths); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, realPaths); - } - }); - //删除按钮点击事件 - handleImageAdapter.isDeleteVisible(true); - handleImageAdapter.setOnDeleteClickListener(new ImageGridViewAdapter.OnDeleteItemClickListener() { - @Override - public void onClick(int position) { - mediaList.remove(position); - realPaths.remove(position); - handleImageAdapter.setImageList(realPaths); - if (realPaths.size() != 2) { - addImageView.setVisibility(View.VISIBLE); - } - } - }); - } else { - ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); - } - } - } - - @Override - public void obtainUploadVideoResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - public void obtainCaseHandleResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); - switch (title) { - case "超时案卷": - OvertimeCaseFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - break; - case "紧急案卷": - UrgentCaseFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - break; - case "待办案卷": - CaseTodoFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - break; - } - finish(); - } else { - ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (caseNextNodePresenter != null) { - caseNextNodePresenter.disposeRetrofitRequest(); - } - if (uploadImagePresenter != null) { - uploadImagePresenter.disposeRetrofitRequest(); - } - if (caseHandlePresenter != null) { - caseHandlePresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.kt new file mode 100644 index 0000000..c17a12d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.kt @@ -0,0 +1,341 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.bean.CaseNextNodeBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl +import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailHandleView +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.mvp.view.ICaseNextNodeView +import com.casic.dcms.mvp.view.IUploadFileView +import com.casic.dcms.ui.fragment.handle.CaseHandledFragment +import com.casic.dcms.ui.fragment.handle.CaseTodoFragment +import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment +import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment +import com.casic.dcms.utils.* +import com.luck.picture.lib.PictureSelector +import com.luck.picture.lib.config.PictureConfig +import com.luck.picture.lib.tools.PictureFileUtils +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import com.qmuiteam.qmui.widget.dialog.QMUIDialog.MenuDialogBuilder +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog +import kotlinx.android.synthetic.main.activity_case_handle_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import java.io.File +import java.util.* + +class CaseHandleDetailActivity : BaseCaseActivity(), ICaseDetailView, ICaseNextNodeView, + IUploadFileView, ICaseDetailHandleView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private lateinit var caseNextNodePresenter: CaseNextNodePresenterImpl + private lateinit var uploadImagePresenter: UploadImagePresenterImpl + private lateinit var caseHandlePresenter: CaseHandlePresenterImpl + private lateinit var title: String + private lateinit var id: String + private lateinit var changeState: String + private lateinit var caseReason: String + private lateinit var approvalResult: String + private var submitDialog: QMUITipDialog? = null + private var handleImageAdapter: ImageGridViewAdapter? = null + private var data = CaseDetailBean.DataBean() + private val realPaths = ArrayList() //真实图片路径 + private val mediaList: MutableList = ArrayList() //上传到服务器的数据集 + + override fun initLayoutView(): Int = R.layout.activity_case_handle_detail + + override fun setTitleName(): String { + return title + } + + override fun initData() { + title = intent.getStringExtra("title")!! + id = intent.getStringExtra("id")!! + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + caseNextNodePresenter = CaseNextNodePresenterImpl(this) + uploadImagePresenter = UploadImagePresenterImpl(this) + caseHandlePresenter = CaseHandlePresenterImpl(this) + submitDialog = QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create() + handleImageAdapter = ImageGridViewAdapter(this) + handleGridView.adapter = handleImageAdapter + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + + caseHandleResultLayout.setOnClickListener { + caseNextNodePresenter.onReadyRetrofitRequest(data.caseState.toString()) + } + + addImageView.setOnClickListener { + MenuDialogBuilder(this) + .addItem("相册中选取") { dialog, which -> + dialog.dismiss() + OtherUtils.selectPicture(this@CaseHandleDetailActivity) + } + .addItem("相机拍照") { dialog, which -> + dialog.dismiss() + OtherUtils.takePicture(this@CaseHandleDetailActivity) + } + .create().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + val handleResult: String = caseHandleResultView.text.toString() + if (handleResult == "") { + ToastHelper.showToast("还未选择处理结果", ToastHelper.WARING) + return@setOnClickListener + } + if (handleResult == "处理完成") { + //选择处理完成时,处理图片必传。至少一张,最多两张 + if (handleImageAdapter!!.count != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING) + return@setOnClickListener + } + } + if (handleResult == "申请延期" || handleResult == "申请调整") { + caseReason = caseReasonView.text.toString() + if (TextUtils.isEmpty(caseReason)) { + ToastHelper.showToast("延期/调整的原因必须填写", ToastHelper.WARING) + return@setOnClickListener + } + } + caseHandlePresenter.onReadyRetrofitRequest( + data.processId, id, data.caseState.toString(), + changeState, caseReason, StringHelper.reformatURL(mediaList), approvalResult + ) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = + if (data.communityName == "") "无更详细社区信息" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + caseHandleView.text = if (data.caseStateName == "") "无处理意见" else data.caseStateName + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + } + } + + override fun obtainNextNodeData(resultBean: CaseNextNodeBean) { + if (resultBean.isSuccess) { + val dataBeans = resultBean.data + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("处理结果") + for (dataBean in dataBeans) { + sheetBuilder.addItem(dataBean.nextOperation) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + val dataBean = dataBeans[position] + val nextOperation = dataBean.nextOperation + caseHandleResultView.text = nextOperation + if (nextOperation == "处理完成") { + imageLayout.visibility = View.VISIBLE + reasonLayout.visibility = View.GONE + } else { + imageLayout.visibility = View.GONE + reasonLayout.visibility = View.VISIBLE + } + changeState = dataBean.nextState.toString() + approvalResult = dataBean.approvalResult + }.build().show() + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR) + } + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (resultCode == RESULT_OK) { + when (requestCode) { + PictureConfig.CHOOSE_REQUEST -> { + val selectList = PictureSelector.obtainMultipleResult(data) + for (media in selectList) { + val file = File(media.compressPath) + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR) + continue + } + uploadImagePresenter.onReadyRetrofitRequest(file) + } + } + PictureConfig.REQUEST_CAMERA -> { + val localMedia = PictureSelector.obtainMultipleResult(data)[0] + uploadImagePresenter.onReadyRetrofitRequest(File(localMedia.compressPath)) + } + } + } + } + + override fun showProgress() { + submitDialog!!.show() + } + + override fun hideProgress() { + submitDialog!!.dismiss() + } + + override fun obtainUploadAudioResult(resultBean: ActionResultBean) {} + override fun obtainUploadImageResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + PictureFileUtils.deleteAllCacheDirFile(this) + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + val sumItemCount = handleImageAdapter!!.count + 1 //每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + val url = resultBean.data + mediaList.add(url) + realPaths.add(StringHelper.appendCompleteURL(url)) + if (realPaths.size == 2) { + addImageView.visibility = View.GONE + } + handleImageAdapter!!.setImageList(realPaths) + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, realPaths) + } + //删除按钮点击事件 + handleImageAdapter!!.isDeleteVisible(true) + handleImageAdapter!!.setOnDeleteClickListener { position -> + mediaList.removeAt(position) + realPaths.removeAt(position) + handleImageAdapter!!.setImageList(realPaths) + if (realPaths.size != 2) { + addImageView.visibility = View.VISIBLE + } + } + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING) + } + } + } + + override fun obtainUploadVideoResult(resultBean: ActionResultBean) {} + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun obtainCaseHandleResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS) + when (title) { + "超时案卷" -> { + OvertimeCaseFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + } + "紧急案卷" -> { + UrgentCaseFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + } + "待办案卷" -> { + CaseTodoFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + } + } + finish() + } else { + ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR) + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + caseNextNodePresenter.disposeRetrofitRequest() + uploadImagePresenter.disposeRetrofitRequest() + caseHandlePresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java deleted file mode 100644 index 8b08041..0000000 --- a/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java +++ /dev/null @@ -1,289 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.EditText; -import android.widget.GridView; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.mvp.presenter.ShopChangePresenterImpl; -import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; -import com.casic.dcms.mvp.view.IShopInfoChangeView; -import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.luck.picture.lib.PictureSelector; -import com.luck.picture.lib.config.PictureConfig; -import com.luck.picture.lib.entity.LocalMedia; -import com.luck.picture.lib.tools.PictureFileUtils; -import com.qmuiteam.qmui.widget.dialog.QMUIDialog; -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; - -public class ChangeShopInfoActivity extends BaseCaseActivity implements View.OnClickListener, IUploadFileView, - IShopInfoChangeView { - - private static final String TAG = "ChangeShopInfoActivity"; - private Context context = this; - @BindView(R.id.shopView) - TextView shopView; - @BindView(R.id.communityNameView) - TextView communityNameView; - @BindView(R.id.shopLocationView) - EditText shopLocationView; - @BindView(R.id.shopKeeperView) - EditText shopKeeperView; - @BindView(R.id.phoneNumberView) - EditText phoneNumberView; - @BindView(R.id.selectedGridViewView) - GridView selectedGridViewView; - @BindView(R.id.addImageView) - ImageView addImageView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private UploadImagePresenterImpl uploadImagePresenter; - private ShopChangePresenterImpl shopChangePresenter; - private QMUITipDialog submitDialog; - private ImageGridViewAdapter imageAdapter; - private String merchantId;//商户id - private String merchantName; - private ArrayList realPaths = new ArrayList<>();//真实图片路径 - private List mediaList = new ArrayList<>();//上传到服务器的数据集 - - @Override - protected String setTitleName() { - return "商铺变更"; - } - - @Override - public int initLayoutView() { - return R.layout.activity_change_shop; - } - - @Override - public void initData() { - uploadImagePresenter = new UploadImagePresenterImpl(this); - shopChangePresenter = new ShopChangePresenterImpl(this); - submitDialog = new QMUITipDialog.Builder(this) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord("处理中,请稍后") - .create(); - imageAdapter = new ImageGridViewAdapter(this); - selectedGridViewView.setAdapter(imageAdapter); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @OnClick({R.id.shopLayout, R.id.addImageView, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.shopLayout: - Intent intent = new Intent(this, ArcGISMapActivity.class); - intent.putExtra("type", "商铺变更"); - startActivityForResult(intent, Constant.REQUEST_MAP_CODE); - break; - case R.id.addImageView: - new QMUIDialog.MenuDialogBuilder(this) - .addItem("相册中选取", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.selectPicture(ChangeShopInfoActivity.this); - } - }) - .addItem("相机拍照", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.takePicture(ChangeShopInfoActivity.this); - } - }) - .setCanceledOnTouchOutside(false) - .create().show(); - break; - case R.id.submitButton: - submitCase(); - break; - } - } - - private void submitCase() { - String phoneNumber = phoneNumberView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(phoneNumber)) { - ToastHelper.showToast("电话号码还未填写", ToastHelper.WARING); - return; - } - if (StringHelper.isPhoneNumber(phoneNumber)) { - String shopLocation = shopLocationView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(shopLocation)) { - ToastHelper.showToast("店铺地址还未填写", ToastHelper.WARING); - return; - } - String shopKeeper = shopKeeperView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(shopKeeper)) { - ToastHelper.showToast("店主名还未填写", ToastHelper.WARING); - return; - } - if (imageAdapter.getCount() != 2) { - ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING); - return; - } - shopChangePresenter.onReadyRetrofitRequest(merchantId, merchantName, shopKeeper, phoneNumber, StringHelper.reformatURL(mediaList)); - } else { - ToastHelper.showToast("电话号码格式不对", ToastHelper.WARING); - } - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - switch (requestCode) { - case Constant.REQUEST_MAP_CODE: - if (data == null) { - return; - } - String community = data.getStringExtra("community"); - merchantName = data.getStringExtra("shopName"); - merchantId = data.getStringExtra("shopID"); - - communityNameView.setText(community); - shopView.setText(merchantName); - shopView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - break; - case PictureConfig.CHOOSE_REQUEST: - List selectList = PictureSelector.obtainMultipleResult(data); - for (LocalMedia media : selectList) { - File file = new File(media.getCompressPath()); - if (file.length() <= Constant.IMAGE_MINUS_SIZE) { - ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); - continue; - } - uploadImagePresenter.onReadyRetrofitRequest(file); - } - break; - case PictureConfig.REQUEST_CAMERA: - LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); - break; - default: - break; - } - } - } - - @Override - public void showProgress() { - submitDialog.show(); - } - - @Override - public void hideProgress() { - submitDialog.dismiss(); - } - - @Override - public void obtainChangeResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("提交成功", ToastHelper.SUCCESS); - finish(); - } else { - ToastHelper.showToast("提交失败,请重试", ToastHelper.ERROR); - } - } - - @Override - public void obtainUploadAudioResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainUploadImageResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - PictureFileUtils.deleteAllCacheDirFile(this); - /** - * 系统路径static拼接图片返回路径 - * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg - */ - //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg - int sumItemCount = imageAdapter.getCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 2) { - String url = resultBean.getData(); - mediaList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - if (realPaths.size() == 2) { - addImageView.setVisibility(View.GONE); - } - imageAdapter.setImageList(realPaths); - //九宫格点击事件 - selectedGridViewView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, realPaths); - } - }); - //删除按钮点击事件 - imageAdapter.setOnDeleteClickListener(new ImageGridViewAdapter.OnDeleteItemClickListener() { - @Override - public void onClick(int position) { - mediaList.remove(position); - realPaths.remove(position); - imageAdapter.setImageList(realPaths); - if (realPaths.size() != 2) { - addImageView.setVisibility(View.VISIBLE); - } - } - }); - } else { - ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); - } - } - } - - @Override - public void obtainUploadVideoResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (uploadImagePresenter != null) { - uploadImagePresenter.disposeRetrofitRequest(); - } - if (shopChangePresenter != null) { - shopChangePresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.kt b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.kt new file mode 100644 index 0000000..4a9e91c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.kt @@ -0,0 +1,217 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.ShopChangePresenterImpl +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl +import com.casic.dcms.mvp.view.IShopInfoChangeView +import com.casic.dcms.mvp.view.IUploadFileView +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.luck.picture.lib.PictureSelector +import com.luck.picture.lib.config.PictureConfig +import com.luck.picture.lib.tools.PictureFileUtils +import com.qmuiteam.qmui.widget.dialog.QMUIDialog.MenuDialogBuilder +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog +import kotlinx.android.synthetic.main.activity_change_shop.* +import java.io.File +import java.util.* + +class ChangeShopInfoActivity : BaseCaseActivity(), IUploadFileView, IShopInfoChangeView { + + private lateinit var uploadImagePresenter: UploadImagePresenterImpl + private lateinit var shopChangePresenter: ShopChangePresenterImpl + private lateinit var merchantId: String //商户id + private lateinit var merchantName: String + private var submitDialog: QMUITipDialog? = null + private var imageAdapter: ImageGridViewAdapter? = null + private val realPaths = ArrayList() //真实图片路径 + private val mediaList: MutableList = ArrayList() //上传到服务器的数据集 + + override fun setTitleName(): String { + return "商铺变更" + } + + override fun initLayoutView(): Int { + return R.layout.activity_change_shop + } + + override fun initData() { + uploadImagePresenter = UploadImagePresenterImpl(this) + shopChangePresenter = ShopChangePresenterImpl(this) + submitDialog = QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create() + imageAdapter = ImageGridViewAdapter(this) + selectedGridViewView.adapter = imageAdapter + } + + override fun initEvent() { + shopLayout.setOnClickListener { + val intent = Intent(this, ArcGISMapActivity::class.java) + intent.putExtra("type", "商铺变更") + startActivityForResult(intent, Constant.REQUEST_MAP_CODE) + } + + addImageView.setOnClickListener { + MenuDialogBuilder(this) + .addItem("相册中选取") { dialog, which -> + dialog.dismiss() + OtherUtils.selectPicture(this) + } + .addItem("相机拍照") { dialog, which -> + dialog.dismiss() + OtherUtils.takePicture(this) + } + .setCanceledOnTouchOutside(false) + .create().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + val phoneNumber: String = phoneNumberView.text.toString().trim().replace(" ", "") + if (TextUtils.isEmpty(phoneNumber)) { + ToastHelper.showToast("电话号码还未填写", ToastHelper.WARING) + return@setOnClickListener + } + if (StringHelper.isPhoneNumber(phoneNumber)) { + val shopLocation: String = + shopLocationView.text.toString().trim().replace(" ", "") + if (TextUtils.isEmpty(shopLocation)) { + ToastHelper.showToast("店铺地址还未填写", ToastHelper.WARING) + return@setOnClickListener + } + val shopKeeper: String = shopKeeperView.text.toString().trim().replace(" ", "") + if (TextUtils.isEmpty(shopKeeper)) { + ToastHelper.showToast("店主名还未填写", ToastHelper.WARING) + return@setOnClickListener + } + if (imageAdapter!!.count != 2) { + ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING) + return@setOnClickListener + } + shopChangePresenter.onReadyRetrofitRequest( + merchantId, + merchantName, + shopKeeper, + phoneNumber, + StringHelper.reformatURL(mediaList) + ) + } else { + ToastHelper.showToast("电话号码格式不对", ToastHelper.WARING) + } + } + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (resultCode == RESULT_OK) { + when (requestCode) { + Constant.REQUEST_MAP_CODE -> { + if (data == null) { + return + } + val community = data.getStringExtra("community") + merchantName = data.getStringExtra("shopName")!! + merchantId = data.getStringExtra("shopID")!! + communityNameView.text = community + shopView.text = merchantName + shopView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + } + PictureConfig.CHOOSE_REQUEST -> { + val selectList = PictureSelector.obtainMultipleResult(data) + for (media in selectList) { + val file = File(media.compressPath) + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR) + continue + } + uploadImagePresenter.onReadyRetrofitRequest(file) + } + } + PictureConfig.REQUEST_CAMERA -> { + val localMedia = PictureSelector.obtainMultipleResult(data)[0] + uploadImagePresenter.onReadyRetrofitRequest(File(localMedia.compressPath)) + } + } + } + } + + override fun showProgress() { + submitDialog!!.show() + } + + override fun hideProgress() { + submitDialog!!.dismiss() + } + + override fun obtainChangeResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + ToastHelper.showToast("提交成功", ToastHelper.SUCCESS) + finish() + } else { + ToastHelper.showToast("提交失败,请重试", ToastHelper.ERROR) + } + } + + override fun obtainUploadAudioResult(resultBean: ActionResultBean) {} + + override fun obtainUploadImageResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + PictureFileUtils.deleteAllCacheDirFile(this) + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + val sumItemCount = imageAdapter!!.count + 1 //每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + val url = resultBean.data + mediaList.add(url) + realPaths.add(StringHelper.appendCompleteURL(url)) + if (realPaths.size == 2) { + addImageView.visibility = View.GONE + } + imageAdapter!!.setImageList(realPaths) + //九宫格点击事件 + selectedGridViewView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, realPaths) + } + //删除按钮点击事件 + imageAdapter!!.setOnDeleteClickListener { position -> + mediaList.removeAt(position) + realPaths.removeAt(position) + imageAdapter!!.setImageList(realPaths) + if (realPaths.size != 2) { + addImageView.visibility = View.VISIBLE + } + } + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING) + } + } + } + + override fun obtainUploadVideoResult(resultBean: ActionResultBean) {} + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + uploadImagePresenter.disposeRetrofitRequest() + shopChangePresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt index d2425dc..9e86954 100644 --- a/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt +++ b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt @@ -79,20 +79,27 @@ } changeServerConfigButton!!.setChangeAlphaWhenPress(true) changeServerConfigButton.setOnClickListener { - InputDialog.Builder() - .setContext(this) - .setTitle("修改服务器地址和端口") - .setOnDialogClickListener(object : InputDialog.OnDialogClickListener { - override fun onConfirmClick(serverValue: String, portValue: String) { - if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { - val serverConfig = "http:$serverValue:$portValue" - SaveKeyValues.putValue(Constant.IP_KEY, serverConfig) - ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS) - } + val defaultValue = SaveKeyValues.getValue( + Constant.IP_KEY, + "http://111.198.10.15:11409" + ) as String + InputDialog.Builder().setContext(this) + .setTitle("请输入后台服务器地址") + .setDefaultValue(defaultValue) + .setHintText("请输入服务器地址") + .setNegativeButton("取消") + .setPositiveButton("保存") + .setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener { + override fun onConfirmClick(input: String) { + SaveKeyValues.putValue(Constant.IP_KEY, input) + ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS) } - override fun onCancelClick() {} - }).build().show() + override fun onCancelClick() { + + } + }) + .build().show() } } diff --git a/app/src/main/java/com/casic/dcms/ui/WellListActivity.java b/app/src/main/java/com/casic/dcms/ui/WellListActivity.java index f9ab8ff..b23edcc 100644 --- a/app/src/main/java/com/casic/dcms/ui/WellListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WellListActivity.java @@ -157,7 +157,7 @@ @Override public void onClick(int position) { String bfzt = activity.dataBeans.get(position).getBfzt(); - String bfztName = ""; + String bfztName; if (bfzt.equals("0")) { bfztName = "布防"; bfzt = "1"; diff --git a/app/src/main/java/com/casic/dcms/widgets/InputDialog.java b/app/src/main/java/com/casic/dcms/widgets/InputDialog.java deleted file mode 100644 index 36def9c..0000000 --- a/app/src/main/java/com/casic/dcms/widgets/InputDialog.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.casic.dcms.widgets; - -import android.app.Dialog; -import android.content.Context; -import android.os.Bundle; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import com.casic.dcms.R; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -/** - * @Author: Pengxh - * @Time: 2021/4/13 13:18 - * @Email: 290677893@qq.com - **/ -public class InputDialog extends Dialog implements View.OnClickListener { - - private static final String TAG = "InputDialog"; - private String title; - private OnDialogClickListener listener; - private EditText serverView; - private EditText portView; - - private InputDialog(Builder builder) { - super(builder.mContext); - this.title = builder.title; - this.listener = builder.listener; - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.dialog_input); - initView(); - } - - private void initView() { - TextView dialogTitle = findViewById(R.id.dialogTitle); - serverView = findViewById(R.id.inputServerView); - portView = findViewById(R.id.inputPortView); - QMUIRoundButton dialogCancelButton = findViewById(R.id.dialogCancelButton); - dialogCancelButton.setChangeAlphaWhenPress(true); - dialogCancelButton.setOnClickListener(this); - - QMUIRoundButton dialogConfirmButton = findViewById(R.id.dialogConfirmButton); - dialogConfirmButton.setChangeAlphaWhenPress(true); - dialogConfirmButton.setOnClickListener(this); - - if (!TextUtils.isEmpty(title)) { - dialogTitle.setText(title); - } - } - - @Override - public void onClick(View view) { - int i = view.getId(); - if (i == R.id.dialogCancelButton) { - if (listener != null) { - listener.onCancelClick(); - } - } else if (i == R.id.dialogConfirmButton) { - if (listener != null) { - String server = serverView.getText().toString().trim(); - String port = portView.getText().toString().trim(); - listener.onConfirmClick(server, port); - } - } - this.dismiss(); - } - - public static class Builder { - private Context mContext; - private String title; - private OnDialogClickListener listener; - - public Builder setContext(Context context) { - this.mContext = context; - return this; - } - - public Builder setTitle(String title) { - this.title = title; - return this; - } - - public Builder setOnDialogClickListener(OnDialogClickListener listener) { - this.listener = listener; - return this; - } - - public InputDialog build() { - return new InputDialog(this); - } - } - - public interface OnDialogClickListener { - void onConfirmClick(String serverValue, String portValue); - - void onCancelClick(); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/widgets/InputDialog.kt b/app/src/main/java/com/casic/dcms/widgets/InputDialog.kt new file mode 100644 index 0000000..4a89ba8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/widgets/InputDialog.kt @@ -0,0 +1,135 @@ +package com.casic.dcms.widgets + +import android.app.Dialog +import android.content.Context +import android.graphics.Color +import android.graphics.drawable.ColorDrawable +import android.os.Bundle +import android.view.WindowManager +import com.casic.dcms.R +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.dialog_input.* + +/** + * @Author: Pengxh + * @Time: 2021/4/13 13:18 + * @Email: 290677893@qq.com + */ +class InputDialog private constructor(builder: Builder) : Dialog(builder.mContext!!) { + + private var ctx: Context? = null + private var title: String? = null + private var hint: String? = null + private var value: String? = null + private var positiveBtn: String? = null + private var negativeBtn: String? = null + private var listener: OnDialogButtonClickListener? = null + + init { + this.ctx = builder.mContext + this.title = builder.title + this.hint = builder.hint + this.value = builder.value + this.positiveBtn = builder.positiveBtn + this.negativeBtn = builder.negativeBtn + this.listener = builder.listener + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + configDialogLayout() + setContentView(R.layout.dialog_input) + setCancelable(false) + setCanceledOnTouchOutside(false) + + dialogTitleView.text = title + dialogInputView.hint = hint!! + value.apply { + dialogInputView.setText(this) + } + + dialogCancelButton.text = negativeBtn + dialogCancelButton.setChangeAlphaWhenPress(true) + dialogCancelButton.setOnClickListener { + this.dismiss() + listener?.onCancelClick() + } + + dialogConfirmButton.text = positiveBtn + dialogConfirmButton.setChangeAlphaWhenPress(true) + dialogConfirmButton.setOnClickListener { + val inputValue = dialogInputView.text.toString().trim() + if (inputValue.isEmpty()) { + ToastHelper.showToast("什么都没输入,请重新输入", ToastHelper.WARING) + return@setOnClickListener + } + this.dismiss() + listener?.onConfirmClick(inputValue) + } + } + + private fun configDialogLayout() { + window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) + window?.decorView?.setBackgroundColor(Color.TRANSPARENT) + val params: WindowManager.LayoutParams? = window?.attributes + params?.width = QMUIDisplayHelper.dp2px(ctx, 280) + params?.height = WindowManager.LayoutParams.WRAP_CONTENT + window?.attributes = params + } + + class Builder { + var mContext: Context? = null + var title: String? = null + var hint: String? = null + var value: String? = null + var positiveBtn: String? = null + var negativeBtn: String? = null + var listener: OnDialogButtonClickListener? = null + + fun setContext(context: Context?): Builder { + mContext = context + return this + } + + fun setTitle(title: String?): Builder { + this.title = title + return this + } + + fun setHintText(hint: String?): Builder { + this.hint = hint + return this + } + + fun setDefaultValue(value: String?): Builder { + this.value = value + return this + } + + fun setPositiveButton(name: String?): Builder { + positiveBtn = name + return this + } + + fun setNegativeButton(name: String?): Builder { + negativeBtn = name + return this + } + + fun setOnDialogClickListener(listener: OnDialogButtonClickListener): Builder { + this.listener = listener + return this + } + + fun build(): InputDialog { + return InputDialog(this) + } + } + + interface OnDialogButtonClickListener { + fun onCancelClick() + + fun onConfirmClick(input: String) + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_layout_white.xml b/app/src/main/res/drawable/bg_layout_white.xml new file mode 100644 index 0000000..31b9a96 --- /dev/null +++ b/app/src/main/res/drawable/bg_layout_white.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java deleted file mode 100644 index a5f468d..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ /dev/null @@ -1,458 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.bean.CaseNextNodeBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl; -import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl; -import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailHandleView; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.mvp.view.ICaseNextNodeView; -import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.ui.fragment.check.CaseCheckFragment; -import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.luck.picture.lib.PictureSelector; -import com.luck.picture.lib.config.PictureConfig; -import com.luck.picture.lib.entity.LocalMedia; -import com.luck.picture.lib.tools.PictureFileUtils; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.dialog.QMUIDialog; -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckDetailActivity extends BaseCaseActivity implements View.OnClickListener, ICaseDetailView, - IUploadFileView, ICaseNextNodeView, ICaseDetailHandleView { - - private Context context = this; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.caseHandleResultView) - TextView caseHandleResultView; - @BindView(R.id.caseHandleTimeView) - TextView caseHandleTimeView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.addImageView) - ImageView addImageView; - @BindView(R.id.caseCheckOptView) - TextView caseCheckOptView; - @BindView(R.id.caseCheckStatusView) - TextView caseCheckStatusView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private CaseDetailPresenterImpl caseDetailPresenter; - private UploadImagePresenterImpl uploadImagePresenter; - private CaseNextNodePresenterImpl caseNextNodePresenter; - private CaseHandlePresenterImpl caseHandlePresenter; - - private String id; - private String changeState; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private ArrayList realPaths = new ArrayList<>();//真实图片路径 - private List mediaList = new ArrayList<>();//上传到服务器的数据集 - private QMUITipDialog submitDialog; - private ImageGridViewAdapter checkImageAdapter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_check_detail; - } - - @Override - protected String setTitleName() { - return "案卷核查"; - } - - @Override - public void initData() { - id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - - uploadImagePresenter = new UploadImagePresenterImpl(this); - caseNextNodePresenter = new CaseNextNodePresenterImpl(this); - caseHandlePresenter = new CaseHandlePresenterImpl(this); - submitDialog = new QMUITipDialog.Builder(this) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord("处理中,请稍后") - .create(); - checkImageAdapter = new ImageGridViewAdapter(this); - checkGridView.setAdapter(checkImageAdapter); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @OnClick({R.id.locationMapView, R.id.addImageView, R.id.caseCheckLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.addImageView: - new QMUIDialog.MenuDialogBuilder(this) - .addItem("相册中选取", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.selectPicture(CaseCheckDetailActivity.this); - } - }) - .addItem("相机拍照", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.takePicture(CaseCheckDetailActivity.this); - } - }) - .create().show(); - break; - case R.id.caseCheckLayout: - caseNextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); - break; - case R.id.submitButton: - submitCase();//案卷提交 - break; - default: - break; - } - } - - private void submitCase() { - String remarks = caseCheckOptView.getText().toString(); - if (TextUtils.isEmpty(remarks)) { - ToastHelper.showToast("核查意见不能为空", ToastHelper.WARING); - return; - } - if (TextUtils.isEmpty(changeState)) { - ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); - return; - } - if (checkImageAdapter.getCount() != 2) { - ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); - return; - } - caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), - changeState, remarks, StringHelper.reformatURL(mediaList)); - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - switch (requestCode) { - case PictureConfig.CHOOSE_REQUEST: - List selectList = PictureSelector.obtainMultipleResult(data); - for (LocalMedia media : selectList) { - File file = new File(media.getCompressPath()); - if (file.length() <= Constant.IMAGE_MINUS_SIZE) { - ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); - continue; - } - uploadImagePresenter.onReadyRetrofitRequest(file); - } - break; - case PictureConfig.REQUEST_CAMERA: - LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); - break; - default: - break; - } - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - - /** - * 图片 - * */ - //核实照片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - - //处理照片 - String processImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(processImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = processImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - caseHandleResultView.setText(data.getProcessRemarks().equals("") ? "无处理意见" : data.getProcessRemarks()); - //TODO 服务器返回数据缺少此字段,暂时注掉 -// caseHandleTimeView.setText(); - } - } - - @Override - public void showProgress() { - submitDialog.show(); - } - - @Override - public void hideProgress() { - submitDialog.dismiss(); - } - - @Override - public void obtainCaseHandleResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("案卷核查提交成功", ToastHelper.SUCCESS); - //案卷办完以后通知待办和已办刷新数据 - CaseCheckFragment.sendEmptyMessage(Constant.CASE_CHECK_OK); - CaseCheckedFragment.sendEmptyMessage(Constant.CASE_CHECK_OK); - finish(); - } else { - ToastHelper.showToast("案卷核查提交失败,请检查", ToastHelper.ERROR); - } - } - - @Override - public void obtainUploadAudioResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainUploadImageResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - PictureFileUtils.deleteAllCacheDirFile(this); - /** - * 系统路径static拼接图片返回路径 - * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg - */ - //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg - int sumItemCount = checkImageAdapter.getCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 2) { - String url = resultBean.getData(); - mediaList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - if (realPaths.size() == 2) { - addImageView.setVisibility(View.GONE); - } - checkImageAdapter.setImageList(realPaths); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, realPaths); - } - }); - //删除按钮点击事件 - checkImageAdapter.isDeleteVisible(true); - checkImageAdapter.setOnDeleteClickListener(new ImageGridViewAdapter.OnDeleteItemClickListener() { - @Override - public void onClick(int position) { - mediaList.remove(position); - realPaths.remove(position); - checkImageAdapter.setImageList(realPaths); - if (realPaths.size() != 2) { - addImageView.setVisibility(View.VISIBLE); - } - } - }); - } else { - ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); - } - } - } - - @Override - public void obtainUploadVideoResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainNextNodeData(CaseNextNodeBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("核实情况"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - caseCheckStatusView.setText(dataBean.getNextOperation()); - caseCheckOptView.setText(dataBean.getNextOperation()); - changeState = String.valueOf(dataBean.getNextState()); - } - }).build().show(); - } else { - ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("上传失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (uploadImagePresenter != null) { - uploadImagePresenter.disposeRetrofitRequest(); - } - if (caseNextNodePresenter != null) { - caseNextNodePresenter.disposeRetrofitRequest(); - } - if (caseHandlePresenter != null) { - caseHandlePresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.kt new file mode 100644 index 0000000..c7d9d48 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.kt @@ -0,0 +1,340 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.bean.CaseNextNodeBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl +import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailHandleView +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.mvp.view.ICaseNextNodeView +import com.casic.dcms.mvp.view.IUploadFileView +import com.casic.dcms.ui.fragment.check.CaseCheckFragment +import com.casic.dcms.ui.fragment.check.CaseCheckedFragment +import com.casic.dcms.utils.* +import com.luck.picture.lib.PictureSelector +import com.luck.picture.lib.config.PictureConfig +import com.luck.picture.lib.tools.PictureFileUtils +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import com.qmuiteam.qmui.widget.dialog.QMUIDialog.MenuDialogBuilder +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog +import kotlinx.android.synthetic.main.activity_case_check_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import java.io.File +import java.util.* + +class CaseCheckDetailActivity : BaseCaseActivity(), ICaseDetailView, + IUploadFileView, ICaseNextNodeView, ICaseDetailHandleView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private lateinit var uploadImagePresenter: UploadImagePresenterImpl + private lateinit var caseNextNodePresenter: CaseNextNodePresenterImpl + private lateinit var caseHandlePresenter: CaseHandlePresenterImpl + private lateinit var id: String + private lateinit var changeState: String + private var submitDialog: QMUITipDialog? = null + private var checkImageAdapter: ImageGridViewAdapter? = null + private var data = CaseDetailBean.DataBean() + private val realPaths = ArrayList() //真实图片路径 + private val mediaList: MutableList = ArrayList() //上传到服务器的数据集 + + override fun initLayoutView(): Int = R.layout.activity_case_check_detail + + override fun setTitleName(): String { + return "案卷核查" + } + + override fun initData() { + id = intent.getStringExtra("id")!! + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + uploadImagePresenter = UploadImagePresenterImpl(this) + caseNextNodePresenter = CaseNextNodePresenterImpl(this) + caseHandlePresenter = CaseHandlePresenterImpl(this) + submitDialog = QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create() + checkImageAdapter = ImageGridViewAdapter(this) + checkGridView.adapter = checkImageAdapter + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + + addImageView.setOnClickListener { + MenuDialogBuilder(this) + .addItem("相册中选取") { dialog, which -> + dialog.dismiss() + OtherUtils.selectPicture(this@CaseCheckDetailActivity) + } + .addItem("相机拍照") { dialog, which -> + dialog.dismiss() + OtherUtils.takePicture(this@CaseCheckDetailActivity) + } + .create().show() + } + + caseCheckLayout.setOnClickListener { + caseNextNodePresenter.onReadyRetrofitRequest(data.caseState.toString()) + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + //案卷提交 + val remarks: String = caseCheckOptView.text.toString() + if (TextUtils.isEmpty(remarks)) { + ToastHelper.showToast("核查意见不能为空", ToastHelper.WARING) + return@setOnClickListener + } + if (TextUtils.isEmpty(changeState)) { + ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING) + return@setOnClickListener + } + if (checkImageAdapter!!.count != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING) + return@setOnClickListener + } + caseHandlePresenter.onReadyRetrofitRequest( + data.processId, id, data.caseState.toString(), + changeState, remarks, StringHelper.reformatURL(mediaList) + ) + } + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (resultCode == RESULT_OK) { + when (requestCode) { + PictureConfig.CHOOSE_REQUEST -> { + val selectList = PictureSelector.obtainMultipleResult(data) + for (media in selectList) { + val file = File(media.compressPath) + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR) + continue + } + uploadImagePresenter.onReadyRetrofitRequest(file) + } + } + PictureConfig.REQUEST_CAMERA -> { + val localMedia = PictureSelector.obtainMultipleResult(data)[0] + uploadImagePresenter.onReadyRetrofitRequest(File(localMedia.compressPath)) + } + } + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = + if (data.communityName == "") "无更详细社区信息" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + /** + * 图片 + */ + //核实照片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + + //处理照片 + val processImages = data.fileIdProcess + if (!TextUtils.isEmpty(processImages)) { + val urls = ArrayList() + val split = processImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + caseHandleResultView.text = + if (data.processRemarks == "") "无处理意见" else data.processRemarks + //TODO 服务器返回数据缺少此字段,暂时注掉 +// caseHandleTimeView.setText(); + } + } + + override fun showProgress() { + submitDialog!!.show() + } + + override fun hideProgress() { + submitDialog!!.dismiss() + } + + override fun obtainCaseHandleResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + ToastHelper.showToast("案卷核查提交成功", ToastHelper.SUCCESS) + //案卷办完以后通知待办和已办刷新数据 + CaseCheckFragment.sendEmptyMessage(Constant.CASE_CHECK_OK) + CaseCheckedFragment.sendEmptyMessage(Constant.CASE_CHECK_OK) + finish() + } else { + ToastHelper.showToast("案卷核查提交失败,请检查", ToastHelper.ERROR) + } + } + + override fun obtainUploadAudioResult(resultBean: ActionResultBean) {} + override fun obtainUploadImageResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + PictureFileUtils.deleteAllCacheDirFile(this) + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + val sumItemCount = checkImageAdapter!!.count + 1 //每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + val url = resultBean.data + mediaList.add(url) + realPaths.add(StringHelper.appendCompleteURL(url)) + if (realPaths.size == 2) { + addImageView.visibility = View.GONE + } + checkImageAdapter!!.setImageList(realPaths) + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, realPaths) + } + //删除按钮点击事件 + checkImageAdapter!!.isDeleteVisible(true) + checkImageAdapter!!.setOnDeleteClickListener { position -> + mediaList.removeAt(position) + realPaths.removeAt(position) + checkImageAdapter!!.setImageList(realPaths) + if (realPaths.size != 2) { + addImageView.visibility = View.VISIBLE + } + } + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING) + } + } + } + + override fun obtainUploadVideoResult(resultBean: ActionResultBean) {} + + override fun obtainNextNodeData(resultBean: CaseNextNodeBean) { + if (resultBean.isSuccess) { + val dataBeans = resultBean.data + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("核实情况") + for (dataBean in dataBeans) { + sheetBuilder.addItem(dataBean.nextOperation) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + val dataBean = dataBeans[position] + caseCheckStatusView.text = dataBean.nextOperation + caseCheckOptView.text = dataBean.nextOperation + changeState = dataBean.nextState.toString() + }.build().show() + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR) + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("上传失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + uploadImagePresenter.disposeRetrofitRequest() + caseNextNodePresenter.disposeRetrofitRequest() + caseHandlePresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java deleted file mode 100644 index 996401c..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ /dev/null @@ -1,460 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.EditText; -import android.widget.GridView; -import android.widget.ImageView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.annotation.Nullable; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.bean.CaseNextNodeBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl; -import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl; -import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailHandleView; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.mvp.view.ICaseNextNodeView; -import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.ui.fragment.handle.CaseHandledFragment; -import com.casic.dcms.ui.fragment.handle.CaseTodoFragment; -import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; -import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.luck.picture.lib.PictureSelector; -import com.luck.picture.lib.config.PictureConfig; -import com.luck.picture.lib.entity.LocalMedia; -import com.luck.picture.lib.tools.PictureFileUtils; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.dialog.QMUIDialog; -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandleDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView, ICaseNextNodeView, IUploadFileView, ICaseDetailHandleView { - - private Context context = this; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.caseHandleResultView) - TextView caseHandleResultView; - @BindView(R.id.imageLayout) - RelativeLayout imageLayout; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.addImageView) - ImageView addImageView; - @BindView(R.id.reasonLayout) - RelativeLayout reasonLayout; - @BindView(R.id.caseReasonView) - EditText caseReasonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private String title; - private String id; - private String changeState; - private String caseReason; - private String approvalResult; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private ArrayList realPaths = new ArrayList<>();//真实图片路径 - private List mediaList = new ArrayList<>();//上传到服务器的数据集 - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseNextNodePresenterImpl caseNextNodePresenter; - private UploadImagePresenterImpl uploadImagePresenter; - private CaseHandlePresenterImpl caseHandlePresenter; - private QMUITipDialog submitDialog; - private ImageGridViewAdapter handleImageAdapter;//处理图片的adapter - - @Override - public int initLayoutView() { - return R.layout.activity_case_handle_detail; - } - - @Override - protected String setTitleName() { - return title; - } - - @Override - public void initData() { - title = getIntent().getStringExtra("title"); - id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - - caseNextNodePresenter = new CaseNextNodePresenterImpl(this); - uploadImagePresenter = new UploadImagePresenterImpl(this); - caseHandlePresenter = new CaseHandlePresenterImpl(this); - submitDialog = new QMUITipDialog.Builder(this) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord("处理中,请稍后") - .create(); - handleImageAdapter = new ImageGridViewAdapter(this); - handleGridView.setAdapter(handleImageAdapter); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - caseHandleView.setText(data.getCaseStateName().equals("") ? "无处理意见" : data.getCaseStateName()); - - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - } - } - - @Override - public void obtainNextNodeData(CaseNextNodeBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("处理结果"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - String nextOperation = dataBean.getNextOperation(); - caseHandleResultView.setText(nextOperation); - if (nextOperation.equals("处理完成")) { - imageLayout.setVisibility(View.VISIBLE); - reasonLayout.setVisibility(View.GONE); - } else { - imageLayout.setVisibility(View.GONE); - reasonLayout.setVisibility(View.VISIBLE); - } - changeState = String.valueOf(dataBean.getNextState()); - approvalResult = dataBean.getApprovalResult(); - } - }).build().show(); - } else { - ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); - } - } - - @OnClick({R.id.locationMapView, R.id.caseHandleResultLayout, R.id.addImageView, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.caseHandleResultLayout: - caseNextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); - break; - case R.id.addImageView: - new QMUIDialog.MenuDialogBuilder(this) - .addItem("相册中选取", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.selectPicture(CaseHandleDetailActivity.this); - } - }) - .addItem("相机拍照", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.takePicture(CaseHandleDetailActivity.this); - } - }) - .create().show(); - break; - case R.id.submitButton: - submitCase();//案卷提交 - break; - default: - break; - } - } - - private void submitCase() { - String handleResult = caseHandleResultView.getText().toString(); - if (handleResult.equals("")) { - ToastHelper.showToast("还未选择处理结果", ToastHelper.WARING); - return; - } - if (handleResult.equals("处理完成")) { - //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getCount() != 2) { - ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); - return; - } - } - if (handleResult.equals("申请延期") || handleResult.equals("申请调整")) { - caseReason = caseReasonView.getText().toString(); - if (TextUtils.isEmpty(caseReason)) { - ToastHelper.showToast("延期/调整的原因必须填写", ToastHelper.WARING); - return; - } - } - caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), - changeState, caseReason, StringHelper.reformatURL(mediaList), approvalResult); - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - switch (requestCode) { - case PictureConfig.CHOOSE_REQUEST: - List selectList = PictureSelector.obtainMultipleResult(data); - for (LocalMedia media : selectList) { - File file = new File(media.getCompressPath()); - if (file.length() <= Constant.IMAGE_MINUS_SIZE) { - ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); - continue; - } - uploadImagePresenter.onReadyRetrofitRequest(file); - } - break; - case PictureConfig.REQUEST_CAMERA: - LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); - break; - default: - break; - } - } - } - - @Override - public void showProgress() { - submitDialog.show(); - } - - @Override - public void hideProgress() { - submitDialog.dismiss(); - } - - @Override - public void obtainUploadAudioResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainUploadImageResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - PictureFileUtils.deleteAllCacheDirFile(this); - /** - * 系统路径static拼接图片返回路径 - * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg - */ - //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg - int sumItemCount = handleImageAdapter.getCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 2) { - String url = resultBean.getData(); - mediaList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - if (realPaths.size() == 2) { - addImageView.setVisibility(View.GONE); - } - handleImageAdapter.setImageList(realPaths); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, realPaths); - } - }); - //删除按钮点击事件 - handleImageAdapter.isDeleteVisible(true); - handleImageAdapter.setOnDeleteClickListener(new ImageGridViewAdapter.OnDeleteItemClickListener() { - @Override - public void onClick(int position) { - mediaList.remove(position); - realPaths.remove(position); - handleImageAdapter.setImageList(realPaths); - if (realPaths.size() != 2) { - addImageView.setVisibility(View.VISIBLE); - } - } - }); - } else { - ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); - } - } - } - - @Override - public void obtainUploadVideoResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - public void obtainCaseHandleResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); - switch (title) { - case "超时案卷": - OvertimeCaseFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - break; - case "紧急案卷": - UrgentCaseFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - break; - case "待办案卷": - CaseTodoFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); - break; - } - finish(); - } else { - ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (caseNextNodePresenter != null) { - caseNextNodePresenter.disposeRetrofitRequest(); - } - if (uploadImagePresenter != null) { - uploadImagePresenter.disposeRetrofitRequest(); - } - if (caseHandlePresenter != null) { - caseHandlePresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.kt new file mode 100644 index 0000000..c17a12d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.kt @@ -0,0 +1,341 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.bean.CaseNextNodeBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl +import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailHandleView +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.mvp.view.ICaseNextNodeView +import com.casic.dcms.mvp.view.IUploadFileView +import com.casic.dcms.ui.fragment.handle.CaseHandledFragment +import com.casic.dcms.ui.fragment.handle.CaseTodoFragment +import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment +import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment +import com.casic.dcms.utils.* +import com.luck.picture.lib.PictureSelector +import com.luck.picture.lib.config.PictureConfig +import com.luck.picture.lib.tools.PictureFileUtils +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import com.qmuiteam.qmui.widget.dialog.QMUIDialog.MenuDialogBuilder +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog +import kotlinx.android.synthetic.main.activity_case_handle_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import java.io.File +import java.util.* + +class CaseHandleDetailActivity : BaseCaseActivity(), ICaseDetailView, ICaseNextNodeView, + IUploadFileView, ICaseDetailHandleView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private lateinit var caseNextNodePresenter: CaseNextNodePresenterImpl + private lateinit var uploadImagePresenter: UploadImagePresenterImpl + private lateinit var caseHandlePresenter: CaseHandlePresenterImpl + private lateinit var title: String + private lateinit var id: String + private lateinit var changeState: String + private lateinit var caseReason: String + private lateinit var approvalResult: String + private var submitDialog: QMUITipDialog? = null + private var handleImageAdapter: ImageGridViewAdapter? = null + private var data = CaseDetailBean.DataBean() + private val realPaths = ArrayList() //真实图片路径 + private val mediaList: MutableList = ArrayList() //上传到服务器的数据集 + + override fun initLayoutView(): Int = R.layout.activity_case_handle_detail + + override fun setTitleName(): String { + return title + } + + override fun initData() { + title = intent.getStringExtra("title")!! + id = intent.getStringExtra("id")!! + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + caseNextNodePresenter = CaseNextNodePresenterImpl(this) + uploadImagePresenter = UploadImagePresenterImpl(this) + caseHandlePresenter = CaseHandlePresenterImpl(this) + submitDialog = QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create() + handleImageAdapter = ImageGridViewAdapter(this) + handleGridView.adapter = handleImageAdapter + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + + caseHandleResultLayout.setOnClickListener { + caseNextNodePresenter.onReadyRetrofitRequest(data.caseState.toString()) + } + + addImageView.setOnClickListener { + MenuDialogBuilder(this) + .addItem("相册中选取") { dialog, which -> + dialog.dismiss() + OtherUtils.selectPicture(this@CaseHandleDetailActivity) + } + .addItem("相机拍照") { dialog, which -> + dialog.dismiss() + OtherUtils.takePicture(this@CaseHandleDetailActivity) + } + .create().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + val handleResult: String = caseHandleResultView.text.toString() + if (handleResult == "") { + ToastHelper.showToast("还未选择处理结果", ToastHelper.WARING) + return@setOnClickListener + } + if (handleResult == "处理完成") { + //选择处理完成时,处理图片必传。至少一张,最多两张 + if (handleImageAdapter!!.count != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING) + return@setOnClickListener + } + } + if (handleResult == "申请延期" || handleResult == "申请调整") { + caseReason = caseReasonView.text.toString() + if (TextUtils.isEmpty(caseReason)) { + ToastHelper.showToast("延期/调整的原因必须填写", ToastHelper.WARING) + return@setOnClickListener + } + } + caseHandlePresenter.onReadyRetrofitRequest( + data.processId, id, data.caseState.toString(), + changeState, caseReason, StringHelper.reformatURL(mediaList), approvalResult + ) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = + if (data.communityName == "") "无更详细社区信息" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + caseHandleView.text = if (data.caseStateName == "") "无处理意见" else data.caseStateName + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + } + } + + override fun obtainNextNodeData(resultBean: CaseNextNodeBean) { + if (resultBean.isSuccess) { + val dataBeans = resultBean.data + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("处理结果") + for (dataBean in dataBeans) { + sheetBuilder.addItem(dataBean.nextOperation) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + val dataBean = dataBeans[position] + val nextOperation = dataBean.nextOperation + caseHandleResultView.text = nextOperation + if (nextOperation == "处理完成") { + imageLayout.visibility = View.VISIBLE + reasonLayout.visibility = View.GONE + } else { + imageLayout.visibility = View.GONE + reasonLayout.visibility = View.VISIBLE + } + changeState = dataBean.nextState.toString() + approvalResult = dataBean.approvalResult + }.build().show() + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR) + } + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (resultCode == RESULT_OK) { + when (requestCode) { + PictureConfig.CHOOSE_REQUEST -> { + val selectList = PictureSelector.obtainMultipleResult(data) + for (media in selectList) { + val file = File(media.compressPath) + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR) + continue + } + uploadImagePresenter.onReadyRetrofitRequest(file) + } + } + PictureConfig.REQUEST_CAMERA -> { + val localMedia = PictureSelector.obtainMultipleResult(data)[0] + uploadImagePresenter.onReadyRetrofitRequest(File(localMedia.compressPath)) + } + } + } + } + + override fun showProgress() { + submitDialog!!.show() + } + + override fun hideProgress() { + submitDialog!!.dismiss() + } + + override fun obtainUploadAudioResult(resultBean: ActionResultBean) {} + override fun obtainUploadImageResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + PictureFileUtils.deleteAllCacheDirFile(this) + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + val sumItemCount = handleImageAdapter!!.count + 1 //每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + val url = resultBean.data + mediaList.add(url) + realPaths.add(StringHelper.appendCompleteURL(url)) + if (realPaths.size == 2) { + addImageView.visibility = View.GONE + } + handleImageAdapter!!.setImageList(realPaths) + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, realPaths) + } + //删除按钮点击事件 + handleImageAdapter!!.isDeleteVisible(true) + handleImageAdapter!!.setOnDeleteClickListener { position -> + mediaList.removeAt(position) + realPaths.removeAt(position) + handleImageAdapter!!.setImageList(realPaths) + if (realPaths.size != 2) { + addImageView.visibility = View.VISIBLE + } + } + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING) + } + } + } + + override fun obtainUploadVideoResult(resultBean: ActionResultBean) {} + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun obtainCaseHandleResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS) + when (title) { + "超时案卷" -> { + OvertimeCaseFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + } + "紧急案卷" -> { + UrgentCaseFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + } + "待办案卷" -> { + CaseTodoFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK) + } + } + finish() + } else { + ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR) + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + caseNextNodePresenter.disposeRetrofitRequest() + uploadImagePresenter.disposeRetrofitRequest() + caseHandlePresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java deleted file mode 100644 index 8b08041..0000000 --- a/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.java +++ /dev/null @@ -1,289 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.EditText; -import android.widget.GridView; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.mvp.presenter.ShopChangePresenterImpl; -import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; -import com.casic.dcms.mvp.view.IShopInfoChangeView; -import com.casic.dcms.mvp.view.IUploadFileView; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.luck.picture.lib.PictureSelector; -import com.luck.picture.lib.config.PictureConfig; -import com.luck.picture.lib.entity.LocalMedia; -import com.luck.picture.lib.tools.PictureFileUtils; -import com.qmuiteam.qmui.widget.dialog.QMUIDialog; -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; - -public class ChangeShopInfoActivity extends BaseCaseActivity implements View.OnClickListener, IUploadFileView, - IShopInfoChangeView { - - private static final String TAG = "ChangeShopInfoActivity"; - private Context context = this; - @BindView(R.id.shopView) - TextView shopView; - @BindView(R.id.communityNameView) - TextView communityNameView; - @BindView(R.id.shopLocationView) - EditText shopLocationView; - @BindView(R.id.shopKeeperView) - EditText shopKeeperView; - @BindView(R.id.phoneNumberView) - EditText phoneNumberView; - @BindView(R.id.selectedGridViewView) - GridView selectedGridViewView; - @BindView(R.id.addImageView) - ImageView addImageView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private UploadImagePresenterImpl uploadImagePresenter; - private ShopChangePresenterImpl shopChangePresenter; - private QMUITipDialog submitDialog; - private ImageGridViewAdapter imageAdapter; - private String merchantId;//商户id - private String merchantName; - private ArrayList realPaths = new ArrayList<>();//真实图片路径 - private List mediaList = new ArrayList<>();//上传到服务器的数据集 - - @Override - protected String setTitleName() { - return "商铺变更"; - } - - @Override - public int initLayoutView() { - return R.layout.activity_change_shop; - } - - @Override - public void initData() { - uploadImagePresenter = new UploadImagePresenterImpl(this); - shopChangePresenter = new ShopChangePresenterImpl(this); - submitDialog = new QMUITipDialog.Builder(this) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord("处理中,请稍后") - .create(); - imageAdapter = new ImageGridViewAdapter(this); - selectedGridViewView.setAdapter(imageAdapter); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @OnClick({R.id.shopLayout, R.id.addImageView, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.shopLayout: - Intent intent = new Intent(this, ArcGISMapActivity.class); - intent.putExtra("type", "商铺变更"); - startActivityForResult(intent, Constant.REQUEST_MAP_CODE); - break; - case R.id.addImageView: - new QMUIDialog.MenuDialogBuilder(this) - .addItem("相册中选取", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.selectPicture(ChangeShopInfoActivity.this); - } - }) - .addItem("相机拍照", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - OtherUtils.takePicture(ChangeShopInfoActivity.this); - } - }) - .setCanceledOnTouchOutside(false) - .create().show(); - break; - case R.id.submitButton: - submitCase(); - break; - } - } - - private void submitCase() { - String phoneNumber = phoneNumberView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(phoneNumber)) { - ToastHelper.showToast("电话号码还未填写", ToastHelper.WARING); - return; - } - if (StringHelper.isPhoneNumber(phoneNumber)) { - String shopLocation = shopLocationView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(shopLocation)) { - ToastHelper.showToast("店铺地址还未填写", ToastHelper.WARING); - return; - } - String shopKeeper = shopKeeperView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(shopKeeper)) { - ToastHelper.showToast("店主名还未填写", ToastHelper.WARING); - return; - } - if (imageAdapter.getCount() != 2) { - ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING); - return; - } - shopChangePresenter.onReadyRetrofitRequest(merchantId, merchantName, shopKeeper, phoneNumber, StringHelper.reformatURL(mediaList)); - } else { - ToastHelper.showToast("电话号码格式不对", ToastHelper.WARING); - } - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - switch (requestCode) { - case Constant.REQUEST_MAP_CODE: - if (data == null) { - return; - } - String community = data.getStringExtra("community"); - merchantName = data.getStringExtra("shopName"); - merchantId = data.getStringExtra("shopID"); - - communityNameView.setText(community); - shopView.setText(merchantName); - shopView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - break; - case PictureConfig.CHOOSE_REQUEST: - List selectList = PictureSelector.obtainMultipleResult(data); - for (LocalMedia media : selectList) { - File file = new File(media.getCompressPath()); - if (file.length() <= Constant.IMAGE_MINUS_SIZE) { - ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); - continue; - } - uploadImagePresenter.onReadyRetrofitRequest(file); - } - break; - case PictureConfig.REQUEST_CAMERA: - LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); - break; - default: - break; - } - } - } - - @Override - public void showProgress() { - submitDialog.show(); - } - - @Override - public void hideProgress() { - submitDialog.dismiss(); - } - - @Override - public void obtainChangeResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("提交成功", ToastHelper.SUCCESS); - finish(); - } else { - ToastHelper.showToast("提交失败,请重试", ToastHelper.ERROR); - } - } - - @Override - public void obtainUploadAudioResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainUploadImageResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - PictureFileUtils.deleteAllCacheDirFile(this); - /** - * 系统路径static拼接图片返回路径 - * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg - */ - //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg - int sumItemCount = imageAdapter.getCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 2) { - String url = resultBean.getData(); - mediaList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - if (realPaths.size() == 2) { - addImageView.setVisibility(View.GONE); - } - imageAdapter.setImageList(realPaths); - //九宫格点击事件 - selectedGridViewView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, realPaths); - } - }); - //删除按钮点击事件 - imageAdapter.setOnDeleteClickListener(new ImageGridViewAdapter.OnDeleteItemClickListener() { - @Override - public void onClick(int position) { - mediaList.remove(position); - realPaths.remove(position); - imageAdapter.setImageList(realPaths); - if (realPaths.size() != 2) { - addImageView.setVisibility(View.VISIBLE); - } - } - }); - } else { - ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); - } - } - } - - @Override - public void obtainUploadVideoResult(ActionResultBean resultBean) { - - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (uploadImagePresenter != null) { - uploadImagePresenter.disposeRetrofitRequest(); - } - if (shopChangePresenter != null) { - shopChangePresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.kt b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.kt new file mode 100644 index 0000000..4a9e91c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/ChangeShopInfoActivity.kt @@ -0,0 +1,217 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.ShopChangePresenterImpl +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl +import com.casic.dcms.mvp.view.IShopInfoChangeView +import com.casic.dcms.mvp.view.IUploadFileView +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.luck.picture.lib.PictureSelector +import com.luck.picture.lib.config.PictureConfig +import com.luck.picture.lib.tools.PictureFileUtils +import com.qmuiteam.qmui.widget.dialog.QMUIDialog.MenuDialogBuilder +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog +import kotlinx.android.synthetic.main.activity_change_shop.* +import java.io.File +import java.util.* + +class ChangeShopInfoActivity : BaseCaseActivity(), IUploadFileView, IShopInfoChangeView { + + private lateinit var uploadImagePresenter: UploadImagePresenterImpl + private lateinit var shopChangePresenter: ShopChangePresenterImpl + private lateinit var merchantId: String //商户id + private lateinit var merchantName: String + private var submitDialog: QMUITipDialog? = null + private var imageAdapter: ImageGridViewAdapter? = null + private val realPaths = ArrayList() //真实图片路径 + private val mediaList: MutableList = ArrayList() //上传到服务器的数据集 + + override fun setTitleName(): String { + return "商铺变更" + } + + override fun initLayoutView(): Int { + return R.layout.activity_change_shop + } + + override fun initData() { + uploadImagePresenter = UploadImagePresenterImpl(this) + shopChangePresenter = ShopChangePresenterImpl(this) + submitDialog = QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create() + imageAdapter = ImageGridViewAdapter(this) + selectedGridViewView.adapter = imageAdapter + } + + override fun initEvent() { + shopLayout.setOnClickListener { + val intent = Intent(this, ArcGISMapActivity::class.java) + intent.putExtra("type", "商铺变更") + startActivityForResult(intent, Constant.REQUEST_MAP_CODE) + } + + addImageView.setOnClickListener { + MenuDialogBuilder(this) + .addItem("相册中选取") { dialog, which -> + dialog.dismiss() + OtherUtils.selectPicture(this) + } + .addItem("相机拍照") { dialog, which -> + dialog.dismiss() + OtherUtils.takePicture(this) + } + .setCanceledOnTouchOutside(false) + .create().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + val phoneNumber: String = phoneNumberView.text.toString().trim().replace(" ", "") + if (TextUtils.isEmpty(phoneNumber)) { + ToastHelper.showToast("电话号码还未填写", ToastHelper.WARING) + return@setOnClickListener + } + if (StringHelper.isPhoneNumber(phoneNumber)) { + val shopLocation: String = + shopLocationView.text.toString().trim().replace(" ", "") + if (TextUtils.isEmpty(shopLocation)) { + ToastHelper.showToast("店铺地址还未填写", ToastHelper.WARING) + return@setOnClickListener + } + val shopKeeper: String = shopKeeperView.text.toString().trim().replace(" ", "") + if (TextUtils.isEmpty(shopKeeper)) { + ToastHelper.showToast("店主名还未填写", ToastHelper.WARING) + return@setOnClickListener + } + if (imageAdapter!!.count != 2) { + ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING) + return@setOnClickListener + } + shopChangePresenter.onReadyRetrofitRequest( + merchantId, + merchantName, + shopKeeper, + phoneNumber, + StringHelper.reformatURL(mediaList) + ) + } else { + ToastHelper.showToast("电话号码格式不对", ToastHelper.WARING) + } + } + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (resultCode == RESULT_OK) { + when (requestCode) { + Constant.REQUEST_MAP_CODE -> { + if (data == null) { + return + } + val community = data.getStringExtra("community") + merchantName = data.getStringExtra("shopName")!! + merchantId = data.getStringExtra("shopID")!! + communityNameView.text = community + shopView.text = merchantName + shopView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + } + PictureConfig.CHOOSE_REQUEST -> { + val selectList = PictureSelector.obtainMultipleResult(data) + for (media in selectList) { + val file = File(media.compressPath) + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR) + continue + } + uploadImagePresenter.onReadyRetrofitRequest(file) + } + } + PictureConfig.REQUEST_CAMERA -> { + val localMedia = PictureSelector.obtainMultipleResult(data)[0] + uploadImagePresenter.onReadyRetrofitRequest(File(localMedia.compressPath)) + } + } + } + } + + override fun showProgress() { + submitDialog!!.show() + } + + override fun hideProgress() { + submitDialog!!.dismiss() + } + + override fun obtainChangeResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + ToastHelper.showToast("提交成功", ToastHelper.SUCCESS) + finish() + } else { + ToastHelper.showToast("提交失败,请重试", ToastHelper.ERROR) + } + } + + override fun obtainUploadAudioResult(resultBean: ActionResultBean) {} + + override fun obtainUploadImageResult(resultBean: ActionResultBean) { + if (resultBean.isSuccess) { + PictureFileUtils.deleteAllCacheDirFile(this) + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + val sumItemCount = imageAdapter!!.count + 1 //每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + val url = resultBean.data + mediaList.add(url) + realPaths.add(StringHelper.appendCompleteURL(url)) + if (realPaths.size == 2) { + addImageView.visibility = View.GONE + } + imageAdapter!!.setImageList(realPaths) + //九宫格点击事件 + selectedGridViewView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, realPaths) + } + //删除按钮点击事件 + imageAdapter!!.setOnDeleteClickListener { position -> + mediaList.removeAt(position) + realPaths.removeAt(position) + imageAdapter!!.setImageList(realPaths) + if (realPaths.size != 2) { + addImageView.visibility = View.VISIBLE + } + } + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING) + } + } + } + + override fun obtainUploadVideoResult(resultBean: ActionResultBean) {} + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + uploadImagePresenter.disposeRetrofitRequest() + shopChangePresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt index d2425dc..9e86954 100644 --- a/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt +++ b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt @@ -79,20 +79,27 @@ } changeServerConfigButton!!.setChangeAlphaWhenPress(true) changeServerConfigButton.setOnClickListener { - InputDialog.Builder() - .setContext(this) - .setTitle("修改服务器地址和端口") - .setOnDialogClickListener(object : InputDialog.OnDialogClickListener { - override fun onConfirmClick(serverValue: String, portValue: String) { - if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { - val serverConfig = "http:$serverValue:$portValue" - SaveKeyValues.putValue(Constant.IP_KEY, serverConfig) - ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS) - } + val defaultValue = SaveKeyValues.getValue( + Constant.IP_KEY, + "http://111.198.10.15:11409" + ) as String + InputDialog.Builder().setContext(this) + .setTitle("请输入后台服务器地址") + .setDefaultValue(defaultValue) + .setHintText("请输入服务器地址") + .setNegativeButton("取消") + .setPositiveButton("保存") + .setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener { + override fun onConfirmClick(input: String) { + SaveKeyValues.putValue(Constant.IP_KEY, input) + ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS) } - override fun onCancelClick() {} - }).build().show() + override fun onCancelClick() { + + } + }) + .build().show() } } diff --git a/app/src/main/java/com/casic/dcms/ui/WellListActivity.java b/app/src/main/java/com/casic/dcms/ui/WellListActivity.java index f9ab8ff..b23edcc 100644 --- a/app/src/main/java/com/casic/dcms/ui/WellListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WellListActivity.java @@ -157,7 +157,7 @@ @Override public void onClick(int position) { String bfzt = activity.dataBeans.get(position).getBfzt(); - String bfztName = ""; + String bfztName; if (bfzt.equals("0")) { bfztName = "布防"; bfzt = "1"; diff --git a/app/src/main/java/com/casic/dcms/widgets/InputDialog.java b/app/src/main/java/com/casic/dcms/widgets/InputDialog.java deleted file mode 100644 index 36def9c..0000000 --- a/app/src/main/java/com/casic/dcms/widgets/InputDialog.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.casic.dcms.widgets; - -import android.app.Dialog; -import android.content.Context; -import android.os.Bundle; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import com.casic.dcms.R; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -/** - * @Author: Pengxh - * @Time: 2021/4/13 13:18 - * @Email: 290677893@qq.com - **/ -public class InputDialog extends Dialog implements View.OnClickListener { - - private static final String TAG = "InputDialog"; - private String title; - private OnDialogClickListener listener; - private EditText serverView; - private EditText portView; - - private InputDialog(Builder builder) { - super(builder.mContext); - this.title = builder.title; - this.listener = builder.listener; - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.dialog_input); - initView(); - } - - private void initView() { - TextView dialogTitle = findViewById(R.id.dialogTitle); - serverView = findViewById(R.id.inputServerView); - portView = findViewById(R.id.inputPortView); - QMUIRoundButton dialogCancelButton = findViewById(R.id.dialogCancelButton); - dialogCancelButton.setChangeAlphaWhenPress(true); - dialogCancelButton.setOnClickListener(this); - - QMUIRoundButton dialogConfirmButton = findViewById(R.id.dialogConfirmButton); - dialogConfirmButton.setChangeAlphaWhenPress(true); - dialogConfirmButton.setOnClickListener(this); - - if (!TextUtils.isEmpty(title)) { - dialogTitle.setText(title); - } - } - - @Override - public void onClick(View view) { - int i = view.getId(); - if (i == R.id.dialogCancelButton) { - if (listener != null) { - listener.onCancelClick(); - } - } else if (i == R.id.dialogConfirmButton) { - if (listener != null) { - String server = serverView.getText().toString().trim(); - String port = portView.getText().toString().trim(); - listener.onConfirmClick(server, port); - } - } - this.dismiss(); - } - - public static class Builder { - private Context mContext; - private String title; - private OnDialogClickListener listener; - - public Builder setContext(Context context) { - this.mContext = context; - return this; - } - - public Builder setTitle(String title) { - this.title = title; - return this; - } - - public Builder setOnDialogClickListener(OnDialogClickListener listener) { - this.listener = listener; - return this; - } - - public InputDialog build() { - return new InputDialog(this); - } - } - - public interface OnDialogClickListener { - void onConfirmClick(String serverValue, String portValue); - - void onCancelClick(); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/widgets/InputDialog.kt b/app/src/main/java/com/casic/dcms/widgets/InputDialog.kt new file mode 100644 index 0000000..4a89ba8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/widgets/InputDialog.kt @@ -0,0 +1,135 @@ +package com.casic.dcms.widgets + +import android.app.Dialog +import android.content.Context +import android.graphics.Color +import android.graphics.drawable.ColorDrawable +import android.os.Bundle +import android.view.WindowManager +import com.casic.dcms.R +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.dialog_input.* + +/** + * @Author: Pengxh + * @Time: 2021/4/13 13:18 + * @Email: 290677893@qq.com + */ +class InputDialog private constructor(builder: Builder) : Dialog(builder.mContext!!) { + + private var ctx: Context? = null + private var title: String? = null + private var hint: String? = null + private var value: String? = null + private var positiveBtn: String? = null + private var negativeBtn: String? = null + private var listener: OnDialogButtonClickListener? = null + + init { + this.ctx = builder.mContext + this.title = builder.title + this.hint = builder.hint + this.value = builder.value + this.positiveBtn = builder.positiveBtn + this.negativeBtn = builder.negativeBtn + this.listener = builder.listener + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + configDialogLayout() + setContentView(R.layout.dialog_input) + setCancelable(false) + setCanceledOnTouchOutside(false) + + dialogTitleView.text = title + dialogInputView.hint = hint!! + value.apply { + dialogInputView.setText(this) + } + + dialogCancelButton.text = negativeBtn + dialogCancelButton.setChangeAlphaWhenPress(true) + dialogCancelButton.setOnClickListener { + this.dismiss() + listener?.onCancelClick() + } + + dialogConfirmButton.text = positiveBtn + dialogConfirmButton.setChangeAlphaWhenPress(true) + dialogConfirmButton.setOnClickListener { + val inputValue = dialogInputView.text.toString().trim() + if (inputValue.isEmpty()) { + ToastHelper.showToast("什么都没输入,请重新输入", ToastHelper.WARING) + return@setOnClickListener + } + this.dismiss() + listener?.onConfirmClick(inputValue) + } + } + + private fun configDialogLayout() { + window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) + window?.decorView?.setBackgroundColor(Color.TRANSPARENT) + val params: WindowManager.LayoutParams? = window?.attributes + params?.width = QMUIDisplayHelper.dp2px(ctx, 280) + params?.height = WindowManager.LayoutParams.WRAP_CONTENT + window?.attributes = params + } + + class Builder { + var mContext: Context? = null + var title: String? = null + var hint: String? = null + var value: String? = null + var positiveBtn: String? = null + var negativeBtn: String? = null + var listener: OnDialogButtonClickListener? = null + + fun setContext(context: Context?): Builder { + mContext = context + return this + } + + fun setTitle(title: String?): Builder { + this.title = title + return this + } + + fun setHintText(hint: String?): Builder { + this.hint = hint + return this + } + + fun setDefaultValue(value: String?): Builder { + this.value = value + return this + } + + fun setPositiveButton(name: String?): Builder { + positiveBtn = name + return this + } + + fun setNegativeButton(name: String?): Builder { + negativeBtn = name + return this + } + + fun setOnDialogClickListener(listener: OnDialogButtonClickListener): Builder { + this.listener = listener + return this + } + + fun build(): InputDialog { + return InputDialog(this) + } + } + + interface OnDialogButtonClickListener { + fun onCancelClick() + + fun onConfirmClick(input: String) + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_layout_white.xml b/app/src/main/res/drawable/bg_layout_white.xml new file mode 100644 index 0000000..31b9a96 --- /dev/null +++ b/app/src/main/res/drawable/bg_layout_white.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_input.xml b/app/src/main/res/layout/dialog_input.xml index 5685b39..3bb7f3c 100644 --- a/app/src/main/res/layout/dialog_input.xml +++ b/app/src/main/res/layout/dialog_input.xml @@ -1,68 +1,83 @@ - + android:layout_height="wrap_content" + android:padding="5dp" + app:cardCornerRadius="10dp"> - + android:layout_height="match_parent" + android:background="#26000000" + android:orientation="vertical"> - - - - - - - + android:fontFamily="sans-serif-medium" + android:gravity="center_horizontal" + android:paddingVertical="15dp" + android:text="@string/app_name" + android:textColor="@color/black" + android:textSize="@dimen/titleFontSize" /> - - - \ No newline at end of file + android:layout_marginHorizontal="30dp" + android:background="@drawable/bg_layout_white"> + + + + + + + + + + + + + + + + \ No newline at end of file