diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d99ecf5..68f46c9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -88,6 +88,8 @@ + + + + + + nodeDataBeans; + private CaseHandlePresenterImpl caseHandlePresenter; + private String id; + private String changeState; + private String operationKey; + + + @Override + protected String setTitleName() { + return Constant.DEPT_PAGE_TITLES[1]; + } + + @Override + public int initLayoutView() { + return R.layout.activity_dept_adjust; + } + + @Override + public void initData() { + id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + + nextNodePresenter = new CaseNextNodePresenterImpl(this); + caseHandlePresenter = new CaseHandlePresenterImpl(this); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.caseOptTypeLayout: + if (nodeDataBeans != null) { + if (nodeDataBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("操作类型"); + for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { + 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(); + optTypeView.setText(tag); + optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); + changeState = String.valueOf(nodeBean.getNextState()); + operationKey = nodeBean.getOperationKey(); + } + }).build().show(); + } + } + break; + case R.id.commonTipsLayout: + new QMUIBottomSheet.BottomListSheetBuilder(this) + .setTitle("常见用语") + .addItem("请及时处理") + .addItem("调查后及时回复") + .setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + commonTipsView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + optionEditView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + } + }).build().show(); + break; + case R.id.submitButton: + String optType = optTypeView.getText().toString(); + if (optType.equals("")) { + ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); + return; + } + String optionInput = StringHelper.filterString(optionEditView.getText().toString()); + if (TextUtils.isEmpty(optionInput)) { + ToastHelper.showToast("不同意/同意的意见必须填写", ToastHelper.WARING); + return; + } + caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, + String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, + data.getProcessPersonid()); + break; + } + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseResourceView.setText(data.getSourceName()); + caseCreatorView.setText(data.getCreateUserName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + ArrayList urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(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 handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //获取处置类型 + nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); + } + } + + @Override + public void obtainNextNodeData(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + this.nodeDataBeans = resultBean.getData(); + if (nodeDataBeans.size() == 0) { + optTypeView.setText("无下级流转节点"); + } else { + CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); + + operationKey = dataBean.getOperationKey(); + changeState = String.valueOf(dataBean.getNextState()); + optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 + } + optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); + } + } + + @Override + public void showProgress() { + OtherUtils.showLoadingDialog(this, "处理中,请稍后"); + } + + @Override + public void hideProgress() { + OtherUtils.dismissLoadingDialog(); + } + + @Override + public void obtainCaseHandleResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); + DeptCaseAdjustFragment.sendEmptyMessage(Constant.DEPT_DONE); + DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); + finish(); + } 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 (nextNodePresenter != null) { + nextNodePresenter.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/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d99ecf5..68f46c9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -88,6 +88,8 @@ + + nodeDataBeans; + private CaseHandlePresenterImpl caseHandlePresenter; + private String id; + private String changeState; + private String operationKey; + + + @Override + protected String setTitleName() { + return Constant.DEPT_PAGE_TITLES[1]; + } + + @Override + public int initLayoutView() { + return R.layout.activity_dept_adjust; + } + + @Override + public void initData() { + id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + + nextNodePresenter = new CaseNextNodePresenterImpl(this); + caseHandlePresenter = new CaseHandlePresenterImpl(this); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.caseOptTypeLayout: + if (nodeDataBeans != null) { + if (nodeDataBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("操作类型"); + for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { + 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(); + optTypeView.setText(tag); + optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); + changeState = String.valueOf(nodeBean.getNextState()); + operationKey = nodeBean.getOperationKey(); + } + }).build().show(); + } + } + break; + case R.id.commonTipsLayout: + new QMUIBottomSheet.BottomListSheetBuilder(this) + .setTitle("常见用语") + .addItem("请及时处理") + .addItem("调查后及时回复") + .setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + commonTipsView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + optionEditView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + } + }).build().show(); + break; + case R.id.submitButton: + String optType = optTypeView.getText().toString(); + if (optType.equals("")) { + ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); + return; + } + String optionInput = StringHelper.filterString(optionEditView.getText().toString()); + if (TextUtils.isEmpty(optionInput)) { + ToastHelper.showToast("不同意/同意的意见必须填写", ToastHelper.WARING); + return; + } + caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, + String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, + data.getProcessPersonid()); + break; + } + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseResourceView.setText(data.getSourceName()); + caseCreatorView.setText(data.getCreateUserName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + ArrayList urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(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 handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //获取处置类型 + nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); + } + } + + @Override + public void obtainNextNodeData(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + this.nodeDataBeans = resultBean.getData(); + if (nodeDataBeans.size() == 0) { + optTypeView.setText("无下级流转节点"); + } else { + CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); + + operationKey = dataBean.getOperationKey(); + changeState = String.valueOf(dataBean.getNextState()); + optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 + } + optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); + } + } + + @Override + public void showProgress() { + OtherUtils.showLoadingDialog(this, "处理中,请稍后"); + } + + @Override + public void hideProgress() { + OtherUtils.dismissLoadingDialog(); + } + + @Override + public void obtainCaseHandleResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); + DeptCaseAdjustFragment.sendEmptyMessage(Constant.DEPT_DONE); + DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); + finish(); + } 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 (nextNodePresenter != null) { + nextNodePresenter.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/DeptAuthorizeDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java new file mode 100644 index 0000000..de47420 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java @@ -0,0 +1,437 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +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.bean.ProcessPersonBean; +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.ProcessPersonPresenterImpl; +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.IHandleProcessView; +import com.casic.dcms.ui.fragment.dept.DeptCaseAuthorizeFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ItemDecorationSpace; +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.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; +import cn.jzvd.Jzvd; +import cn.jzvd.JzvdStd; + +public class DeptAuthorizeDetailActivity extends BaseCaseActivity implements View.OnClickListener, + ICaseDetailView, ICaseNextNodeView, IHandleProcessView, ICaseDetailHandleView { + + private Context context = DeptAuthorizeDetailActivity.this; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseResourceView) + TextView caseResourceView; + @BindView(R.id.caseCreatorView) + TextView caseCreatorView; + @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.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.audioPlayerView) + AudioPlayerView audioPlayerView; + @BindView(R.id.videoPlayerView) + JzvdStd videoPlayerView; + @BindView(R.id.caseHandleRecyclerView) + RecyclerView caseHandleRecyclerView; + @BindView(R.id.optTypeView) + TextView optTypeView; + @BindView(R.id.casePersonLayout) + RelativeLayout casePersonLayout; + @BindView(R.id.caseHandlePersonView) + TextView caseHandlePersonView; + @BindView(R.id.personLine) + View personLine; + @BindView(R.id.optionEditView) + EditText optionEditView; + @BindView(R.id.commonTipsView) + TextView commonTipsView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private CaseDetailPresenterImpl caseDetailPresenter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private CaseNextNodePresenterImpl nextNodePresenter; + private List nodeDataBeans; + private CaseHandlePresenterImpl caseHandlePresenter; + private ProcessPersonPresenterImpl handleProcessPresenter; + private List personBeans; + private String id; + private String changeState; + private String operationKey; + private String taskUserId; + + @Override + protected String setTitleName() { + return Constant.DEPT_PAGE_TITLES[2]; + } + + @Override + public int initLayoutView() { + return R.layout.activity_dept_authorize; + } + + @Override + public void initData() { + id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + + nextNodePresenter = new CaseNextNodePresenterImpl(this); + handleProcessPresenter = new ProcessPersonPresenterImpl(this); + caseHandlePresenter = new CaseHandlePresenterImpl(this); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.caseOptTypeLayout: + if (nodeDataBeans != null) { + if (nodeDataBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("操作类型"); + for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { + 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(); + optTypeView.setText(tag); + optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); + changeState = String.valueOf(nodeBean.getNextState()); + operationKey = nodeBean.getOperationKey(); + + if (tag.equals("返回处理")) { + casePersonLayout.setVisibility(View.VISIBLE); + personLine.setVisibility(View.VISIBLE); + + //获取下级处置人员名单 + handleProcessPresenter.onReadyRetrofitRequest(); + } else { + casePersonLayout.setVisibility(View.GONE); + personLine.setVisibility(View.GONE); + } + } + }).build().show(); + } + } + break; + case R.id.casePersonLayout: + if (personBeans != null) { + if (personBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("处置人员"); + for (ProcessPersonBean.DataBean dataBean : personBeans) { + sheetBuilder.addItem(dataBean.getName()); + } + sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + caseHandlePersonView.setText(tag); + caseHandlePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + taskUserId = personBeans.get(position).getId(); + } + }).build().show(); + } + } + break; + case R.id.commonTipsLayout: + new QMUIBottomSheet.BottomListSheetBuilder(this) + .setTitle("常见用语") + .addItem("请及时处理") + .addItem("调查后及时回复") + .setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + commonTipsView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + optionEditView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + } + }).build().show(); + break; + case R.id.submitButton: + String optType = optTypeView.getText().toString(); + if (optType.equals("")) { + ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); + return; + } + if (optType.equals("返回处理")) { + //选择处理人员时,必选一个处置人员 + String handlePerson = caseHandlePersonView.getText().toString(); + if (handlePerson.equals("")) { + ToastHelper.showToast("当前状态必须指定处置员", ToastHelper.WARING); + return; + } + } + String optionInput = StringHelper.filterString(optionEditView.getText().toString()); + if (TextUtils.isEmpty(optionInput)) { + ToastHelper.showToast("处理意见必须填写", ToastHelper.WARING); + return; + } + //只有选择返回处理的时候taskUserId才会不为空,否则用当前流程人员的id代替 + if (TextUtils.isEmpty(taskUserId)) { + taskUserId = data.getProcessPersonid(); + } + caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, + String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, + taskUserId); + break; + } + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseResourceView.setText(data.getSourceName()); + caseCreatorView.setText(data.getCreateUserName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + ArrayList urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(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 handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //获取处置类型 + nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); + } + } + + @Override + public void obtainNextNodeData(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + this.nodeDataBeans = resultBean.getData(); + if (nodeDataBeans.size() == 0) { + optTypeView.setText("无下级流转节点"); + } else { + CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); + + operationKey = dataBean.getOperationKey(); + changeState = String.valueOf(dataBean.getNextState()); + optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 + } + optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); + } + } + + @Override + public void showProgress() { + OtherUtils.showLoadingDialog(this, "处理中,请稍后"); + } + + @Override + public void hideProgress() { + OtherUtils.dismissLoadingDialog(); + } + + @Override + public void obtainCaseHandleResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); + DeptCaseAuthorizeFragment.sendEmptyMessage(Constant.DEPT_DONE); + DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); + finish(); + } else { + ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); + } + } + + + @Override + public void obtainResultData(ProcessPersonBean resultBean) { + if (resultBean.isSuccess()) { + this.personBeans = resultBean.getData(); + if (personBeans.size() == 0) { + caseHandlePersonView.setText("无处置人员"); + } else { + ProcessPersonBean.DataBean dataBean = personBeans.get(0); + taskUserId = dataBean.getId(); + caseHandlePersonView.setText(dataBean.getName());//默认选择第一个 + } + caseHandlePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (nextNodePresenter != null) { + nextNodePresenter.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/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d99ecf5..68f46c9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -88,6 +88,8 @@ + + nodeDataBeans; + private CaseHandlePresenterImpl caseHandlePresenter; + private String id; + private String changeState; + private String operationKey; + + + @Override + protected String setTitleName() { + return Constant.DEPT_PAGE_TITLES[1]; + } + + @Override + public int initLayoutView() { + return R.layout.activity_dept_adjust; + } + + @Override + public void initData() { + id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + + nextNodePresenter = new CaseNextNodePresenterImpl(this); + caseHandlePresenter = new CaseHandlePresenterImpl(this); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.caseOptTypeLayout: + if (nodeDataBeans != null) { + if (nodeDataBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("操作类型"); + for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { + 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(); + optTypeView.setText(tag); + optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); + changeState = String.valueOf(nodeBean.getNextState()); + operationKey = nodeBean.getOperationKey(); + } + }).build().show(); + } + } + break; + case R.id.commonTipsLayout: + new QMUIBottomSheet.BottomListSheetBuilder(this) + .setTitle("常见用语") + .addItem("请及时处理") + .addItem("调查后及时回复") + .setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + commonTipsView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + optionEditView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + } + }).build().show(); + break; + case R.id.submitButton: + String optType = optTypeView.getText().toString(); + if (optType.equals("")) { + ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); + return; + } + String optionInput = StringHelper.filterString(optionEditView.getText().toString()); + if (TextUtils.isEmpty(optionInput)) { + ToastHelper.showToast("不同意/同意的意见必须填写", ToastHelper.WARING); + return; + } + caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, + String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, + data.getProcessPersonid()); + break; + } + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseResourceView.setText(data.getSourceName()); + caseCreatorView.setText(data.getCreateUserName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + ArrayList urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(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 handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //获取处置类型 + nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); + } + } + + @Override + public void obtainNextNodeData(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + this.nodeDataBeans = resultBean.getData(); + if (nodeDataBeans.size() == 0) { + optTypeView.setText("无下级流转节点"); + } else { + CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); + + operationKey = dataBean.getOperationKey(); + changeState = String.valueOf(dataBean.getNextState()); + optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 + } + optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); + } + } + + @Override + public void showProgress() { + OtherUtils.showLoadingDialog(this, "处理中,请稍后"); + } + + @Override + public void hideProgress() { + OtherUtils.dismissLoadingDialog(); + } + + @Override + public void obtainCaseHandleResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); + DeptCaseAdjustFragment.sendEmptyMessage(Constant.DEPT_DONE); + DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); + finish(); + } 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 (nextNodePresenter != null) { + nextNodePresenter.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/DeptAuthorizeDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java new file mode 100644 index 0000000..de47420 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java @@ -0,0 +1,437 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +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.bean.ProcessPersonBean; +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.ProcessPersonPresenterImpl; +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.IHandleProcessView; +import com.casic.dcms.ui.fragment.dept.DeptCaseAuthorizeFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ItemDecorationSpace; +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.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; +import cn.jzvd.Jzvd; +import cn.jzvd.JzvdStd; + +public class DeptAuthorizeDetailActivity extends BaseCaseActivity implements View.OnClickListener, + ICaseDetailView, ICaseNextNodeView, IHandleProcessView, ICaseDetailHandleView { + + private Context context = DeptAuthorizeDetailActivity.this; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseResourceView) + TextView caseResourceView; + @BindView(R.id.caseCreatorView) + TextView caseCreatorView; + @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.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.audioPlayerView) + AudioPlayerView audioPlayerView; + @BindView(R.id.videoPlayerView) + JzvdStd videoPlayerView; + @BindView(R.id.caseHandleRecyclerView) + RecyclerView caseHandleRecyclerView; + @BindView(R.id.optTypeView) + TextView optTypeView; + @BindView(R.id.casePersonLayout) + RelativeLayout casePersonLayout; + @BindView(R.id.caseHandlePersonView) + TextView caseHandlePersonView; + @BindView(R.id.personLine) + View personLine; + @BindView(R.id.optionEditView) + EditText optionEditView; + @BindView(R.id.commonTipsView) + TextView commonTipsView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private CaseDetailPresenterImpl caseDetailPresenter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private CaseNextNodePresenterImpl nextNodePresenter; + private List nodeDataBeans; + private CaseHandlePresenterImpl caseHandlePresenter; + private ProcessPersonPresenterImpl handleProcessPresenter; + private List personBeans; + private String id; + private String changeState; + private String operationKey; + private String taskUserId; + + @Override + protected String setTitleName() { + return Constant.DEPT_PAGE_TITLES[2]; + } + + @Override + public int initLayoutView() { + return R.layout.activity_dept_authorize; + } + + @Override + public void initData() { + id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + + nextNodePresenter = new CaseNextNodePresenterImpl(this); + handleProcessPresenter = new ProcessPersonPresenterImpl(this); + caseHandlePresenter = new CaseHandlePresenterImpl(this); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.caseOptTypeLayout: + if (nodeDataBeans != null) { + if (nodeDataBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("操作类型"); + for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { + 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(); + optTypeView.setText(tag); + optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); + changeState = String.valueOf(nodeBean.getNextState()); + operationKey = nodeBean.getOperationKey(); + + if (tag.equals("返回处理")) { + casePersonLayout.setVisibility(View.VISIBLE); + personLine.setVisibility(View.VISIBLE); + + //获取下级处置人员名单 + handleProcessPresenter.onReadyRetrofitRequest(); + } else { + casePersonLayout.setVisibility(View.GONE); + personLine.setVisibility(View.GONE); + } + } + }).build().show(); + } + } + break; + case R.id.casePersonLayout: + if (personBeans != null) { + if (personBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("处置人员"); + for (ProcessPersonBean.DataBean dataBean : personBeans) { + sheetBuilder.addItem(dataBean.getName()); + } + sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + caseHandlePersonView.setText(tag); + caseHandlePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + taskUserId = personBeans.get(position).getId(); + } + }).build().show(); + } + } + break; + case R.id.commonTipsLayout: + new QMUIBottomSheet.BottomListSheetBuilder(this) + .setTitle("常见用语") + .addItem("请及时处理") + .addItem("调查后及时回复") + .setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + commonTipsView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + optionEditView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + } + }).build().show(); + break; + case R.id.submitButton: + String optType = optTypeView.getText().toString(); + if (optType.equals("")) { + ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); + return; + } + if (optType.equals("返回处理")) { + //选择处理人员时,必选一个处置人员 + String handlePerson = caseHandlePersonView.getText().toString(); + if (handlePerson.equals("")) { + ToastHelper.showToast("当前状态必须指定处置员", ToastHelper.WARING); + return; + } + } + String optionInput = StringHelper.filterString(optionEditView.getText().toString()); + if (TextUtils.isEmpty(optionInput)) { + ToastHelper.showToast("处理意见必须填写", ToastHelper.WARING); + return; + } + //只有选择返回处理的时候taskUserId才会不为空,否则用当前流程人员的id代替 + if (TextUtils.isEmpty(taskUserId)) { + taskUserId = data.getProcessPersonid(); + } + caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, + String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, + taskUserId); + break; + } + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseResourceView.setText(data.getSourceName()); + caseCreatorView.setText(data.getCreateUserName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + ArrayList urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(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 handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //获取处置类型 + nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); + } + } + + @Override + public void obtainNextNodeData(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + this.nodeDataBeans = resultBean.getData(); + if (nodeDataBeans.size() == 0) { + optTypeView.setText("无下级流转节点"); + } else { + CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); + + operationKey = dataBean.getOperationKey(); + changeState = String.valueOf(dataBean.getNextState()); + optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 + } + optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); + } + } + + @Override + public void showProgress() { + OtherUtils.showLoadingDialog(this, "处理中,请稍后"); + } + + @Override + public void hideProgress() { + OtherUtils.dismissLoadingDialog(); + } + + @Override + public void obtainCaseHandleResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); + DeptCaseAuthorizeFragment.sendEmptyMessage(Constant.DEPT_DONE); + DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); + finish(); + } else { + ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); + } + } + + + @Override + public void obtainResultData(ProcessPersonBean resultBean) { + if (resultBean.isSuccess()) { + this.personBeans = resultBean.getData(); + if (personBeans.size() == 0) { + caseHandlePersonView.setText("无处置人员"); + } else { + ProcessPersonBean.DataBean dataBean = personBeans.get(0); + taskUserId = dataBean.getId(); + caseHandlePersonView.setText(dataBean.getName());//默认选择第一个 + } + caseHandlePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (nextNodePresenter != null) { + nextNodePresenter.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/DeptHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java index e698b07..3de76c2 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java @@ -59,10 +59,10 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new DeptCaseProcessFragment());//待处理 fragmentList.add(new DeptCaseAdjustFragment());//部门调整 - fragmentList.add(new DeptCasePostponeFragment());//二级缓办 fragmentList.add(new DeptCaseAuthorizeFragment());//部门授权 + fragmentList.add(new DeptCaseHandledFragment());//已处理 + fragmentList.add(new DeptCasePostponeFragment());//二级缓办 fragmentList.add(new DeptCaseDelayedFragment());//二级延期 - fragmentList.add(new DeptCaseHandledFragment()); SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.DEPT_PAGE_TITLES, fragmentList); viewPager.setAdapter(adapter); //绑定TabLayout diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d99ecf5..68f46c9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -88,6 +88,8 @@ + + nodeDataBeans; + private CaseHandlePresenterImpl caseHandlePresenter; + private String id; + private String changeState; + private String operationKey; + + + @Override + protected String setTitleName() { + return Constant.DEPT_PAGE_TITLES[1]; + } + + @Override + public int initLayoutView() { + return R.layout.activity_dept_adjust; + } + + @Override + public void initData() { + id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + + nextNodePresenter = new CaseNextNodePresenterImpl(this); + caseHandlePresenter = new CaseHandlePresenterImpl(this); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.caseOptTypeLayout: + if (nodeDataBeans != null) { + if (nodeDataBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("操作类型"); + for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { + 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(); + optTypeView.setText(tag); + optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); + changeState = String.valueOf(nodeBean.getNextState()); + operationKey = nodeBean.getOperationKey(); + } + }).build().show(); + } + } + break; + case R.id.commonTipsLayout: + new QMUIBottomSheet.BottomListSheetBuilder(this) + .setTitle("常见用语") + .addItem("请及时处理") + .addItem("调查后及时回复") + .setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + commonTipsView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + optionEditView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + } + }).build().show(); + break; + case R.id.submitButton: + String optType = optTypeView.getText().toString(); + if (optType.equals("")) { + ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); + return; + } + String optionInput = StringHelper.filterString(optionEditView.getText().toString()); + if (TextUtils.isEmpty(optionInput)) { + ToastHelper.showToast("不同意/同意的意见必须填写", ToastHelper.WARING); + return; + } + caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, + String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, + data.getProcessPersonid()); + break; + } + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseResourceView.setText(data.getSourceName()); + caseCreatorView.setText(data.getCreateUserName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + ArrayList urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(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 handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //获取处置类型 + nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); + } + } + + @Override + public void obtainNextNodeData(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + this.nodeDataBeans = resultBean.getData(); + if (nodeDataBeans.size() == 0) { + optTypeView.setText("无下级流转节点"); + } else { + CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); + + operationKey = dataBean.getOperationKey(); + changeState = String.valueOf(dataBean.getNextState()); + optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 + } + optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); + } + } + + @Override + public void showProgress() { + OtherUtils.showLoadingDialog(this, "处理中,请稍后"); + } + + @Override + public void hideProgress() { + OtherUtils.dismissLoadingDialog(); + } + + @Override + public void obtainCaseHandleResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); + DeptCaseAdjustFragment.sendEmptyMessage(Constant.DEPT_DONE); + DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); + finish(); + } 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 (nextNodePresenter != null) { + nextNodePresenter.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/DeptAuthorizeDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java new file mode 100644 index 0000000..de47420 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java @@ -0,0 +1,437 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +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.bean.ProcessPersonBean; +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.ProcessPersonPresenterImpl; +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.IHandleProcessView; +import com.casic.dcms.ui.fragment.dept.DeptCaseAuthorizeFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ItemDecorationSpace; +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.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; +import cn.jzvd.Jzvd; +import cn.jzvd.JzvdStd; + +public class DeptAuthorizeDetailActivity extends BaseCaseActivity implements View.OnClickListener, + ICaseDetailView, ICaseNextNodeView, IHandleProcessView, ICaseDetailHandleView { + + private Context context = DeptAuthorizeDetailActivity.this; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseResourceView) + TextView caseResourceView; + @BindView(R.id.caseCreatorView) + TextView caseCreatorView; + @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.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.audioPlayerView) + AudioPlayerView audioPlayerView; + @BindView(R.id.videoPlayerView) + JzvdStd videoPlayerView; + @BindView(R.id.caseHandleRecyclerView) + RecyclerView caseHandleRecyclerView; + @BindView(R.id.optTypeView) + TextView optTypeView; + @BindView(R.id.casePersonLayout) + RelativeLayout casePersonLayout; + @BindView(R.id.caseHandlePersonView) + TextView caseHandlePersonView; + @BindView(R.id.personLine) + View personLine; + @BindView(R.id.optionEditView) + EditText optionEditView; + @BindView(R.id.commonTipsView) + TextView commonTipsView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private CaseDetailPresenterImpl caseDetailPresenter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private CaseNextNodePresenterImpl nextNodePresenter; + private List nodeDataBeans; + private CaseHandlePresenterImpl caseHandlePresenter; + private ProcessPersonPresenterImpl handleProcessPresenter; + private List personBeans; + private String id; + private String changeState; + private String operationKey; + private String taskUserId; + + @Override + protected String setTitleName() { + return Constant.DEPT_PAGE_TITLES[2]; + } + + @Override + public int initLayoutView() { + return R.layout.activity_dept_authorize; + } + + @Override + public void initData() { + id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + + nextNodePresenter = new CaseNextNodePresenterImpl(this); + handleProcessPresenter = new ProcessPersonPresenterImpl(this); + caseHandlePresenter = new CaseHandlePresenterImpl(this); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.caseOptTypeLayout: + if (nodeDataBeans != null) { + if (nodeDataBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("操作类型"); + for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { + 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(); + optTypeView.setText(tag); + optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); + changeState = String.valueOf(nodeBean.getNextState()); + operationKey = nodeBean.getOperationKey(); + + if (tag.equals("返回处理")) { + casePersonLayout.setVisibility(View.VISIBLE); + personLine.setVisibility(View.VISIBLE); + + //获取下级处置人员名单 + handleProcessPresenter.onReadyRetrofitRequest(); + } else { + casePersonLayout.setVisibility(View.GONE); + personLine.setVisibility(View.GONE); + } + } + }).build().show(); + } + } + break; + case R.id.casePersonLayout: + if (personBeans != null) { + if (personBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("处置人员"); + for (ProcessPersonBean.DataBean dataBean : personBeans) { + sheetBuilder.addItem(dataBean.getName()); + } + sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + caseHandlePersonView.setText(tag); + caseHandlePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + taskUserId = personBeans.get(position).getId(); + } + }).build().show(); + } + } + break; + case R.id.commonTipsLayout: + new QMUIBottomSheet.BottomListSheetBuilder(this) + .setTitle("常见用语") + .addItem("请及时处理") + .addItem("调查后及时回复") + .setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + commonTipsView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + optionEditView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + } + }).build().show(); + break; + case R.id.submitButton: + String optType = optTypeView.getText().toString(); + if (optType.equals("")) { + ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); + return; + } + if (optType.equals("返回处理")) { + //选择处理人员时,必选一个处置人员 + String handlePerson = caseHandlePersonView.getText().toString(); + if (handlePerson.equals("")) { + ToastHelper.showToast("当前状态必须指定处置员", ToastHelper.WARING); + return; + } + } + String optionInput = StringHelper.filterString(optionEditView.getText().toString()); + if (TextUtils.isEmpty(optionInput)) { + ToastHelper.showToast("处理意见必须填写", ToastHelper.WARING); + return; + } + //只有选择返回处理的时候taskUserId才会不为空,否则用当前流程人员的id代替 + if (TextUtils.isEmpty(taskUserId)) { + taskUserId = data.getProcessPersonid(); + } + caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, + String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, + taskUserId); + break; + } + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseResourceView.setText(data.getSourceName()); + caseCreatorView.setText(data.getCreateUserName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + ArrayList urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(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 handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //获取处置类型 + nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); + } + } + + @Override + public void obtainNextNodeData(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + this.nodeDataBeans = resultBean.getData(); + if (nodeDataBeans.size() == 0) { + optTypeView.setText("无下级流转节点"); + } else { + CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); + + operationKey = dataBean.getOperationKey(); + changeState = String.valueOf(dataBean.getNextState()); + optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 + } + optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); + } + } + + @Override + public void showProgress() { + OtherUtils.showLoadingDialog(this, "处理中,请稍后"); + } + + @Override + public void hideProgress() { + OtherUtils.dismissLoadingDialog(); + } + + @Override + public void obtainCaseHandleResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); + DeptCaseAuthorizeFragment.sendEmptyMessage(Constant.DEPT_DONE); + DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); + finish(); + } else { + ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); + } + } + + + @Override + public void obtainResultData(ProcessPersonBean resultBean) { + if (resultBean.isSuccess()) { + this.personBeans = resultBean.getData(); + if (personBeans.size() == 0) { + caseHandlePersonView.setText("无处置人员"); + } else { + ProcessPersonBean.DataBean dataBean = personBeans.get(0); + taskUserId = dataBean.getId(); + caseHandlePersonView.setText(dataBean.getName());//默认选择第一个 + } + caseHandlePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (nextNodePresenter != null) { + nextNodePresenter.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/DeptHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java index e698b07..3de76c2 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java @@ -59,10 +59,10 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new DeptCaseProcessFragment());//待处理 fragmentList.add(new DeptCaseAdjustFragment());//部门调整 - fragmentList.add(new DeptCasePostponeFragment());//二级缓办 fragmentList.add(new DeptCaseAuthorizeFragment());//部门授权 + fragmentList.add(new DeptCaseHandledFragment());//已处理 + fragmentList.add(new DeptCasePostponeFragment());//二级缓办 fragmentList.add(new DeptCaseDelayedFragment());//二级延期 - fragmentList.add(new DeptCaseHandledFragment()); SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.DEPT_PAGE_TITLES, fragmentList); viewPager.setAdapter(adapter); //绑定TabLayout diff --git a/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java index 1517541..c751109 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java @@ -108,7 +108,7 @@ @Override protected String setTitleName() { - return "待处理"; + return Constant.DEPT_PAGE_TITLES[0]; } @Override @@ -123,7 +123,6 @@ caseDetailPresenter.onReadyRetrofitRequest(id); nextNodePresenter = new CaseNextNodePresenterImpl(this); - handleProcessPresenter = new ProcessPersonPresenterImpl(this); caseHandlePresenter = new CaseHandlePresenterImpl(this); } @@ -399,7 +398,7 @@ changeState = String.valueOf(dataBean.getNextState()); optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 } - caseHandlePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); } else { ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d99ecf5..68f46c9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -88,6 +88,8 @@ + + nodeDataBeans; + private CaseHandlePresenterImpl caseHandlePresenter; + private String id; + private String changeState; + private String operationKey; + + + @Override + protected String setTitleName() { + return Constant.DEPT_PAGE_TITLES[1]; + } + + @Override + public int initLayoutView() { + return R.layout.activity_dept_adjust; + } + + @Override + public void initData() { + id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + + nextNodePresenter = new CaseNextNodePresenterImpl(this); + caseHandlePresenter = new CaseHandlePresenterImpl(this); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.caseOptTypeLayout: + if (nodeDataBeans != null) { + if (nodeDataBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("操作类型"); + for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { + 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(); + optTypeView.setText(tag); + optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); + changeState = String.valueOf(nodeBean.getNextState()); + operationKey = nodeBean.getOperationKey(); + } + }).build().show(); + } + } + break; + case R.id.commonTipsLayout: + new QMUIBottomSheet.BottomListSheetBuilder(this) + .setTitle("常见用语") + .addItem("请及时处理") + .addItem("调查后及时回复") + .setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + commonTipsView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + optionEditView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + } + }).build().show(); + break; + case R.id.submitButton: + String optType = optTypeView.getText().toString(); + if (optType.equals("")) { + ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); + return; + } + String optionInput = StringHelper.filterString(optionEditView.getText().toString()); + if (TextUtils.isEmpty(optionInput)) { + ToastHelper.showToast("不同意/同意的意见必须填写", ToastHelper.WARING); + return; + } + caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, + String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, + data.getProcessPersonid()); + break; + } + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseResourceView.setText(data.getSourceName()); + caseCreatorView.setText(data.getCreateUserName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + ArrayList urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(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 handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //获取处置类型 + nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); + } + } + + @Override + public void obtainNextNodeData(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + this.nodeDataBeans = resultBean.getData(); + if (nodeDataBeans.size() == 0) { + optTypeView.setText("无下级流转节点"); + } else { + CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); + + operationKey = dataBean.getOperationKey(); + changeState = String.valueOf(dataBean.getNextState()); + optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 + } + optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); + } + } + + @Override + public void showProgress() { + OtherUtils.showLoadingDialog(this, "处理中,请稍后"); + } + + @Override + public void hideProgress() { + OtherUtils.dismissLoadingDialog(); + } + + @Override + public void obtainCaseHandleResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); + DeptCaseAdjustFragment.sendEmptyMessage(Constant.DEPT_DONE); + DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); + finish(); + } 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 (nextNodePresenter != null) { + nextNodePresenter.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/DeptAuthorizeDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java new file mode 100644 index 0000000..de47420 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java @@ -0,0 +1,437 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +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.bean.ProcessPersonBean; +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.ProcessPersonPresenterImpl; +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.IHandleProcessView; +import com.casic.dcms.ui.fragment.dept.DeptCaseAuthorizeFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ItemDecorationSpace; +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.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; +import cn.jzvd.Jzvd; +import cn.jzvd.JzvdStd; + +public class DeptAuthorizeDetailActivity extends BaseCaseActivity implements View.OnClickListener, + ICaseDetailView, ICaseNextNodeView, IHandleProcessView, ICaseDetailHandleView { + + private Context context = DeptAuthorizeDetailActivity.this; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseResourceView) + TextView caseResourceView; + @BindView(R.id.caseCreatorView) + TextView caseCreatorView; + @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.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.audioPlayerView) + AudioPlayerView audioPlayerView; + @BindView(R.id.videoPlayerView) + JzvdStd videoPlayerView; + @BindView(R.id.caseHandleRecyclerView) + RecyclerView caseHandleRecyclerView; + @BindView(R.id.optTypeView) + TextView optTypeView; + @BindView(R.id.casePersonLayout) + RelativeLayout casePersonLayout; + @BindView(R.id.caseHandlePersonView) + TextView caseHandlePersonView; + @BindView(R.id.personLine) + View personLine; + @BindView(R.id.optionEditView) + EditText optionEditView; + @BindView(R.id.commonTipsView) + TextView commonTipsView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private CaseDetailPresenterImpl caseDetailPresenter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private CaseNextNodePresenterImpl nextNodePresenter; + private List nodeDataBeans; + private CaseHandlePresenterImpl caseHandlePresenter; + private ProcessPersonPresenterImpl handleProcessPresenter; + private List personBeans; + private String id; + private String changeState; + private String operationKey; + private String taskUserId; + + @Override + protected String setTitleName() { + return Constant.DEPT_PAGE_TITLES[2]; + } + + @Override + public int initLayoutView() { + return R.layout.activity_dept_authorize; + } + + @Override + public void initData() { + id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + + nextNodePresenter = new CaseNextNodePresenterImpl(this); + handleProcessPresenter = new ProcessPersonPresenterImpl(this); + caseHandlePresenter = new CaseHandlePresenterImpl(this); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.caseOptTypeLayout: + if (nodeDataBeans != null) { + if (nodeDataBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("操作类型"); + for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { + 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(); + optTypeView.setText(tag); + optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); + changeState = String.valueOf(nodeBean.getNextState()); + operationKey = nodeBean.getOperationKey(); + + if (tag.equals("返回处理")) { + casePersonLayout.setVisibility(View.VISIBLE); + personLine.setVisibility(View.VISIBLE); + + //获取下级处置人员名单 + handleProcessPresenter.onReadyRetrofitRequest(); + } else { + casePersonLayout.setVisibility(View.GONE); + personLine.setVisibility(View.GONE); + } + } + }).build().show(); + } + } + break; + case R.id.casePersonLayout: + if (personBeans != null) { + if (personBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("处置人员"); + for (ProcessPersonBean.DataBean dataBean : personBeans) { + sheetBuilder.addItem(dataBean.getName()); + } + sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + caseHandlePersonView.setText(tag); + caseHandlePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + taskUserId = personBeans.get(position).getId(); + } + }).build().show(); + } + } + break; + case R.id.commonTipsLayout: + new QMUIBottomSheet.BottomListSheetBuilder(this) + .setTitle("常见用语") + .addItem("请及时处理") + .addItem("调查后及时回复") + .setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + commonTipsView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + optionEditView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + } + }).build().show(); + break; + case R.id.submitButton: + String optType = optTypeView.getText().toString(); + if (optType.equals("")) { + ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); + return; + } + if (optType.equals("返回处理")) { + //选择处理人员时,必选一个处置人员 + String handlePerson = caseHandlePersonView.getText().toString(); + if (handlePerson.equals("")) { + ToastHelper.showToast("当前状态必须指定处置员", ToastHelper.WARING); + return; + } + } + String optionInput = StringHelper.filterString(optionEditView.getText().toString()); + if (TextUtils.isEmpty(optionInput)) { + ToastHelper.showToast("处理意见必须填写", ToastHelper.WARING); + return; + } + //只有选择返回处理的时候taskUserId才会不为空,否则用当前流程人员的id代替 + if (TextUtils.isEmpty(taskUserId)) { + taskUserId = data.getProcessPersonid(); + } + caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, + String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, + taskUserId); + break; + } + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseResourceView.setText(data.getSourceName()); + caseCreatorView.setText(data.getCreateUserName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + ArrayList urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(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 handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //获取处置类型 + nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); + } + } + + @Override + public void obtainNextNodeData(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + this.nodeDataBeans = resultBean.getData(); + if (nodeDataBeans.size() == 0) { + optTypeView.setText("无下级流转节点"); + } else { + CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); + + operationKey = dataBean.getOperationKey(); + changeState = String.valueOf(dataBean.getNextState()); + optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 + } + optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); + } + } + + @Override + public void showProgress() { + OtherUtils.showLoadingDialog(this, "处理中,请稍后"); + } + + @Override + public void hideProgress() { + OtherUtils.dismissLoadingDialog(); + } + + @Override + public void obtainCaseHandleResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); + DeptCaseAuthorizeFragment.sendEmptyMessage(Constant.DEPT_DONE); + DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); + finish(); + } else { + ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); + } + } + + + @Override + public void obtainResultData(ProcessPersonBean resultBean) { + if (resultBean.isSuccess()) { + this.personBeans = resultBean.getData(); + if (personBeans.size() == 0) { + caseHandlePersonView.setText("无处置人员"); + } else { + ProcessPersonBean.DataBean dataBean = personBeans.get(0); + taskUserId = dataBean.getId(); + caseHandlePersonView.setText(dataBean.getName());//默认选择第一个 + } + caseHandlePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (nextNodePresenter != null) { + nextNodePresenter.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/DeptHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java index e698b07..3de76c2 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java @@ -59,10 +59,10 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new DeptCaseProcessFragment());//待处理 fragmentList.add(new DeptCaseAdjustFragment());//部门调整 - fragmentList.add(new DeptCasePostponeFragment());//二级缓办 fragmentList.add(new DeptCaseAuthorizeFragment());//部门授权 + fragmentList.add(new DeptCaseHandledFragment());//已处理 + fragmentList.add(new DeptCasePostponeFragment());//二级缓办 fragmentList.add(new DeptCaseDelayedFragment());//二级延期 - fragmentList.add(new DeptCaseHandledFragment()); SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.DEPT_PAGE_TITLES, fragmentList); viewPager.setAdapter(adapter); //绑定TabLayout diff --git a/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java index 1517541..c751109 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java @@ -108,7 +108,7 @@ @Override protected String setTitleName() { - return "待处理"; + return Constant.DEPT_PAGE_TITLES[0]; } @Override @@ -123,7 +123,6 @@ caseDetailPresenter.onReadyRetrofitRequest(id); nextNodePresenter = new CaseNextNodePresenterImpl(this); - handleProcessPresenter = new ProcessPersonPresenterImpl(this); caseHandlePresenter = new CaseHandlePresenterImpl(this); } @@ -399,7 +398,7 @@ changeState = String.valueOf(dataBean.getNextState()); optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 } - caseHandlePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); } else { ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseAdjustFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseAdjustFragment.java index d752957..71363f1 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseAdjustFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseAdjustFragment.java @@ -1,6 +1,7 @@ package com.casic.dcms.ui.fragment.dept; import android.content.Context; +import android.content.Intent; import android.os.Handler; import android.os.Message; @@ -15,6 +16,7 @@ import com.casic.dcms.bean.AuthorizeOrAdjustBean; import com.casic.dcms.mvp.presenter.DeptAdjustPresenterImpl; import com.casic.dcms.mvp.view.IDeptAuthorizeOrAdjustView; +import com.casic.dcms.ui.DeptAdjustDetailActivity; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; @@ -123,7 +125,9 @@ fragment.adapter.setOnItemClickListener(new DeptAuthorizeOrAdjustAdapter.OnItemClickListener() { @Override public void onClick(int position) { - + Intent intent = new Intent(fragment.context, DeptAdjustDetailActivity.class); + intent.putExtra("id", fragment.dataBeans.get(position).getId()); + fragment.startActivity(intent); } }); } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d99ecf5..68f46c9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -88,6 +88,8 @@ + + nodeDataBeans; + private CaseHandlePresenterImpl caseHandlePresenter; + private String id; + private String changeState; + private String operationKey; + + + @Override + protected String setTitleName() { + return Constant.DEPT_PAGE_TITLES[1]; + } + + @Override + public int initLayoutView() { + return R.layout.activity_dept_adjust; + } + + @Override + public void initData() { + id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + + nextNodePresenter = new CaseNextNodePresenterImpl(this); + caseHandlePresenter = new CaseHandlePresenterImpl(this); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.caseOptTypeLayout: + if (nodeDataBeans != null) { + if (nodeDataBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("操作类型"); + for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { + 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(); + optTypeView.setText(tag); + optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); + changeState = String.valueOf(nodeBean.getNextState()); + operationKey = nodeBean.getOperationKey(); + } + }).build().show(); + } + } + break; + case R.id.commonTipsLayout: + new QMUIBottomSheet.BottomListSheetBuilder(this) + .setTitle("常见用语") + .addItem("请及时处理") + .addItem("调查后及时回复") + .setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + commonTipsView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + optionEditView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + } + }).build().show(); + break; + case R.id.submitButton: + String optType = optTypeView.getText().toString(); + if (optType.equals("")) { + ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); + return; + } + String optionInput = StringHelper.filterString(optionEditView.getText().toString()); + if (TextUtils.isEmpty(optionInput)) { + ToastHelper.showToast("不同意/同意的意见必须填写", ToastHelper.WARING); + return; + } + caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, + String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, + data.getProcessPersonid()); + break; + } + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseResourceView.setText(data.getSourceName()); + caseCreatorView.setText(data.getCreateUserName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + ArrayList urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(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 handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //获取处置类型 + nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); + } + } + + @Override + public void obtainNextNodeData(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + this.nodeDataBeans = resultBean.getData(); + if (nodeDataBeans.size() == 0) { + optTypeView.setText("无下级流转节点"); + } else { + CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); + + operationKey = dataBean.getOperationKey(); + changeState = String.valueOf(dataBean.getNextState()); + optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 + } + optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); + } + } + + @Override + public void showProgress() { + OtherUtils.showLoadingDialog(this, "处理中,请稍后"); + } + + @Override + public void hideProgress() { + OtherUtils.dismissLoadingDialog(); + } + + @Override + public void obtainCaseHandleResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); + DeptCaseAdjustFragment.sendEmptyMessage(Constant.DEPT_DONE); + DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); + finish(); + } 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 (nextNodePresenter != null) { + nextNodePresenter.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/DeptAuthorizeDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java new file mode 100644 index 0000000..de47420 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java @@ -0,0 +1,437 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +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.bean.ProcessPersonBean; +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.ProcessPersonPresenterImpl; +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.IHandleProcessView; +import com.casic.dcms.ui.fragment.dept.DeptCaseAuthorizeFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ItemDecorationSpace; +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.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; +import cn.jzvd.Jzvd; +import cn.jzvd.JzvdStd; + +public class DeptAuthorizeDetailActivity extends BaseCaseActivity implements View.OnClickListener, + ICaseDetailView, ICaseNextNodeView, IHandleProcessView, ICaseDetailHandleView { + + private Context context = DeptAuthorizeDetailActivity.this; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseResourceView) + TextView caseResourceView; + @BindView(R.id.caseCreatorView) + TextView caseCreatorView; + @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.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.audioPlayerView) + AudioPlayerView audioPlayerView; + @BindView(R.id.videoPlayerView) + JzvdStd videoPlayerView; + @BindView(R.id.caseHandleRecyclerView) + RecyclerView caseHandleRecyclerView; + @BindView(R.id.optTypeView) + TextView optTypeView; + @BindView(R.id.casePersonLayout) + RelativeLayout casePersonLayout; + @BindView(R.id.caseHandlePersonView) + TextView caseHandlePersonView; + @BindView(R.id.personLine) + View personLine; + @BindView(R.id.optionEditView) + EditText optionEditView; + @BindView(R.id.commonTipsView) + TextView commonTipsView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private CaseDetailPresenterImpl caseDetailPresenter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private CaseNextNodePresenterImpl nextNodePresenter; + private List nodeDataBeans; + private CaseHandlePresenterImpl caseHandlePresenter; + private ProcessPersonPresenterImpl handleProcessPresenter; + private List personBeans; + private String id; + private String changeState; + private String operationKey; + private String taskUserId; + + @Override + protected String setTitleName() { + return Constant.DEPT_PAGE_TITLES[2]; + } + + @Override + public int initLayoutView() { + return R.layout.activity_dept_authorize; + } + + @Override + public void initData() { + id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + + nextNodePresenter = new CaseNextNodePresenterImpl(this); + handleProcessPresenter = new ProcessPersonPresenterImpl(this); + caseHandlePresenter = new CaseHandlePresenterImpl(this); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.caseOptTypeLayout: + if (nodeDataBeans != null) { + if (nodeDataBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("操作类型"); + for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { + 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(); + optTypeView.setText(tag); + optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); + changeState = String.valueOf(nodeBean.getNextState()); + operationKey = nodeBean.getOperationKey(); + + if (tag.equals("返回处理")) { + casePersonLayout.setVisibility(View.VISIBLE); + personLine.setVisibility(View.VISIBLE); + + //获取下级处置人员名单 + handleProcessPresenter.onReadyRetrofitRequest(); + } else { + casePersonLayout.setVisibility(View.GONE); + personLine.setVisibility(View.GONE); + } + } + }).build().show(); + } + } + break; + case R.id.casePersonLayout: + if (personBeans != null) { + if (personBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("处置人员"); + for (ProcessPersonBean.DataBean dataBean : personBeans) { + sheetBuilder.addItem(dataBean.getName()); + } + sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + caseHandlePersonView.setText(tag); + caseHandlePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + taskUserId = personBeans.get(position).getId(); + } + }).build().show(); + } + } + break; + case R.id.commonTipsLayout: + new QMUIBottomSheet.BottomListSheetBuilder(this) + .setTitle("常见用语") + .addItem("请及时处理") + .addItem("调查后及时回复") + .setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + commonTipsView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + optionEditView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + } + }).build().show(); + break; + case R.id.submitButton: + String optType = optTypeView.getText().toString(); + if (optType.equals("")) { + ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); + return; + } + if (optType.equals("返回处理")) { + //选择处理人员时,必选一个处置人员 + String handlePerson = caseHandlePersonView.getText().toString(); + if (handlePerson.equals("")) { + ToastHelper.showToast("当前状态必须指定处置员", ToastHelper.WARING); + return; + } + } + String optionInput = StringHelper.filterString(optionEditView.getText().toString()); + if (TextUtils.isEmpty(optionInput)) { + ToastHelper.showToast("处理意见必须填写", ToastHelper.WARING); + return; + } + //只有选择返回处理的时候taskUserId才会不为空,否则用当前流程人员的id代替 + if (TextUtils.isEmpty(taskUserId)) { + taskUserId = data.getProcessPersonid(); + } + caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, + String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, + taskUserId); + break; + } + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseResourceView.setText(data.getSourceName()); + caseCreatorView.setText(data.getCreateUserName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + ArrayList urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(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 handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //获取处置类型 + nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); + } + } + + @Override + public void obtainNextNodeData(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + this.nodeDataBeans = resultBean.getData(); + if (nodeDataBeans.size() == 0) { + optTypeView.setText("无下级流转节点"); + } else { + CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); + + operationKey = dataBean.getOperationKey(); + changeState = String.valueOf(dataBean.getNextState()); + optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 + } + optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); + } + } + + @Override + public void showProgress() { + OtherUtils.showLoadingDialog(this, "处理中,请稍后"); + } + + @Override + public void hideProgress() { + OtherUtils.dismissLoadingDialog(); + } + + @Override + public void obtainCaseHandleResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); + DeptCaseAuthorizeFragment.sendEmptyMessage(Constant.DEPT_DONE); + DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); + finish(); + } else { + ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); + } + } + + + @Override + public void obtainResultData(ProcessPersonBean resultBean) { + if (resultBean.isSuccess()) { + this.personBeans = resultBean.getData(); + if (personBeans.size() == 0) { + caseHandlePersonView.setText("无处置人员"); + } else { + ProcessPersonBean.DataBean dataBean = personBeans.get(0); + taskUserId = dataBean.getId(); + caseHandlePersonView.setText(dataBean.getName());//默认选择第一个 + } + caseHandlePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (nextNodePresenter != null) { + nextNodePresenter.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/DeptHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java index e698b07..3de76c2 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java @@ -59,10 +59,10 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new DeptCaseProcessFragment());//待处理 fragmentList.add(new DeptCaseAdjustFragment());//部门调整 - fragmentList.add(new DeptCasePostponeFragment());//二级缓办 fragmentList.add(new DeptCaseAuthorizeFragment());//部门授权 + fragmentList.add(new DeptCaseHandledFragment());//已处理 + fragmentList.add(new DeptCasePostponeFragment());//二级缓办 fragmentList.add(new DeptCaseDelayedFragment());//二级延期 - fragmentList.add(new DeptCaseHandledFragment()); SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.DEPT_PAGE_TITLES, fragmentList); viewPager.setAdapter(adapter); //绑定TabLayout diff --git a/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java index 1517541..c751109 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java @@ -108,7 +108,7 @@ @Override protected String setTitleName() { - return "待处理"; + return Constant.DEPT_PAGE_TITLES[0]; } @Override @@ -123,7 +123,6 @@ caseDetailPresenter.onReadyRetrofitRequest(id); nextNodePresenter = new CaseNextNodePresenterImpl(this); - handleProcessPresenter = new ProcessPersonPresenterImpl(this); caseHandlePresenter = new CaseHandlePresenterImpl(this); } @@ -399,7 +398,7 @@ changeState = String.valueOf(dataBean.getNextState()); optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 } - caseHandlePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); } else { ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseAdjustFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseAdjustFragment.java index d752957..71363f1 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseAdjustFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseAdjustFragment.java @@ -1,6 +1,7 @@ package com.casic.dcms.ui.fragment.dept; import android.content.Context; +import android.content.Intent; import android.os.Handler; import android.os.Message; @@ -15,6 +16,7 @@ import com.casic.dcms.bean.AuthorizeOrAdjustBean; import com.casic.dcms.mvp.presenter.DeptAdjustPresenterImpl; import com.casic.dcms.mvp.view.IDeptAuthorizeOrAdjustView; +import com.casic.dcms.ui.DeptAdjustDetailActivity; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; @@ -123,7 +125,9 @@ fragment.adapter.setOnItemClickListener(new DeptAuthorizeOrAdjustAdapter.OnItemClickListener() { @Override public void onClick(int position) { - + Intent intent = new Intent(fragment.context, DeptAdjustDetailActivity.class); + intent.putExtra("id", fragment.dataBeans.get(position).getId()); + fragment.startActivity(intent); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseAuthorizeFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseAuthorizeFragment.java index e9476ba..6f79a15 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseAuthorizeFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseAuthorizeFragment.java @@ -1,6 +1,7 @@ package com.casic.dcms.ui.fragment.dept; import android.content.Context; +import android.content.Intent; import android.os.Handler; import android.os.Message; @@ -15,6 +16,7 @@ import com.casic.dcms.bean.AuthorizeOrAdjustBean; import com.casic.dcms.mvp.presenter.DeptAuthorizePresenterImpl; import com.casic.dcms.mvp.view.IDeptAuthorizeOrAdjustView; +import com.casic.dcms.ui.DeptAuthorizeDetailActivity; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; @@ -123,7 +125,9 @@ fragment.adapter.setOnItemClickListener(new DeptAuthorizeOrAdjustAdapter.OnItemClickListener() { @Override public void onClick(int position) { - + Intent intent = new Intent(fragment.context, DeptAuthorizeDetailActivity.class); + intent.putExtra("id", fragment.dataBeans.get(position).getId()); + fragment.startActivity(intent); } }); } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d99ecf5..68f46c9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -88,6 +88,8 @@ + + nodeDataBeans; + private CaseHandlePresenterImpl caseHandlePresenter; + private String id; + private String changeState; + private String operationKey; + + + @Override + protected String setTitleName() { + return Constant.DEPT_PAGE_TITLES[1]; + } + + @Override + public int initLayoutView() { + return R.layout.activity_dept_adjust; + } + + @Override + public void initData() { + id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + + nextNodePresenter = new CaseNextNodePresenterImpl(this); + caseHandlePresenter = new CaseHandlePresenterImpl(this); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.caseOptTypeLayout: + if (nodeDataBeans != null) { + if (nodeDataBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("操作类型"); + for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { + 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(); + optTypeView.setText(tag); + optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); + changeState = String.valueOf(nodeBean.getNextState()); + operationKey = nodeBean.getOperationKey(); + } + }).build().show(); + } + } + break; + case R.id.commonTipsLayout: + new QMUIBottomSheet.BottomListSheetBuilder(this) + .setTitle("常见用语") + .addItem("请及时处理") + .addItem("调查后及时回复") + .setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + commonTipsView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + optionEditView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + } + }).build().show(); + break; + case R.id.submitButton: + String optType = optTypeView.getText().toString(); + if (optType.equals("")) { + ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); + return; + } + String optionInput = StringHelper.filterString(optionEditView.getText().toString()); + if (TextUtils.isEmpty(optionInput)) { + ToastHelper.showToast("不同意/同意的意见必须填写", ToastHelper.WARING); + return; + } + caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, + String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, + data.getProcessPersonid()); + break; + } + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseResourceView.setText(data.getSourceName()); + caseCreatorView.setText(data.getCreateUserName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + ArrayList urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(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 handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //获取处置类型 + nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); + } + } + + @Override + public void obtainNextNodeData(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + this.nodeDataBeans = resultBean.getData(); + if (nodeDataBeans.size() == 0) { + optTypeView.setText("无下级流转节点"); + } else { + CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); + + operationKey = dataBean.getOperationKey(); + changeState = String.valueOf(dataBean.getNextState()); + optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 + } + optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); + } + } + + @Override + public void showProgress() { + OtherUtils.showLoadingDialog(this, "处理中,请稍后"); + } + + @Override + public void hideProgress() { + OtherUtils.dismissLoadingDialog(); + } + + @Override + public void obtainCaseHandleResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); + DeptCaseAdjustFragment.sendEmptyMessage(Constant.DEPT_DONE); + DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); + finish(); + } 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 (nextNodePresenter != null) { + nextNodePresenter.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/DeptAuthorizeDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java new file mode 100644 index 0000000..de47420 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java @@ -0,0 +1,437 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +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.bean.ProcessPersonBean; +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.ProcessPersonPresenterImpl; +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.IHandleProcessView; +import com.casic.dcms.ui.fragment.dept.DeptCaseAuthorizeFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ItemDecorationSpace; +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.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; +import cn.jzvd.Jzvd; +import cn.jzvd.JzvdStd; + +public class DeptAuthorizeDetailActivity extends BaseCaseActivity implements View.OnClickListener, + ICaseDetailView, ICaseNextNodeView, IHandleProcessView, ICaseDetailHandleView { + + private Context context = DeptAuthorizeDetailActivity.this; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseResourceView) + TextView caseResourceView; + @BindView(R.id.caseCreatorView) + TextView caseCreatorView; + @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.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.audioPlayerView) + AudioPlayerView audioPlayerView; + @BindView(R.id.videoPlayerView) + JzvdStd videoPlayerView; + @BindView(R.id.caseHandleRecyclerView) + RecyclerView caseHandleRecyclerView; + @BindView(R.id.optTypeView) + TextView optTypeView; + @BindView(R.id.casePersonLayout) + RelativeLayout casePersonLayout; + @BindView(R.id.caseHandlePersonView) + TextView caseHandlePersonView; + @BindView(R.id.personLine) + View personLine; + @BindView(R.id.optionEditView) + EditText optionEditView; + @BindView(R.id.commonTipsView) + TextView commonTipsView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private CaseDetailPresenterImpl caseDetailPresenter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private CaseNextNodePresenterImpl nextNodePresenter; + private List nodeDataBeans; + private CaseHandlePresenterImpl caseHandlePresenter; + private ProcessPersonPresenterImpl handleProcessPresenter; + private List personBeans; + private String id; + private String changeState; + private String operationKey; + private String taskUserId; + + @Override + protected String setTitleName() { + return Constant.DEPT_PAGE_TITLES[2]; + } + + @Override + public int initLayoutView() { + return R.layout.activity_dept_authorize; + } + + @Override + public void initData() { + id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + + nextNodePresenter = new CaseNextNodePresenterImpl(this); + handleProcessPresenter = new ProcessPersonPresenterImpl(this); + caseHandlePresenter = new CaseHandlePresenterImpl(this); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.caseOptTypeLayout: + if (nodeDataBeans != null) { + if (nodeDataBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("操作类型"); + for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { + 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(); + optTypeView.setText(tag); + optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); + changeState = String.valueOf(nodeBean.getNextState()); + operationKey = nodeBean.getOperationKey(); + + if (tag.equals("返回处理")) { + casePersonLayout.setVisibility(View.VISIBLE); + personLine.setVisibility(View.VISIBLE); + + //获取下级处置人员名单 + handleProcessPresenter.onReadyRetrofitRequest(); + } else { + casePersonLayout.setVisibility(View.GONE); + personLine.setVisibility(View.GONE); + } + } + }).build().show(); + } + } + break; + case R.id.casePersonLayout: + if (personBeans != null) { + if (personBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("处置人员"); + for (ProcessPersonBean.DataBean dataBean : personBeans) { + sheetBuilder.addItem(dataBean.getName()); + } + sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + caseHandlePersonView.setText(tag); + caseHandlePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + taskUserId = personBeans.get(position).getId(); + } + }).build().show(); + } + } + break; + case R.id.commonTipsLayout: + new QMUIBottomSheet.BottomListSheetBuilder(this) + .setTitle("常见用语") + .addItem("请及时处理") + .addItem("调查后及时回复") + .setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + commonTipsView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + optionEditView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + } + }).build().show(); + break; + case R.id.submitButton: + String optType = optTypeView.getText().toString(); + if (optType.equals("")) { + ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); + return; + } + if (optType.equals("返回处理")) { + //选择处理人员时,必选一个处置人员 + String handlePerson = caseHandlePersonView.getText().toString(); + if (handlePerson.equals("")) { + ToastHelper.showToast("当前状态必须指定处置员", ToastHelper.WARING); + return; + } + } + String optionInput = StringHelper.filterString(optionEditView.getText().toString()); + if (TextUtils.isEmpty(optionInput)) { + ToastHelper.showToast("处理意见必须填写", ToastHelper.WARING); + return; + } + //只有选择返回处理的时候taskUserId才会不为空,否则用当前流程人员的id代替 + if (TextUtils.isEmpty(taskUserId)) { + taskUserId = data.getProcessPersonid(); + } + caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, + String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, + taskUserId); + break; + } + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseResourceView.setText(data.getSourceName()); + caseCreatorView.setText(data.getCreateUserName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + ArrayList urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(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 handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //获取处置类型 + nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); + } + } + + @Override + public void obtainNextNodeData(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + this.nodeDataBeans = resultBean.getData(); + if (nodeDataBeans.size() == 0) { + optTypeView.setText("无下级流转节点"); + } else { + CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); + + operationKey = dataBean.getOperationKey(); + changeState = String.valueOf(dataBean.getNextState()); + optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 + } + optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); + } + } + + @Override + public void showProgress() { + OtherUtils.showLoadingDialog(this, "处理中,请稍后"); + } + + @Override + public void hideProgress() { + OtherUtils.dismissLoadingDialog(); + } + + @Override + public void obtainCaseHandleResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); + DeptCaseAuthorizeFragment.sendEmptyMessage(Constant.DEPT_DONE); + DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); + finish(); + } else { + ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); + } + } + + + @Override + public void obtainResultData(ProcessPersonBean resultBean) { + if (resultBean.isSuccess()) { + this.personBeans = resultBean.getData(); + if (personBeans.size() == 0) { + caseHandlePersonView.setText("无处置人员"); + } else { + ProcessPersonBean.DataBean dataBean = personBeans.get(0); + taskUserId = dataBean.getId(); + caseHandlePersonView.setText(dataBean.getName());//默认选择第一个 + } + caseHandlePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (nextNodePresenter != null) { + nextNodePresenter.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/DeptHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java index e698b07..3de76c2 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java @@ -59,10 +59,10 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new DeptCaseProcessFragment());//待处理 fragmentList.add(new DeptCaseAdjustFragment());//部门调整 - fragmentList.add(new DeptCasePostponeFragment());//二级缓办 fragmentList.add(new DeptCaseAuthorizeFragment());//部门授权 + fragmentList.add(new DeptCaseHandledFragment());//已处理 + fragmentList.add(new DeptCasePostponeFragment());//二级缓办 fragmentList.add(new DeptCaseDelayedFragment());//二级延期 - fragmentList.add(new DeptCaseHandledFragment()); SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.DEPT_PAGE_TITLES, fragmentList); viewPager.setAdapter(adapter); //绑定TabLayout diff --git a/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java index 1517541..c751109 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java @@ -108,7 +108,7 @@ @Override protected String setTitleName() { - return "待处理"; + return Constant.DEPT_PAGE_TITLES[0]; } @Override @@ -123,7 +123,6 @@ caseDetailPresenter.onReadyRetrofitRequest(id); nextNodePresenter = new CaseNextNodePresenterImpl(this); - handleProcessPresenter = new ProcessPersonPresenterImpl(this); caseHandlePresenter = new CaseHandlePresenterImpl(this); } @@ -399,7 +398,7 @@ changeState = String.valueOf(dataBean.getNextState()); optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 } - caseHandlePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); } else { ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseAdjustFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseAdjustFragment.java index d752957..71363f1 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseAdjustFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseAdjustFragment.java @@ -1,6 +1,7 @@ package com.casic.dcms.ui.fragment.dept; import android.content.Context; +import android.content.Intent; import android.os.Handler; import android.os.Message; @@ -15,6 +16,7 @@ import com.casic.dcms.bean.AuthorizeOrAdjustBean; import com.casic.dcms.mvp.presenter.DeptAdjustPresenterImpl; import com.casic.dcms.mvp.view.IDeptAuthorizeOrAdjustView; +import com.casic.dcms.ui.DeptAdjustDetailActivity; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; @@ -123,7 +125,9 @@ fragment.adapter.setOnItemClickListener(new DeptAuthorizeOrAdjustAdapter.OnItemClickListener() { @Override public void onClick(int position) { - + Intent intent = new Intent(fragment.context, DeptAdjustDetailActivity.class); + intent.putExtra("id", fragment.dataBeans.get(position).getId()); + fragment.startActivity(intent); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseAuthorizeFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseAuthorizeFragment.java index e9476ba..6f79a15 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseAuthorizeFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseAuthorizeFragment.java @@ -1,6 +1,7 @@ package com.casic.dcms.ui.fragment.dept; import android.content.Context; +import android.content.Intent; import android.os.Handler; import android.os.Message; @@ -15,6 +16,7 @@ import com.casic.dcms.bean.AuthorizeOrAdjustBean; import com.casic.dcms.mvp.presenter.DeptAuthorizePresenterImpl; import com.casic.dcms.mvp.view.IDeptAuthorizeOrAdjustView; +import com.casic.dcms.ui.DeptAuthorizeDetailActivity; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; @@ -123,7 +125,9 @@ fragment.adapter.setOnItemClickListener(new DeptAuthorizeOrAdjustAdapter.OnItemClickListener() { @Override public void onClick(int position) { - + Intent intent = new Intent(fragment.context, DeptAuthorizeDetailActivity.class); + intent.putExtra("id", fragment.dataBeans.get(position).getId()); + fragment.startActivity(intent); } }); } diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index a6cbc2f..d9c1d60 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -15,7 +15,7 @@ Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CALL_PHONE, Manifest.permission.READ_PHONE_STATE}; public static final String[] CASE_PAGE_TITLES = {"待办案卷", "已办案卷"}; - public static final String[] DEPT_PAGE_TITLES = {"待处理", "部门调整批示", "二级缓办待处理", "部门授权审核", "二级延期待处理", "已办案卷"}; + public static final String[] DEPT_PAGE_TITLES = {"待处理", "部门调整批示", "部门授权审核", "已办案卷", "二级缓办待处理", "二级延期待处理"}; public static final String[] CHART_PAGE_TITLES = {"表格", "饼状图"}; public static final List ANALYSIS_ICONS = Arrays.asList( diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d99ecf5..68f46c9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -88,6 +88,8 @@ + + nodeDataBeans; + private CaseHandlePresenterImpl caseHandlePresenter; + private String id; + private String changeState; + private String operationKey; + + + @Override + protected String setTitleName() { + return Constant.DEPT_PAGE_TITLES[1]; + } + + @Override + public int initLayoutView() { + return R.layout.activity_dept_adjust; + } + + @Override + public void initData() { + id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + + nextNodePresenter = new CaseNextNodePresenterImpl(this); + caseHandlePresenter = new CaseHandlePresenterImpl(this); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.caseOptTypeLayout: + if (nodeDataBeans != null) { + if (nodeDataBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("操作类型"); + for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { + 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(); + optTypeView.setText(tag); + optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); + changeState = String.valueOf(nodeBean.getNextState()); + operationKey = nodeBean.getOperationKey(); + } + }).build().show(); + } + } + break; + case R.id.commonTipsLayout: + new QMUIBottomSheet.BottomListSheetBuilder(this) + .setTitle("常见用语") + .addItem("请及时处理") + .addItem("调查后及时回复") + .setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + commonTipsView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + optionEditView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + } + }).build().show(); + break; + case R.id.submitButton: + String optType = optTypeView.getText().toString(); + if (optType.equals("")) { + ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); + return; + } + String optionInput = StringHelper.filterString(optionEditView.getText().toString()); + if (TextUtils.isEmpty(optionInput)) { + ToastHelper.showToast("不同意/同意的意见必须填写", ToastHelper.WARING); + return; + } + caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, + String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, + data.getProcessPersonid()); + break; + } + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseResourceView.setText(data.getSourceName()); + caseCreatorView.setText(data.getCreateUserName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + ArrayList urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(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 handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //获取处置类型 + nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); + } + } + + @Override + public void obtainNextNodeData(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + this.nodeDataBeans = resultBean.getData(); + if (nodeDataBeans.size() == 0) { + optTypeView.setText("无下级流转节点"); + } else { + CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); + + operationKey = dataBean.getOperationKey(); + changeState = String.valueOf(dataBean.getNextState()); + optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 + } + optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); + } + } + + @Override + public void showProgress() { + OtherUtils.showLoadingDialog(this, "处理中,请稍后"); + } + + @Override + public void hideProgress() { + OtherUtils.dismissLoadingDialog(); + } + + @Override + public void obtainCaseHandleResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); + DeptCaseAdjustFragment.sendEmptyMessage(Constant.DEPT_DONE); + DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); + finish(); + } 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 (nextNodePresenter != null) { + nextNodePresenter.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/DeptAuthorizeDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java new file mode 100644 index 0000000..de47420 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java @@ -0,0 +1,437 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +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.bean.ProcessPersonBean; +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.ProcessPersonPresenterImpl; +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.IHandleProcessView; +import com.casic.dcms.ui.fragment.dept.DeptCaseAuthorizeFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ItemDecorationSpace; +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.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; +import cn.jzvd.Jzvd; +import cn.jzvd.JzvdStd; + +public class DeptAuthorizeDetailActivity extends BaseCaseActivity implements View.OnClickListener, + ICaseDetailView, ICaseNextNodeView, IHandleProcessView, ICaseDetailHandleView { + + private Context context = DeptAuthorizeDetailActivity.this; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseResourceView) + TextView caseResourceView; + @BindView(R.id.caseCreatorView) + TextView caseCreatorView; + @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.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.audioPlayerView) + AudioPlayerView audioPlayerView; + @BindView(R.id.videoPlayerView) + JzvdStd videoPlayerView; + @BindView(R.id.caseHandleRecyclerView) + RecyclerView caseHandleRecyclerView; + @BindView(R.id.optTypeView) + TextView optTypeView; + @BindView(R.id.casePersonLayout) + RelativeLayout casePersonLayout; + @BindView(R.id.caseHandlePersonView) + TextView caseHandlePersonView; + @BindView(R.id.personLine) + View personLine; + @BindView(R.id.optionEditView) + EditText optionEditView; + @BindView(R.id.commonTipsView) + TextView commonTipsView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private CaseDetailPresenterImpl caseDetailPresenter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private CaseNextNodePresenterImpl nextNodePresenter; + private List nodeDataBeans; + private CaseHandlePresenterImpl caseHandlePresenter; + private ProcessPersonPresenterImpl handleProcessPresenter; + private List personBeans; + private String id; + private String changeState; + private String operationKey; + private String taskUserId; + + @Override + protected String setTitleName() { + return Constant.DEPT_PAGE_TITLES[2]; + } + + @Override + public int initLayoutView() { + return R.layout.activity_dept_authorize; + } + + @Override + public void initData() { + id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + + nextNodePresenter = new CaseNextNodePresenterImpl(this); + handleProcessPresenter = new ProcessPersonPresenterImpl(this); + caseHandlePresenter = new CaseHandlePresenterImpl(this); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.caseOptTypeLayout: + if (nodeDataBeans != null) { + if (nodeDataBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("操作类型"); + for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { + 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(); + optTypeView.setText(tag); + optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); + changeState = String.valueOf(nodeBean.getNextState()); + operationKey = nodeBean.getOperationKey(); + + if (tag.equals("返回处理")) { + casePersonLayout.setVisibility(View.VISIBLE); + personLine.setVisibility(View.VISIBLE); + + //获取下级处置人员名单 + handleProcessPresenter.onReadyRetrofitRequest(); + } else { + casePersonLayout.setVisibility(View.GONE); + personLine.setVisibility(View.GONE); + } + } + }).build().show(); + } + } + break; + case R.id.casePersonLayout: + if (personBeans != null) { + if (personBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("处置人员"); + for (ProcessPersonBean.DataBean dataBean : personBeans) { + sheetBuilder.addItem(dataBean.getName()); + } + sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + caseHandlePersonView.setText(tag); + caseHandlePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + taskUserId = personBeans.get(position).getId(); + } + }).build().show(); + } + } + break; + case R.id.commonTipsLayout: + new QMUIBottomSheet.BottomListSheetBuilder(this) + .setTitle("常见用语") + .addItem("请及时处理") + .addItem("调查后及时回复") + .setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + commonTipsView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + optionEditView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + } + }).build().show(); + break; + case R.id.submitButton: + String optType = optTypeView.getText().toString(); + if (optType.equals("")) { + ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); + return; + } + if (optType.equals("返回处理")) { + //选择处理人员时,必选一个处置人员 + String handlePerson = caseHandlePersonView.getText().toString(); + if (handlePerson.equals("")) { + ToastHelper.showToast("当前状态必须指定处置员", ToastHelper.WARING); + return; + } + } + String optionInput = StringHelper.filterString(optionEditView.getText().toString()); + if (TextUtils.isEmpty(optionInput)) { + ToastHelper.showToast("处理意见必须填写", ToastHelper.WARING); + return; + } + //只有选择返回处理的时候taskUserId才会不为空,否则用当前流程人员的id代替 + if (TextUtils.isEmpty(taskUserId)) { + taskUserId = data.getProcessPersonid(); + } + caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, + String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, + taskUserId); + break; + } + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseResourceView.setText(data.getSourceName()); + caseCreatorView.setText(data.getCreateUserName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + ArrayList urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(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 handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //获取处置类型 + nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); + } + } + + @Override + public void obtainNextNodeData(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + this.nodeDataBeans = resultBean.getData(); + if (nodeDataBeans.size() == 0) { + optTypeView.setText("无下级流转节点"); + } else { + CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); + + operationKey = dataBean.getOperationKey(); + changeState = String.valueOf(dataBean.getNextState()); + optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 + } + optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); + } + } + + @Override + public void showProgress() { + OtherUtils.showLoadingDialog(this, "处理中,请稍后"); + } + + @Override + public void hideProgress() { + OtherUtils.dismissLoadingDialog(); + } + + @Override + public void obtainCaseHandleResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); + DeptCaseAuthorizeFragment.sendEmptyMessage(Constant.DEPT_DONE); + DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); + finish(); + } else { + ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); + } + } + + + @Override + public void obtainResultData(ProcessPersonBean resultBean) { + if (resultBean.isSuccess()) { + this.personBeans = resultBean.getData(); + if (personBeans.size() == 0) { + caseHandlePersonView.setText("无处置人员"); + } else { + ProcessPersonBean.DataBean dataBean = personBeans.get(0); + taskUserId = dataBean.getId(); + caseHandlePersonView.setText(dataBean.getName());//默认选择第一个 + } + caseHandlePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (nextNodePresenter != null) { + nextNodePresenter.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/DeptHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java index e698b07..3de76c2 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java @@ -59,10 +59,10 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new DeptCaseProcessFragment());//待处理 fragmentList.add(new DeptCaseAdjustFragment());//部门调整 - fragmentList.add(new DeptCasePostponeFragment());//二级缓办 fragmentList.add(new DeptCaseAuthorizeFragment());//部门授权 + fragmentList.add(new DeptCaseHandledFragment());//已处理 + fragmentList.add(new DeptCasePostponeFragment());//二级缓办 fragmentList.add(new DeptCaseDelayedFragment());//二级延期 - fragmentList.add(new DeptCaseHandledFragment()); SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.DEPT_PAGE_TITLES, fragmentList); viewPager.setAdapter(adapter); //绑定TabLayout diff --git a/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java index 1517541..c751109 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java @@ -108,7 +108,7 @@ @Override protected String setTitleName() { - return "待处理"; + return Constant.DEPT_PAGE_TITLES[0]; } @Override @@ -123,7 +123,6 @@ caseDetailPresenter.onReadyRetrofitRequest(id); nextNodePresenter = new CaseNextNodePresenterImpl(this); - handleProcessPresenter = new ProcessPersonPresenterImpl(this); caseHandlePresenter = new CaseHandlePresenterImpl(this); } @@ -399,7 +398,7 @@ changeState = String.valueOf(dataBean.getNextState()); optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 } - caseHandlePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); } else { ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseAdjustFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseAdjustFragment.java index d752957..71363f1 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseAdjustFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseAdjustFragment.java @@ -1,6 +1,7 @@ package com.casic.dcms.ui.fragment.dept; import android.content.Context; +import android.content.Intent; import android.os.Handler; import android.os.Message; @@ -15,6 +16,7 @@ import com.casic.dcms.bean.AuthorizeOrAdjustBean; import com.casic.dcms.mvp.presenter.DeptAdjustPresenterImpl; import com.casic.dcms.mvp.view.IDeptAuthorizeOrAdjustView; +import com.casic.dcms.ui.DeptAdjustDetailActivity; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; @@ -123,7 +125,9 @@ fragment.adapter.setOnItemClickListener(new DeptAuthorizeOrAdjustAdapter.OnItemClickListener() { @Override public void onClick(int position) { - + Intent intent = new Intent(fragment.context, DeptAdjustDetailActivity.class); + intent.putExtra("id", fragment.dataBeans.get(position).getId()); + fragment.startActivity(intent); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseAuthorizeFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseAuthorizeFragment.java index e9476ba..6f79a15 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseAuthorizeFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseAuthorizeFragment.java @@ -1,6 +1,7 @@ package com.casic.dcms.ui.fragment.dept; import android.content.Context; +import android.content.Intent; import android.os.Handler; import android.os.Message; @@ -15,6 +16,7 @@ import com.casic.dcms.bean.AuthorizeOrAdjustBean; import com.casic.dcms.mvp.presenter.DeptAuthorizePresenterImpl; import com.casic.dcms.mvp.view.IDeptAuthorizeOrAdjustView; +import com.casic.dcms.ui.DeptAuthorizeDetailActivity; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; @@ -123,7 +125,9 @@ fragment.adapter.setOnItemClickListener(new DeptAuthorizeOrAdjustAdapter.OnItemClickListener() { @Override public void onClick(int position) { - + Intent intent = new Intent(fragment.context, DeptAuthorizeDetailActivity.class); + intent.putExtra("id", fragment.dataBeans.get(position).getId()); + fragment.startActivity(intent); } }); } diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index a6cbc2f..d9c1d60 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -15,7 +15,7 @@ Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CALL_PHONE, Manifest.permission.READ_PHONE_STATE}; public static final String[] CASE_PAGE_TITLES = {"待办案卷", "已办案卷"}; - public static final String[] DEPT_PAGE_TITLES = {"待处理", "部门调整批示", "二级缓办待处理", "部门授权审核", "二级延期待处理", "已办案卷"}; + public static final String[] DEPT_PAGE_TITLES = {"待处理", "部门调整批示", "部门授权审核", "已办案卷", "二级缓办待处理", "二级延期待处理"}; public static final String[] CHART_PAGE_TITLES = {"表格", "饼状图"}; public static final List ANALYSIS_ICONS = Arrays.asList( diff --git a/app/src/main/res/layout/activity_dept_adjust.xml b/app/src/main/res/layout/activity_dept_adjust.xml new file mode 100644 index 0000000..a654f56 --- /dev/null +++ b/app/src/main/res/layout/activity_dept_adjust.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d99ecf5..68f46c9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -88,6 +88,8 @@ + + nodeDataBeans; + private CaseHandlePresenterImpl caseHandlePresenter; + private String id; + private String changeState; + private String operationKey; + + + @Override + protected String setTitleName() { + return Constant.DEPT_PAGE_TITLES[1]; + } + + @Override + public int initLayoutView() { + return R.layout.activity_dept_adjust; + } + + @Override + public void initData() { + id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + + nextNodePresenter = new CaseNextNodePresenterImpl(this); + caseHandlePresenter = new CaseHandlePresenterImpl(this); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.caseOptTypeLayout: + if (nodeDataBeans != null) { + if (nodeDataBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("操作类型"); + for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { + 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(); + optTypeView.setText(tag); + optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); + changeState = String.valueOf(nodeBean.getNextState()); + operationKey = nodeBean.getOperationKey(); + } + }).build().show(); + } + } + break; + case R.id.commonTipsLayout: + new QMUIBottomSheet.BottomListSheetBuilder(this) + .setTitle("常见用语") + .addItem("请及时处理") + .addItem("调查后及时回复") + .setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + commonTipsView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + optionEditView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + } + }).build().show(); + break; + case R.id.submitButton: + String optType = optTypeView.getText().toString(); + if (optType.equals("")) { + ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); + return; + } + String optionInput = StringHelper.filterString(optionEditView.getText().toString()); + if (TextUtils.isEmpty(optionInput)) { + ToastHelper.showToast("不同意/同意的意见必须填写", ToastHelper.WARING); + return; + } + caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, + String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, + data.getProcessPersonid()); + break; + } + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseResourceView.setText(data.getSourceName()); + caseCreatorView.setText(data.getCreateUserName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + ArrayList urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(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 handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //获取处置类型 + nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); + } + } + + @Override + public void obtainNextNodeData(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + this.nodeDataBeans = resultBean.getData(); + if (nodeDataBeans.size() == 0) { + optTypeView.setText("无下级流转节点"); + } else { + CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); + + operationKey = dataBean.getOperationKey(); + changeState = String.valueOf(dataBean.getNextState()); + optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 + } + optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); + } + } + + @Override + public void showProgress() { + OtherUtils.showLoadingDialog(this, "处理中,请稍后"); + } + + @Override + public void hideProgress() { + OtherUtils.dismissLoadingDialog(); + } + + @Override + public void obtainCaseHandleResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); + DeptCaseAdjustFragment.sendEmptyMessage(Constant.DEPT_DONE); + DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); + finish(); + } 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 (nextNodePresenter != null) { + nextNodePresenter.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/DeptAuthorizeDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java new file mode 100644 index 0000000..de47420 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java @@ -0,0 +1,437 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +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.bean.ProcessPersonBean; +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.ProcessPersonPresenterImpl; +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.IHandleProcessView; +import com.casic.dcms.ui.fragment.dept.DeptCaseAuthorizeFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ItemDecorationSpace; +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.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; +import cn.jzvd.Jzvd; +import cn.jzvd.JzvdStd; + +public class DeptAuthorizeDetailActivity extends BaseCaseActivity implements View.OnClickListener, + ICaseDetailView, ICaseNextNodeView, IHandleProcessView, ICaseDetailHandleView { + + private Context context = DeptAuthorizeDetailActivity.this; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseResourceView) + TextView caseResourceView; + @BindView(R.id.caseCreatorView) + TextView caseCreatorView; + @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.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.audioPlayerView) + AudioPlayerView audioPlayerView; + @BindView(R.id.videoPlayerView) + JzvdStd videoPlayerView; + @BindView(R.id.caseHandleRecyclerView) + RecyclerView caseHandleRecyclerView; + @BindView(R.id.optTypeView) + TextView optTypeView; + @BindView(R.id.casePersonLayout) + RelativeLayout casePersonLayout; + @BindView(R.id.caseHandlePersonView) + TextView caseHandlePersonView; + @BindView(R.id.personLine) + View personLine; + @BindView(R.id.optionEditView) + EditText optionEditView; + @BindView(R.id.commonTipsView) + TextView commonTipsView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private CaseDetailPresenterImpl caseDetailPresenter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private CaseNextNodePresenterImpl nextNodePresenter; + private List nodeDataBeans; + private CaseHandlePresenterImpl caseHandlePresenter; + private ProcessPersonPresenterImpl handleProcessPresenter; + private List personBeans; + private String id; + private String changeState; + private String operationKey; + private String taskUserId; + + @Override + protected String setTitleName() { + return Constant.DEPT_PAGE_TITLES[2]; + } + + @Override + public int initLayoutView() { + return R.layout.activity_dept_authorize; + } + + @Override + public void initData() { + id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + + nextNodePresenter = new CaseNextNodePresenterImpl(this); + handleProcessPresenter = new ProcessPersonPresenterImpl(this); + caseHandlePresenter = new CaseHandlePresenterImpl(this); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.caseOptTypeLayout: + if (nodeDataBeans != null) { + if (nodeDataBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("操作类型"); + for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { + 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(); + optTypeView.setText(tag); + optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); + changeState = String.valueOf(nodeBean.getNextState()); + operationKey = nodeBean.getOperationKey(); + + if (tag.equals("返回处理")) { + casePersonLayout.setVisibility(View.VISIBLE); + personLine.setVisibility(View.VISIBLE); + + //获取下级处置人员名单 + handleProcessPresenter.onReadyRetrofitRequest(); + } else { + casePersonLayout.setVisibility(View.GONE); + personLine.setVisibility(View.GONE); + } + } + }).build().show(); + } + } + break; + case R.id.casePersonLayout: + if (personBeans != null) { + if (personBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("处置人员"); + for (ProcessPersonBean.DataBean dataBean : personBeans) { + sheetBuilder.addItem(dataBean.getName()); + } + sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + caseHandlePersonView.setText(tag); + caseHandlePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + taskUserId = personBeans.get(position).getId(); + } + }).build().show(); + } + } + break; + case R.id.commonTipsLayout: + new QMUIBottomSheet.BottomListSheetBuilder(this) + .setTitle("常见用语") + .addItem("请及时处理") + .addItem("调查后及时回复") + .setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + commonTipsView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + optionEditView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + } + }).build().show(); + break; + case R.id.submitButton: + String optType = optTypeView.getText().toString(); + if (optType.equals("")) { + ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); + return; + } + if (optType.equals("返回处理")) { + //选择处理人员时,必选一个处置人员 + String handlePerson = caseHandlePersonView.getText().toString(); + if (handlePerson.equals("")) { + ToastHelper.showToast("当前状态必须指定处置员", ToastHelper.WARING); + return; + } + } + String optionInput = StringHelper.filterString(optionEditView.getText().toString()); + if (TextUtils.isEmpty(optionInput)) { + ToastHelper.showToast("处理意见必须填写", ToastHelper.WARING); + return; + } + //只有选择返回处理的时候taskUserId才会不为空,否则用当前流程人员的id代替 + if (TextUtils.isEmpty(taskUserId)) { + taskUserId = data.getProcessPersonid(); + } + caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, + String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, + taskUserId); + break; + } + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseResourceView.setText(data.getSourceName()); + caseCreatorView.setText(data.getCreateUserName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + ArrayList urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(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 handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //获取处置类型 + nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); + } + } + + @Override + public void obtainNextNodeData(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + this.nodeDataBeans = resultBean.getData(); + if (nodeDataBeans.size() == 0) { + optTypeView.setText("无下级流转节点"); + } else { + CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); + + operationKey = dataBean.getOperationKey(); + changeState = String.valueOf(dataBean.getNextState()); + optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 + } + optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); + } + } + + @Override + public void showProgress() { + OtherUtils.showLoadingDialog(this, "处理中,请稍后"); + } + + @Override + public void hideProgress() { + OtherUtils.dismissLoadingDialog(); + } + + @Override + public void obtainCaseHandleResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); + DeptCaseAuthorizeFragment.sendEmptyMessage(Constant.DEPT_DONE); + DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); + finish(); + } else { + ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); + } + } + + + @Override + public void obtainResultData(ProcessPersonBean resultBean) { + if (resultBean.isSuccess()) { + this.personBeans = resultBean.getData(); + if (personBeans.size() == 0) { + caseHandlePersonView.setText("无处置人员"); + } else { + ProcessPersonBean.DataBean dataBean = personBeans.get(0); + taskUserId = dataBean.getId(); + caseHandlePersonView.setText(dataBean.getName());//默认选择第一个 + } + caseHandlePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (nextNodePresenter != null) { + nextNodePresenter.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/DeptHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java index e698b07..3de76c2 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java @@ -59,10 +59,10 @@ List fragmentList = new ArrayList<>(); fragmentList.add(new DeptCaseProcessFragment());//待处理 fragmentList.add(new DeptCaseAdjustFragment());//部门调整 - fragmentList.add(new DeptCasePostponeFragment());//二级缓办 fragmentList.add(new DeptCaseAuthorizeFragment());//部门授权 + fragmentList.add(new DeptCaseHandledFragment());//已处理 + fragmentList.add(new DeptCasePostponeFragment());//二级缓办 fragmentList.add(new DeptCaseDelayedFragment());//二级延期 - fragmentList.add(new DeptCaseHandledFragment()); SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.DEPT_PAGE_TITLES, fragmentList); viewPager.setAdapter(adapter); //绑定TabLayout diff --git a/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java index 1517541..c751109 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java @@ -108,7 +108,7 @@ @Override protected String setTitleName() { - return "待处理"; + return Constant.DEPT_PAGE_TITLES[0]; } @Override @@ -123,7 +123,6 @@ caseDetailPresenter.onReadyRetrofitRequest(id); nextNodePresenter = new CaseNextNodePresenterImpl(this); - handleProcessPresenter = new ProcessPersonPresenterImpl(this); caseHandlePresenter = new CaseHandlePresenterImpl(this); } @@ -399,7 +398,7 @@ changeState = String.valueOf(dataBean.getNextState()); optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 } - caseHandlePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); } else { ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseAdjustFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseAdjustFragment.java index d752957..71363f1 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseAdjustFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseAdjustFragment.java @@ -1,6 +1,7 @@ package com.casic.dcms.ui.fragment.dept; import android.content.Context; +import android.content.Intent; import android.os.Handler; import android.os.Message; @@ -15,6 +16,7 @@ import com.casic.dcms.bean.AuthorizeOrAdjustBean; import com.casic.dcms.mvp.presenter.DeptAdjustPresenterImpl; import com.casic.dcms.mvp.view.IDeptAuthorizeOrAdjustView; +import com.casic.dcms.ui.DeptAdjustDetailActivity; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; @@ -123,7 +125,9 @@ fragment.adapter.setOnItemClickListener(new DeptAuthorizeOrAdjustAdapter.OnItemClickListener() { @Override public void onClick(int position) { - + Intent intent = new Intent(fragment.context, DeptAdjustDetailActivity.class); + intent.putExtra("id", fragment.dataBeans.get(position).getId()); + fragment.startActivity(intent); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseAuthorizeFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseAuthorizeFragment.java index e9476ba..6f79a15 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseAuthorizeFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseAuthorizeFragment.java @@ -1,6 +1,7 @@ package com.casic.dcms.ui.fragment.dept; import android.content.Context; +import android.content.Intent; import android.os.Handler; import android.os.Message; @@ -15,6 +16,7 @@ import com.casic.dcms.bean.AuthorizeOrAdjustBean; import com.casic.dcms.mvp.presenter.DeptAuthorizePresenterImpl; import com.casic.dcms.mvp.view.IDeptAuthorizeOrAdjustView; +import com.casic.dcms.ui.DeptAuthorizeDetailActivity; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; @@ -123,7 +125,9 @@ fragment.adapter.setOnItemClickListener(new DeptAuthorizeOrAdjustAdapter.OnItemClickListener() { @Override public void onClick(int position) { - + Intent intent = new Intent(fragment.context, DeptAuthorizeDetailActivity.class); + intent.putExtra("id", fragment.dataBeans.get(position).getId()); + fragment.startActivity(intent); } }); } diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index a6cbc2f..d9c1d60 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -15,7 +15,7 @@ Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CALL_PHONE, Manifest.permission.READ_PHONE_STATE}; public static final String[] CASE_PAGE_TITLES = {"待办案卷", "已办案卷"}; - public static final String[] DEPT_PAGE_TITLES = {"待处理", "部门调整批示", "二级缓办待处理", "部门授权审核", "二级延期待处理", "已办案卷"}; + public static final String[] DEPT_PAGE_TITLES = {"待处理", "部门调整批示", "部门授权审核", "已办案卷", "二级缓办待处理", "二级延期待处理"}; public static final String[] CHART_PAGE_TITLES = {"表格", "饼状图"}; public static final List ANALYSIS_ICONS = Arrays.asList( diff --git a/app/src/main/res/layout/activity_dept_adjust.xml b/app/src/main/res/layout/activity_dept_adjust.xml new file mode 100644 index 0000000..a654f56 --- /dev/null +++ b/app/src/main/res/layout/activity_dept_adjust.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_dept_authorize.xml b/app/src/main/res/layout/activity_dept_authorize.xml new file mode 100644 index 0000000..b097a6e --- /dev/null +++ b/app/src/main/res/layout/activity_dept_authorize.xml @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file