diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b6a8d08..c78d07c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -64,8 +64,8 @@ - - + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b6a8d08..c78d07c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -64,8 +64,8 @@ - - + + diff --git a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java deleted file mode 100644 index 254f0cd..0000000 --- a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.casic.dcms.adapter; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.text.TextUtils; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.model.check.CaseCheckModel; -import com.casic.dcms.utils.StringHelper; -import com.pengxh.androidx.lite.hub.StringHub; -import com.qmuiteam.qmui.widget.QMUIRadiusImageView; - -import java.util.List; - -public class CheckCaseListAdapter extends RecyclerView.Adapter { - - private final Context context; - private final List dataBeans; - private final LayoutInflater layoutInflater; - - public CheckCaseListAdapter(Context context, List dataRows) { - this.context = context; - this.dataBeans = dataRows; - this.layoutInflater = LayoutInflater.from(context); - } - - @NonNull - @Override - public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - return new ItemViewHolder(layoutInflater.inflate(R.layout.item_case_rv_l, parent, false)); - } - - @Override - public void onBindViewHolder(@NonNull ItemViewHolder holder, @SuppressLint("RecyclerView") int position) { - holder.bindView(dataBeans.get(position)); - if (clickListener != null) { - holder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - clickListener.onClick(position); - } - }); - } - } - - @Override - public int getItemCount() { - return dataBeans.size(); - } - - class ItemViewHolder extends RecyclerView.ViewHolder { - - private final QMUIRadiusImageView caseImageView; - private final TextView caseTitleView; - private final TextView casePlaceView; - private final TextView caseTimeView; - - ItemViewHolder(@NonNull View itemView) { - super(itemView); - caseImageView = itemView.findViewById(R.id.caseImageView); - caseTitleView = itemView.findViewById(R.id.caseTitleView); - casePlaceView = itemView.findViewById(R.id.casePlaceView); - caseTimeView = itemView.findViewById(R.id.caseTimeView); - } - - void bindView(CaseCheckModel.DataDTO.RowsDTO rowsBean) { - //处理图片 - String fileIdProcess = rowsBean.getFileIdProcess(); - if (!TextUtils.isEmpty(fileIdProcess)) { - String[] split = fileIdProcess.split(","); - String firstImage = split[0]; - if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { - Glide.with(context).load(StringHelper.appendCompleteURL(firstImage)).into(caseImageView); - } - } - caseTitleView.setText(StringHub.filterSpaceOrEnter(rowsBean.getDescription())); - casePlaceView.setText("发生地点:" + StringHub.filterSpaceOrEnter(rowsBean.getFieldintro())); - caseTimeView.setText("上报时间:" + rowsBean.getReportTime()); - } - } - - private OnItemClickListener clickListener; - - public interface OnItemClickListener { - void onClick(int position); - } - - public void setOnItemClickListener(OnItemClickListener onItemClickListener) { - this.clickListener = onItemClickListener; - } -} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b6a8d08..c78d07c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -64,8 +64,8 @@ - - + + diff --git a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java deleted file mode 100644 index 254f0cd..0000000 --- a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.casic.dcms.adapter; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.text.TextUtils; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.model.check.CaseCheckModel; -import com.casic.dcms.utils.StringHelper; -import com.pengxh.androidx.lite.hub.StringHub; -import com.qmuiteam.qmui.widget.QMUIRadiusImageView; - -import java.util.List; - -public class CheckCaseListAdapter extends RecyclerView.Adapter { - - private final Context context; - private final List dataBeans; - private final LayoutInflater layoutInflater; - - public CheckCaseListAdapter(Context context, List dataRows) { - this.context = context; - this.dataBeans = dataRows; - this.layoutInflater = LayoutInflater.from(context); - } - - @NonNull - @Override - public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - return new ItemViewHolder(layoutInflater.inflate(R.layout.item_case_rv_l, parent, false)); - } - - @Override - public void onBindViewHolder(@NonNull ItemViewHolder holder, @SuppressLint("RecyclerView") int position) { - holder.bindView(dataBeans.get(position)); - if (clickListener != null) { - holder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - clickListener.onClick(position); - } - }); - } - } - - @Override - public int getItemCount() { - return dataBeans.size(); - } - - class ItemViewHolder extends RecyclerView.ViewHolder { - - private final QMUIRadiusImageView caseImageView; - private final TextView caseTitleView; - private final TextView casePlaceView; - private final TextView caseTimeView; - - ItemViewHolder(@NonNull View itemView) { - super(itemView); - caseImageView = itemView.findViewById(R.id.caseImageView); - caseTitleView = itemView.findViewById(R.id.caseTitleView); - casePlaceView = itemView.findViewById(R.id.casePlaceView); - caseTimeView = itemView.findViewById(R.id.caseTimeView); - } - - void bindView(CaseCheckModel.DataDTO.RowsDTO rowsBean) { - //处理图片 - String fileIdProcess = rowsBean.getFileIdProcess(); - if (!TextUtils.isEmpty(fileIdProcess)) { - String[] split = fileIdProcess.split(","); - String firstImage = split[0]; - if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { - Glide.with(context).load(StringHelper.appendCompleteURL(firstImage)).into(caseImageView); - } - } - caseTitleView.setText(StringHub.filterSpaceOrEnter(rowsBean.getDescription())); - casePlaceView.setText("发生地点:" + StringHub.filterSpaceOrEnter(rowsBean.getFieldintro())); - caseTimeView.setText("上报时间:" + rowsBean.getReportTime()); - } - } - - private OnItemClickListener clickListener; - - public interface OnItemClickListener { - void onClick(int position); - } - - public void setOnItemClickListener(OnItemClickListener onItemClickListener) { - this.clickListener = onItemClickListener; - } -} diff --git a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java index 85cebc6..667981d 100644 --- a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java @@ -1,19 +1,27 @@ package com.casic.dcms.fragment.check; +import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; + +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.casic.dcms.adapter.CheckCaseListAdapter; +import com.bumptech.glide.Glide; +import com.casic.dcms.R; import com.casic.dcms.databinding.FragmentCheckCaseBinding; -import com.casic.dcms.model.check.CaseCheckModel; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.view.check.CaseCheckDetailActivity; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.check.CheckDetailActivity; import com.casic.dcms.vm.CaseViewModel; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseFragment; import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.StringHub; @@ -24,14 +32,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class CaseCheckFragment extends AndroidxBaseFragment { private static final String TAG = "CaseCheckFragment"; private WeakReferenceHandler weakReferenceHandler; private CaseViewModel caseViewModel; - private CheckCaseListAdapter adapter; - private List dataBeans = new ArrayList<>(); + private NormalRecyclerAdapter adapter; + private List dataBeans = new ArrayList<>(); private int pageIndex = 1; private boolean isRefresh, isLoadMore = false; @@ -49,12 +58,37 @@ protected void initData() { weakReferenceHandler = new WeakReferenceHandler(callback); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.caseCheckModel.observe(this, new Observer() { + @Override + public void onChanged(CaseCheckModel resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(requireContext(), "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(202104251); + } + } + }); } @Override public void onResume() { - obtainCheckCaseList(); super.onResume(); + pageIndex = 1; + obtainCheckCaseList(); } private void obtainCheckCaseList() { @@ -80,31 +114,6 @@ obtainCheckCaseList(); } }); - - caseViewModel.caseCheckModel.observe(this, new Observer() { - @Override - public void onChanged(CaseCheckModel resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(requireContext(), "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(202104251); - } - } - }); } private final Handler.Callback callback = new Handler.Callback() { @@ -125,16 +134,42 @@ }); } else { viewBinding.emptyView.hide(); - adapter = new CheckCaseListAdapter(requireContext(), dataBeans); - viewBinding.caseRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new CheckCaseListAdapter.OnItemClickListener() { + adapter = new NormalRecyclerAdapter(R.layout.item_case_rv_l, dataBeans) { @Override - public void onClick(int position) { - ContextHub.navigatePageTo( - requireContext(), - CaseCheckDetailActivity.class, - dataBeans.get(position).getId() - ); + public void convertView(ViewHolder viewHolder, int position, CaseCheckModel.DataModel.RowsModel item) { + String fileIdProcess = item.getFileIdProcess(); + if (!TextUtils.isEmpty(fileIdProcess)) { + String[] split = fileIdProcess.split(","); + String firstImage = split[0]; + if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Drawable drawable = Glide.with(requireContext()).load(StringHelper.appendCompleteURL(firstImage)).submit().get(); + runOnUiThread(new Runnable() { + @Override + public void run() { + viewHolder.setImageResource(R.id.caseImageView, drawable); + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + } + } + viewHolder.setText(R.id.caseTitleView, StringHub.filterSpaceOrEnter(item.getDescription())) + .setText(R.id.casePlaceView, "发生地点:" + StringHub.filterSpaceOrEnter(item.getFieldintro())) + .setText(R.id.caseTimeView, "上报时间:" + item.getReportTime()); + } + }; + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, CaseCheckModel.DataModel.RowsModel rowsModel) { + ContextHub.navigatePageTo(requireContext(), CheckDetailActivity.class, rowsModel.getId()); } }); } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b6a8d08..c78d07c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -64,8 +64,8 @@ - - + + diff --git a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java deleted file mode 100644 index 254f0cd..0000000 --- a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.casic.dcms.adapter; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.text.TextUtils; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.model.check.CaseCheckModel; -import com.casic.dcms.utils.StringHelper; -import com.pengxh.androidx.lite.hub.StringHub; -import com.qmuiteam.qmui.widget.QMUIRadiusImageView; - -import java.util.List; - -public class CheckCaseListAdapter extends RecyclerView.Adapter { - - private final Context context; - private final List dataBeans; - private final LayoutInflater layoutInflater; - - public CheckCaseListAdapter(Context context, List dataRows) { - this.context = context; - this.dataBeans = dataRows; - this.layoutInflater = LayoutInflater.from(context); - } - - @NonNull - @Override - public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - return new ItemViewHolder(layoutInflater.inflate(R.layout.item_case_rv_l, parent, false)); - } - - @Override - public void onBindViewHolder(@NonNull ItemViewHolder holder, @SuppressLint("RecyclerView") int position) { - holder.bindView(dataBeans.get(position)); - if (clickListener != null) { - holder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - clickListener.onClick(position); - } - }); - } - } - - @Override - public int getItemCount() { - return dataBeans.size(); - } - - class ItemViewHolder extends RecyclerView.ViewHolder { - - private final QMUIRadiusImageView caseImageView; - private final TextView caseTitleView; - private final TextView casePlaceView; - private final TextView caseTimeView; - - ItemViewHolder(@NonNull View itemView) { - super(itemView); - caseImageView = itemView.findViewById(R.id.caseImageView); - caseTitleView = itemView.findViewById(R.id.caseTitleView); - casePlaceView = itemView.findViewById(R.id.casePlaceView); - caseTimeView = itemView.findViewById(R.id.caseTimeView); - } - - void bindView(CaseCheckModel.DataDTO.RowsDTO rowsBean) { - //处理图片 - String fileIdProcess = rowsBean.getFileIdProcess(); - if (!TextUtils.isEmpty(fileIdProcess)) { - String[] split = fileIdProcess.split(","); - String firstImage = split[0]; - if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { - Glide.with(context).load(StringHelper.appendCompleteURL(firstImage)).into(caseImageView); - } - } - caseTitleView.setText(StringHub.filterSpaceOrEnter(rowsBean.getDescription())); - casePlaceView.setText("发生地点:" + StringHub.filterSpaceOrEnter(rowsBean.getFieldintro())); - caseTimeView.setText("上报时间:" + rowsBean.getReportTime()); - } - } - - private OnItemClickListener clickListener; - - public interface OnItemClickListener { - void onClick(int position); - } - - public void setOnItemClickListener(OnItemClickListener onItemClickListener) { - this.clickListener = onItemClickListener; - } -} diff --git a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java index 85cebc6..667981d 100644 --- a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java @@ -1,19 +1,27 @@ package com.casic.dcms.fragment.check; +import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; + +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.casic.dcms.adapter.CheckCaseListAdapter; +import com.bumptech.glide.Glide; +import com.casic.dcms.R; import com.casic.dcms.databinding.FragmentCheckCaseBinding; -import com.casic.dcms.model.check.CaseCheckModel; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.view.check.CaseCheckDetailActivity; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.check.CheckDetailActivity; import com.casic.dcms.vm.CaseViewModel; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseFragment; import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.StringHub; @@ -24,14 +32,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class CaseCheckFragment extends AndroidxBaseFragment { private static final String TAG = "CaseCheckFragment"; private WeakReferenceHandler weakReferenceHandler; private CaseViewModel caseViewModel; - private CheckCaseListAdapter adapter; - private List dataBeans = new ArrayList<>(); + private NormalRecyclerAdapter adapter; + private List dataBeans = new ArrayList<>(); private int pageIndex = 1; private boolean isRefresh, isLoadMore = false; @@ -49,12 +58,37 @@ protected void initData() { weakReferenceHandler = new WeakReferenceHandler(callback); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.caseCheckModel.observe(this, new Observer() { + @Override + public void onChanged(CaseCheckModel resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(requireContext(), "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(202104251); + } + } + }); } @Override public void onResume() { - obtainCheckCaseList(); super.onResume(); + pageIndex = 1; + obtainCheckCaseList(); } private void obtainCheckCaseList() { @@ -80,31 +114,6 @@ obtainCheckCaseList(); } }); - - caseViewModel.caseCheckModel.observe(this, new Observer() { - @Override - public void onChanged(CaseCheckModel resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(requireContext(), "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(202104251); - } - } - }); } private final Handler.Callback callback = new Handler.Callback() { @@ -125,16 +134,42 @@ }); } else { viewBinding.emptyView.hide(); - adapter = new CheckCaseListAdapter(requireContext(), dataBeans); - viewBinding.caseRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new CheckCaseListAdapter.OnItemClickListener() { + adapter = new NormalRecyclerAdapter(R.layout.item_case_rv_l, dataBeans) { @Override - public void onClick(int position) { - ContextHub.navigatePageTo( - requireContext(), - CaseCheckDetailActivity.class, - dataBeans.get(position).getId() - ); + public void convertView(ViewHolder viewHolder, int position, CaseCheckModel.DataModel.RowsModel item) { + String fileIdProcess = item.getFileIdProcess(); + if (!TextUtils.isEmpty(fileIdProcess)) { + String[] split = fileIdProcess.split(","); + String firstImage = split[0]; + if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Drawable drawable = Glide.with(requireContext()).load(StringHelper.appendCompleteURL(firstImage)).submit().get(); + runOnUiThread(new Runnable() { + @Override + public void run() { + viewHolder.setImageResource(R.id.caseImageView, drawable); + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + } + } + viewHolder.setText(R.id.caseTitleView, StringHub.filterSpaceOrEnter(item.getDescription())) + .setText(R.id.casePlaceView, "发生地点:" + StringHub.filterSpaceOrEnter(item.getFieldintro())) + .setText(R.id.caseTimeView, "上报时间:" + item.getReportTime()); + } + }; + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, CaseCheckModel.DataModel.RowsModel rowsModel) { + ContextHub.navigatePageTo(requireContext(), CheckDetailActivity.class, rowsModel.getId()); } }); } diff --git a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java index 3e2d904..6775b65 100644 --- a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java @@ -1,19 +1,27 @@ package com.casic.dcms.fragment.check; +import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; + +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.casic.dcms.adapter.CheckCaseListAdapter; +import com.bumptech.glide.Glide; +import com.casic.dcms.R; import com.casic.dcms.databinding.FragmentCheckCaseBinding; -import com.casic.dcms.model.check.CaseCheckModel; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.view.check.CaseCheckedDetailActivity; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.check.CheckedDetailActivity; import com.casic.dcms.vm.CaseViewModel; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseFragment; import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.StringHub; @@ -24,14 +32,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class CaseCheckedFragment extends AndroidxBaseFragment { private static final String TAG = "CaseCheckedFragment"; private WeakReferenceHandler weakReferenceHandler; private CaseViewModel caseViewModel; - private CheckCaseListAdapter adapter; - private List dataBeans = new ArrayList<>(); + private NormalRecyclerAdapter adapter; + private List dataBeans = new ArrayList<>(); private int pageIndex = 1; private boolean isRefresh, isLoadMore = false; @@ -50,12 +59,37 @@ protected void initData() { weakReferenceHandler = new WeakReferenceHandler(callback); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.caseCheckModel.observe(this, new Observer() { + @Override + public void onChanged(CaseCheckModel resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(requireContext(), "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(202104252); + } + } + }); } @Override public void onResume() { - obtainCheckCaseList(); super.onResume(); + pageIndex = 1; + obtainCheckCaseList(); } private void obtainCheckCaseList() { @@ -81,32 +115,6 @@ obtainCheckCaseList(); } }); - - caseViewModel.caseCheckModel.observe(this, new Observer() { - - @Override - public void onChanged(CaseCheckModel resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(requireContext(), "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(202104252); - } - } - }); } private final Handler.Callback callback = new Handler.Callback() { @@ -127,16 +135,42 @@ }); } else { viewBinding.emptyView.hide(); - adapter = new CheckCaseListAdapter(requireContext(), dataBeans); - viewBinding.caseRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new CheckCaseListAdapter.OnItemClickListener() { + adapter = new NormalRecyclerAdapter(R.layout.item_case_rv_l, dataBeans) { @Override - public void onClick(int position) { - ContextHub.navigatePageTo( - requireContext(), - CaseCheckedDetailActivity.class, - dataBeans.get(position).getId() - ); + public void convertView(ViewHolder viewHolder, int position, CaseCheckModel.DataModel.RowsModel item) { + String fileIdProcess = item.getFileIdProcess(); + if (!TextUtils.isEmpty(fileIdProcess)) { + String[] split = fileIdProcess.split(","); + String firstImage = split[0]; + if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Drawable drawable = Glide.with(requireContext()).load(StringHelper.appendCompleteURL(firstImage)).submit().get(); + runOnUiThread(new Runnable() { + @Override + public void run() { + viewHolder.setImageResource(R.id.caseImageView, drawable); + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + } + } + viewHolder.setText(R.id.caseTitleView, StringHub.filterSpaceOrEnter(item.getDescription())) + .setText(R.id.casePlaceView, "发生地点:" + StringHub.filterSpaceOrEnter(item.getFieldintro())) + .setText(R.id.caseTimeView, "上报时间:" + item.getReportTime()); + } + }; + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, CaseCheckModel.DataModel.RowsModel rowsModel) { + ContextHub.navigatePageTo(requireContext(), CheckedDetailActivity.class, rowsModel.getId()); } }); } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b6a8d08..c78d07c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -64,8 +64,8 @@ - - + + diff --git a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java deleted file mode 100644 index 254f0cd..0000000 --- a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.casic.dcms.adapter; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.text.TextUtils; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.model.check.CaseCheckModel; -import com.casic.dcms.utils.StringHelper; -import com.pengxh.androidx.lite.hub.StringHub; -import com.qmuiteam.qmui.widget.QMUIRadiusImageView; - -import java.util.List; - -public class CheckCaseListAdapter extends RecyclerView.Adapter { - - private final Context context; - private final List dataBeans; - private final LayoutInflater layoutInflater; - - public CheckCaseListAdapter(Context context, List dataRows) { - this.context = context; - this.dataBeans = dataRows; - this.layoutInflater = LayoutInflater.from(context); - } - - @NonNull - @Override - public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - return new ItemViewHolder(layoutInflater.inflate(R.layout.item_case_rv_l, parent, false)); - } - - @Override - public void onBindViewHolder(@NonNull ItemViewHolder holder, @SuppressLint("RecyclerView") int position) { - holder.bindView(dataBeans.get(position)); - if (clickListener != null) { - holder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - clickListener.onClick(position); - } - }); - } - } - - @Override - public int getItemCount() { - return dataBeans.size(); - } - - class ItemViewHolder extends RecyclerView.ViewHolder { - - private final QMUIRadiusImageView caseImageView; - private final TextView caseTitleView; - private final TextView casePlaceView; - private final TextView caseTimeView; - - ItemViewHolder(@NonNull View itemView) { - super(itemView); - caseImageView = itemView.findViewById(R.id.caseImageView); - caseTitleView = itemView.findViewById(R.id.caseTitleView); - casePlaceView = itemView.findViewById(R.id.casePlaceView); - caseTimeView = itemView.findViewById(R.id.caseTimeView); - } - - void bindView(CaseCheckModel.DataDTO.RowsDTO rowsBean) { - //处理图片 - String fileIdProcess = rowsBean.getFileIdProcess(); - if (!TextUtils.isEmpty(fileIdProcess)) { - String[] split = fileIdProcess.split(","); - String firstImage = split[0]; - if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { - Glide.with(context).load(StringHelper.appendCompleteURL(firstImage)).into(caseImageView); - } - } - caseTitleView.setText(StringHub.filterSpaceOrEnter(rowsBean.getDescription())); - casePlaceView.setText("发生地点:" + StringHub.filterSpaceOrEnter(rowsBean.getFieldintro())); - caseTimeView.setText("上报时间:" + rowsBean.getReportTime()); - } - } - - private OnItemClickListener clickListener; - - public interface OnItemClickListener { - void onClick(int position); - } - - public void setOnItemClickListener(OnItemClickListener onItemClickListener) { - this.clickListener = onItemClickListener; - } -} diff --git a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java index 85cebc6..667981d 100644 --- a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java @@ -1,19 +1,27 @@ package com.casic.dcms.fragment.check; +import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; + +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.casic.dcms.adapter.CheckCaseListAdapter; +import com.bumptech.glide.Glide; +import com.casic.dcms.R; import com.casic.dcms.databinding.FragmentCheckCaseBinding; -import com.casic.dcms.model.check.CaseCheckModel; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.view.check.CaseCheckDetailActivity; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.check.CheckDetailActivity; import com.casic.dcms.vm.CaseViewModel; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseFragment; import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.StringHub; @@ -24,14 +32,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class CaseCheckFragment extends AndroidxBaseFragment { private static final String TAG = "CaseCheckFragment"; private WeakReferenceHandler weakReferenceHandler; private CaseViewModel caseViewModel; - private CheckCaseListAdapter adapter; - private List dataBeans = new ArrayList<>(); + private NormalRecyclerAdapter adapter; + private List dataBeans = new ArrayList<>(); private int pageIndex = 1; private boolean isRefresh, isLoadMore = false; @@ -49,12 +58,37 @@ protected void initData() { weakReferenceHandler = new WeakReferenceHandler(callback); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.caseCheckModel.observe(this, new Observer() { + @Override + public void onChanged(CaseCheckModel resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(requireContext(), "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(202104251); + } + } + }); } @Override public void onResume() { - obtainCheckCaseList(); super.onResume(); + pageIndex = 1; + obtainCheckCaseList(); } private void obtainCheckCaseList() { @@ -80,31 +114,6 @@ obtainCheckCaseList(); } }); - - caseViewModel.caseCheckModel.observe(this, new Observer() { - @Override - public void onChanged(CaseCheckModel resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(requireContext(), "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(202104251); - } - } - }); } private final Handler.Callback callback = new Handler.Callback() { @@ -125,16 +134,42 @@ }); } else { viewBinding.emptyView.hide(); - adapter = new CheckCaseListAdapter(requireContext(), dataBeans); - viewBinding.caseRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new CheckCaseListAdapter.OnItemClickListener() { + adapter = new NormalRecyclerAdapter(R.layout.item_case_rv_l, dataBeans) { @Override - public void onClick(int position) { - ContextHub.navigatePageTo( - requireContext(), - CaseCheckDetailActivity.class, - dataBeans.get(position).getId() - ); + public void convertView(ViewHolder viewHolder, int position, CaseCheckModel.DataModel.RowsModel item) { + String fileIdProcess = item.getFileIdProcess(); + if (!TextUtils.isEmpty(fileIdProcess)) { + String[] split = fileIdProcess.split(","); + String firstImage = split[0]; + if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Drawable drawable = Glide.with(requireContext()).load(StringHelper.appendCompleteURL(firstImage)).submit().get(); + runOnUiThread(new Runnable() { + @Override + public void run() { + viewHolder.setImageResource(R.id.caseImageView, drawable); + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + } + } + viewHolder.setText(R.id.caseTitleView, StringHub.filterSpaceOrEnter(item.getDescription())) + .setText(R.id.casePlaceView, "发生地点:" + StringHub.filterSpaceOrEnter(item.getFieldintro())) + .setText(R.id.caseTimeView, "上报时间:" + item.getReportTime()); + } + }; + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, CaseCheckModel.DataModel.RowsModel rowsModel) { + ContextHub.navigatePageTo(requireContext(), CheckDetailActivity.class, rowsModel.getId()); } }); } diff --git a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java index 3e2d904..6775b65 100644 --- a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java @@ -1,19 +1,27 @@ package com.casic.dcms.fragment.check; +import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; + +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.casic.dcms.adapter.CheckCaseListAdapter; +import com.bumptech.glide.Glide; +import com.casic.dcms.R; import com.casic.dcms.databinding.FragmentCheckCaseBinding; -import com.casic.dcms.model.check.CaseCheckModel; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.view.check.CaseCheckedDetailActivity; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.check.CheckedDetailActivity; import com.casic.dcms.vm.CaseViewModel; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseFragment; import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.StringHub; @@ -24,14 +32,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class CaseCheckedFragment extends AndroidxBaseFragment { private static final String TAG = "CaseCheckedFragment"; private WeakReferenceHandler weakReferenceHandler; private CaseViewModel caseViewModel; - private CheckCaseListAdapter adapter; - private List dataBeans = new ArrayList<>(); + private NormalRecyclerAdapter adapter; + private List dataBeans = new ArrayList<>(); private int pageIndex = 1; private boolean isRefresh, isLoadMore = false; @@ -50,12 +59,37 @@ protected void initData() { weakReferenceHandler = new WeakReferenceHandler(callback); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.caseCheckModel.observe(this, new Observer() { + @Override + public void onChanged(CaseCheckModel resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(requireContext(), "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(202104252); + } + } + }); } @Override public void onResume() { - obtainCheckCaseList(); super.onResume(); + pageIndex = 1; + obtainCheckCaseList(); } private void obtainCheckCaseList() { @@ -81,32 +115,6 @@ obtainCheckCaseList(); } }); - - caseViewModel.caseCheckModel.observe(this, new Observer() { - - @Override - public void onChanged(CaseCheckModel resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(requireContext(), "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(202104252); - } - } - }); } private final Handler.Callback callback = new Handler.Callback() { @@ -127,16 +135,42 @@ }); } else { viewBinding.emptyView.hide(); - adapter = new CheckCaseListAdapter(requireContext(), dataBeans); - viewBinding.caseRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new CheckCaseListAdapter.OnItemClickListener() { + adapter = new NormalRecyclerAdapter(R.layout.item_case_rv_l, dataBeans) { @Override - public void onClick(int position) { - ContextHub.navigatePageTo( - requireContext(), - CaseCheckedDetailActivity.class, - dataBeans.get(position).getId() - ); + public void convertView(ViewHolder viewHolder, int position, CaseCheckModel.DataModel.RowsModel item) { + String fileIdProcess = item.getFileIdProcess(); + if (!TextUtils.isEmpty(fileIdProcess)) { + String[] split = fileIdProcess.split(","); + String firstImage = split[0]; + if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Drawable drawable = Glide.with(requireContext()).load(StringHelper.appendCompleteURL(firstImage)).submit().get(); + runOnUiThread(new Runnable() { + @Override + public void run() { + viewHolder.setImageResource(R.id.caseImageView, drawable); + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + } + } + viewHolder.setText(R.id.caseTitleView, StringHub.filterSpaceOrEnter(item.getDescription())) + .setText(R.id.casePlaceView, "发生地点:" + StringHub.filterSpaceOrEnter(item.getFieldintro())) + .setText(R.id.caseTimeView, "上报时间:" + item.getReportTime()); + } + }; + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, CaseCheckModel.DataModel.RowsModel rowsModel) { + ContextHub.navigatePageTo(requireContext(), CheckedDetailActivity.class, rowsModel.getId()); } }); } diff --git a/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java b/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java new file mode 100644 index 0000000..550a1fe --- /dev/null +++ b/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java @@ -0,0 +1,358 @@ +package com.casic.dcms.model; + +import java.util.List; + +/** + * 核查-已办/待办共用一个Model + */ +public class CaseCheckModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String isPostpone; + private String description; + private String source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private String caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String lng; + private String isOvertime; + private String currRoleName; + private String fileIdVerify; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String taskName; + private String sourceName; + private String fileIdProcess; + private String reportTime; + private String onedeptName; + + public String getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(String isPostpone) { + this.isPostpone = isPostpone; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getCaseState() { + return caseState; + } + + public void setCaseState(String caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getFileIdVerify() { + return fileIdVerify; + } + + public void setFileIdVerify(String fileIdVerify) { + this.fileIdVerify = fileIdVerify; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getTaskName() { + return taskName; + } + + public void setTaskName(String taskName) { + this.taskName = taskName; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getFileIdProcess() { + return fileIdProcess; + } + + public void setFileIdProcess(String fileIdProcess) { + this.fileIdProcess = fileIdProcess; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b6a8d08..c78d07c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -64,8 +64,8 @@ - - + + diff --git a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java deleted file mode 100644 index 254f0cd..0000000 --- a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.casic.dcms.adapter; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.text.TextUtils; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.model.check.CaseCheckModel; -import com.casic.dcms.utils.StringHelper; -import com.pengxh.androidx.lite.hub.StringHub; -import com.qmuiteam.qmui.widget.QMUIRadiusImageView; - -import java.util.List; - -public class CheckCaseListAdapter extends RecyclerView.Adapter { - - private final Context context; - private final List dataBeans; - private final LayoutInflater layoutInflater; - - public CheckCaseListAdapter(Context context, List dataRows) { - this.context = context; - this.dataBeans = dataRows; - this.layoutInflater = LayoutInflater.from(context); - } - - @NonNull - @Override - public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - return new ItemViewHolder(layoutInflater.inflate(R.layout.item_case_rv_l, parent, false)); - } - - @Override - public void onBindViewHolder(@NonNull ItemViewHolder holder, @SuppressLint("RecyclerView") int position) { - holder.bindView(dataBeans.get(position)); - if (clickListener != null) { - holder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - clickListener.onClick(position); - } - }); - } - } - - @Override - public int getItemCount() { - return dataBeans.size(); - } - - class ItemViewHolder extends RecyclerView.ViewHolder { - - private final QMUIRadiusImageView caseImageView; - private final TextView caseTitleView; - private final TextView casePlaceView; - private final TextView caseTimeView; - - ItemViewHolder(@NonNull View itemView) { - super(itemView); - caseImageView = itemView.findViewById(R.id.caseImageView); - caseTitleView = itemView.findViewById(R.id.caseTitleView); - casePlaceView = itemView.findViewById(R.id.casePlaceView); - caseTimeView = itemView.findViewById(R.id.caseTimeView); - } - - void bindView(CaseCheckModel.DataDTO.RowsDTO rowsBean) { - //处理图片 - String fileIdProcess = rowsBean.getFileIdProcess(); - if (!TextUtils.isEmpty(fileIdProcess)) { - String[] split = fileIdProcess.split(","); - String firstImage = split[0]; - if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { - Glide.with(context).load(StringHelper.appendCompleteURL(firstImage)).into(caseImageView); - } - } - caseTitleView.setText(StringHub.filterSpaceOrEnter(rowsBean.getDescription())); - casePlaceView.setText("发生地点:" + StringHub.filterSpaceOrEnter(rowsBean.getFieldintro())); - caseTimeView.setText("上报时间:" + rowsBean.getReportTime()); - } - } - - private OnItemClickListener clickListener; - - public interface OnItemClickListener { - void onClick(int position); - } - - public void setOnItemClickListener(OnItemClickListener onItemClickListener) { - this.clickListener = onItemClickListener; - } -} diff --git a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java index 85cebc6..667981d 100644 --- a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java @@ -1,19 +1,27 @@ package com.casic.dcms.fragment.check; +import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; + +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.casic.dcms.adapter.CheckCaseListAdapter; +import com.bumptech.glide.Glide; +import com.casic.dcms.R; import com.casic.dcms.databinding.FragmentCheckCaseBinding; -import com.casic.dcms.model.check.CaseCheckModel; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.view.check.CaseCheckDetailActivity; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.check.CheckDetailActivity; import com.casic.dcms.vm.CaseViewModel; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseFragment; import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.StringHub; @@ -24,14 +32,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class CaseCheckFragment extends AndroidxBaseFragment { private static final String TAG = "CaseCheckFragment"; private WeakReferenceHandler weakReferenceHandler; private CaseViewModel caseViewModel; - private CheckCaseListAdapter adapter; - private List dataBeans = new ArrayList<>(); + private NormalRecyclerAdapter adapter; + private List dataBeans = new ArrayList<>(); private int pageIndex = 1; private boolean isRefresh, isLoadMore = false; @@ -49,12 +58,37 @@ protected void initData() { weakReferenceHandler = new WeakReferenceHandler(callback); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.caseCheckModel.observe(this, new Observer() { + @Override + public void onChanged(CaseCheckModel resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(requireContext(), "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(202104251); + } + } + }); } @Override public void onResume() { - obtainCheckCaseList(); super.onResume(); + pageIndex = 1; + obtainCheckCaseList(); } private void obtainCheckCaseList() { @@ -80,31 +114,6 @@ obtainCheckCaseList(); } }); - - caseViewModel.caseCheckModel.observe(this, new Observer() { - @Override - public void onChanged(CaseCheckModel resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(requireContext(), "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(202104251); - } - } - }); } private final Handler.Callback callback = new Handler.Callback() { @@ -125,16 +134,42 @@ }); } else { viewBinding.emptyView.hide(); - adapter = new CheckCaseListAdapter(requireContext(), dataBeans); - viewBinding.caseRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new CheckCaseListAdapter.OnItemClickListener() { + adapter = new NormalRecyclerAdapter(R.layout.item_case_rv_l, dataBeans) { @Override - public void onClick(int position) { - ContextHub.navigatePageTo( - requireContext(), - CaseCheckDetailActivity.class, - dataBeans.get(position).getId() - ); + public void convertView(ViewHolder viewHolder, int position, CaseCheckModel.DataModel.RowsModel item) { + String fileIdProcess = item.getFileIdProcess(); + if (!TextUtils.isEmpty(fileIdProcess)) { + String[] split = fileIdProcess.split(","); + String firstImage = split[0]; + if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Drawable drawable = Glide.with(requireContext()).load(StringHelper.appendCompleteURL(firstImage)).submit().get(); + runOnUiThread(new Runnable() { + @Override + public void run() { + viewHolder.setImageResource(R.id.caseImageView, drawable); + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + } + } + viewHolder.setText(R.id.caseTitleView, StringHub.filterSpaceOrEnter(item.getDescription())) + .setText(R.id.casePlaceView, "发生地点:" + StringHub.filterSpaceOrEnter(item.getFieldintro())) + .setText(R.id.caseTimeView, "上报时间:" + item.getReportTime()); + } + }; + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, CaseCheckModel.DataModel.RowsModel rowsModel) { + ContextHub.navigatePageTo(requireContext(), CheckDetailActivity.class, rowsModel.getId()); } }); } diff --git a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java index 3e2d904..6775b65 100644 --- a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java @@ -1,19 +1,27 @@ package com.casic.dcms.fragment.check; +import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; + +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.casic.dcms.adapter.CheckCaseListAdapter; +import com.bumptech.glide.Glide; +import com.casic.dcms.R; import com.casic.dcms.databinding.FragmentCheckCaseBinding; -import com.casic.dcms.model.check.CaseCheckModel; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.view.check.CaseCheckedDetailActivity; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.check.CheckedDetailActivity; import com.casic.dcms.vm.CaseViewModel; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseFragment; import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.StringHub; @@ -24,14 +32,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class CaseCheckedFragment extends AndroidxBaseFragment { private static final String TAG = "CaseCheckedFragment"; private WeakReferenceHandler weakReferenceHandler; private CaseViewModel caseViewModel; - private CheckCaseListAdapter adapter; - private List dataBeans = new ArrayList<>(); + private NormalRecyclerAdapter adapter; + private List dataBeans = new ArrayList<>(); private int pageIndex = 1; private boolean isRefresh, isLoadMore = false; @@ -50,12 +59,37 @@ protected void initData() { weakReferenceHandler = new WeakReferenceHandler(callback); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.caseCheckModel.observe(this, new Observer() { + @Override + public void onChanged(CaseCheckModel resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(requireContext(), "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(202104252); + } + } + }); } @Override public void onResume() { - obtainCheckCaseList(); super.onResume(); + pageIndex = 1; + obtainCheckCaseList(); } private void obtainCheckCaseList() { @@ -81,32 +115,6 @@ obtainCheckCaseList(); } }); - - caseViewModel.caseCheckModel.observe(this, new Observer() { - - @Override - public void onChanged(CaseCheckModel resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(requireContext(), "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(202104252); - } - } - }); } private final Handler.Callback callback = new Handler.Callback() { @@ -127,16 +135,42 @@ }); } else { viewBinding.emptyView.hide(); - adapter = new CheckCaseListAdapter(requireContext(), dataBeans); - viewBinding.caseRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new CheckCaseListAdapter.OnItemClickListener() { + adapter = new NormalRecyclerAdapter(R.layout.item_case_rv_l, dataBeans) { @Override - public void onClick(int position) { - ContextHub.navigatePageTo( - requireContext(), - CaseCheckedDetailActivity.class, - dataBeans.get(position).getId() - ); + public void convertView(ViewHolder viewHolder, int position, CaseCheckModel.DataModel.RowsModel item) { + String fileIdProcess = item.getFileIdProcess(); + if (!TextUtils.isEmpty(fileIdProcess)) { + String[] split = fileIdProcess.split(","); + String firstImage = split[0]; + if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Drawable drawable = Glide.with(requireContext()).load(StringHelper.appendCompleteURL(firstImage)).submit().get(); + runOnUiThread(new Runnable() { + @Override + public void run() { + viewHolder.setImageResource(R.id.caseImageView, drawable); + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + } + } + viewHolder.setText(R.id.caseTitleView, StringHub.filterSpaceOrEnter(item.getDescription())) + .setText(R.id.casePlaceView, "发生地点:" + StringHub.filterSpaceOrEnter(item.getFieldintro())) + .setText(R.id.caseTimeView, "上报时间:" + item.getReportTime()); + } + }; + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, CaseCheckModel.DataModel.RowsModel rowsModel) { + ContextHub.navigatePageTo(requireContext(), CheckedDetailActivity.class, rowsModel.getId()); } }); } diff --git a/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java b/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java new file mode 100644 index 0000000..550a1fe --- /dev/null +++ b/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java @@ -0,0 +1,358 @@ +package com.casic.dcms.model; + +import java.util.List; + +/** + * 核查-已办/待办共用一个Model + */ +public class CaseCheckModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String isPostpone; + private String description; + private String source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private String caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String lng; + private String isOvertime; + private String currRoleName; + private String fileIdVerify; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String taskName; + private String sourceName; + private String fileIdProcess; + private String reportTime; + private String onedeptName; + + public String getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(String isPostpone) { + this.isPostpone = isPostpone; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getCaseState() { + return caseState; + } + + public void setCaseState(String caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getFileIdVerify() { + return fileIdVerify; + } + + public void setFileIdVerify(String fileIdVerify) { + this.fileIdVerify = fileIdVerify; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getTaskName() { + return taskName; + } + + public void setTaskName(String taskName) { + this.taskName = taskName; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getFileIdProcess() { + return fileIdProcess; + } + + public void setFileIdProcess(String fileIdProcess) { + this.fileIdProcess = fileIdProcess; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java b/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java deleted file mode 100644 index 854e2fe..0000000 --- a/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java +++ /dev/null @@ -1,358 +0,0 @@ -package com.casic.dcms.model.check; - -import java.util.List; - -/** - * 核查-已办/待办共用一个Bean - */ -public class CaseCheckModel { - - private int code; - private DataDTO data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataDTO getData() { - return data; - } - - public void setData(DataDTO data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataDTO { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsDTO { - private int isPostpone; - private String description; - private int source; - private String eorcName; - private String casetypeDetailName; - private String remainingTime; - private String casetypeName; - private String currUserId; - private String currUserName; - private String processId; - private int caseState; - private String id; - private String shopId; - private String fieldintro; - private String lat; - private String caseStateName; - private String lng; - private String isOvertime; - private String currRoleName; - private String fileIdVerify; - private String casetypeDetailCode; - private String onedeptid; - private String eorc; - private String currRoleId; - private String caseid; - private String casetypeCode; - private String nodeLimittime; - private String taskName; - private String sourceName; - private String fileIdProcess; - private String reportTime; - private String onedeptName; - - public int getIsPostpone() { - return isPostpone; - } - - public void setIsPostpone(int isPostpone) { - this.isPostpone = isPostpone; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public int getSource() { - return source; - } - - public void setSource(int source) { - this.source = source; - } - - public String getEorcName() { - return eorcName; - } - - public void setEorcName(String eorcName) { - this.eorcName = eorcName; - } - - public String getCasetypeDetailName() { - return casetypeDetailName; - } - - public void setCasetypeDetailName(String casetypeDetailName) { - this.casetypeDetailName = casetypeDetailName; - } - - public String getRemainingTime() { - return remainingTime; - } - - public void setRemainingTime(String remainingTime) { - this.remainingTime = remainingTime; - } - - public String getCasetypeName() { - return casetypeName; - } - - public void setCasetypeName(String casetypeName) { - this.casetypeName = casetypeName; - } - - public String getCurrUserId() { - return currUserId; - } - - public void setCurrUserId(String currUserId) { - this.currUserId = currUserId; - } - - public String getCurrUserName() { - return currUserName; - } - - public void setCurrUserName(String currUserName) { - this.currUserName = currUserName; - } - - public String getProcessId() { - return processId; - } - - public void setProcessId(String processId) { - this.processId = processId; - } - - public int getCaseState() { - return caseState; - } - - public void setCaseState(int caseState) { - this.caseState = caseState; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getShopId() { - return shopId; - } - - public void setShopId(String shopId) { - this.shopId = shopId; - } - - public String getFieldintro() { - return fieldintro; - } - - public void setFieldintro(String fieldintro) { - this.fieldintro = fieldintro; - } - - public String getLat() { - return lat; - } - - public void setLat(String lat) { - this.lat = lat; - } - - public String getCaseStateName() { - return caseStateName; - } - - public void setCaseStateName(String caseStateName) { - this.caseStateName = caseStateName; - } - - public String getLng() { - return lng; - } - - public void setLng(String lng) { - this.lng = lng; - } - - public String getIsOvertime() { - return isOvertime; - } - - public void setIsOvertime(String isOvertime) { - this.isOvertime = isOvertime; - } - - public String getCurrRoleName() { - return currRoleName; - } - - public void setCurrRoleName(String currRoleName) { - this.currRoleName = currRoleName; - } - - public String getFileIdVerify() { - return fileIdVerify; - } - - public void setFileIdVerify(String fileIdVerify) { - this.fileIdVerify = fileIdVerify; - } - - public String getCasetypeDetailCode() { - return casetypeDetailCode; - } - - public void setCasetypeDetailCode(String casetypeDetailCode) { - this.casetypeDetailCode = casetypeDetailCode; - } - - public String getOnedeptid() { - return onedeptid; - } - - public void setOnedeptid(String onedeptid) { - this.onedeptid = onedeptid; - } - - public String getEorc() { - return eorc; - } - - public void setEorc(String eorc) { - this.eorc = eorc; - } - - public String getCurrRoleId() { - return currRoleId; - } - - public void setCurrRoleId(String currRoleId) { - this.currRoleId = currRoleId; - } - - public String getCaseid() { - return caseid; - } - - public void setCaseid(String caseid) { - this.caseid = caseid; - } - - public String getCasetypeCode() { - return casetypeCode; - } - - public void setCasetypeCode(String casetypeCode) { - this.casetypeCode = casetypeCode; - } - - public String getNodeLimittime() { - return nodeLimittime; - } - - public void setNodeLimittime(String nodeLimittime) { - this.nodeLimittime = nodeLimittime; - } - - public String getTaskName() { - return taskName; - } - - public void setTaskName(String taskName) { - this.taskName = taskName; - } - - public String getSourceName() { - return sourceName; - } - - public void setSourceName(String sourceName) { - this.sourceName = sourceName; - } - - public String getFileIdProcess() { - return fileIdProcess; - } - - public void setFileIdProcess(String fileIdProcess) { - this.fileIdProcess = fileIdProcess; - } - - public String getReportTime() { - return reportTime; - } - - public void setReportTime(String reportTime) { - this.reportTime = reportTime; - } - - public String getOnedeptName() { - return onedeptName; - } - - public void setOnedeptName(String onedeptName) { - this.onedeptName = onedeptName; - } - } - } -} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b6a8d08..c78d07c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -64,8 +64,8 @@ - - + + diff --git a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java deleted file mode 100644 index 254f0cd..0000000 --- a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.casic.dcms.adapter; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.text.TextUtils; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.model.check.CaseCheckModel; -import com.casic.dcms.utils.StringHelper; -import com.pengxh.androidx.lite.hub.StringHub; -import com.qmuiteam.qmui.widget.QMUIRadiusImageView; - -import java.util.List; - -public class CheckCaseListAdapter extends RecyclerView.Adapter { - - private final Context context; - private final List dataBeans; - private final LayoutInflater layoutInflater; - - public CheckCaseListAdapter(Context context, List dataRows) { - this.context = context; - this.dataBeans = dataRows; - this.layoutInflater = LayoutInflater.from(context); - } - - @NonNull - @Override - public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - return new ItemViewHolder(layoutInflater.inflate(R.layout.item_case_rv_l, parent, false)); - } - - @Override - public void onBindViewHolder(@NonNull ItemViewHolder holder, @SuppressLint("RecyclerView") int position) { - holder.bindView(dataBeans.get(position)); - if (clickListener != null) { - holder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - clickListener.onClick(position); - } - }); - } - } - - @Override - public int getItemCount() { - return dataBeans.size(); - } - - class ItemViewHolder extends RecyclerView.ViewHolder { - - private final QMUIRadiusImageView caseImageView; - private final TextView caseTitleView; - private final TextView casePlaceView; - private final TextView caseTimeView; - - ItemViewHolder(@NonNull View itemView) { - super(itemView); - caseImageView = itemView.findViewById(R.id.caseImageView); - caseTitleView = itemView.findViewById(R.id.caseTitleView); - casePlaceView = itemView.findViewById(R.id.casePlaceView); - caseTimeView = itemView.findViewById(R.id.caseTimeView); - } - - void bindView(CaseCheckModel.DataDTO.RowsDTO rowsBean) { - //处理图片 - String fileIdProcess = rowsBean.getFileIdProcess(); - if (!TextUtils.isEmpty(fileIdProcess)) { - String[] split = fileIdProcess.split(","); - String firstImage = split[0]; - if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { - Glide.with(context).load(StringHelper.appendCompleteURL(firstImage)).into(caseImageView); - } - } - caseTitleView.setText(StringHub.filterSpaceOrEnter(rowsBean.getDescription())); - casePlaceView.setText("发生地点:" + StringHub.filterSpaceOrEnter(rowsBean.getFieldintro())); - caseTimeView.setText("上报时间:" + rowsBean.getReportTime()); - } - } - - private OnItemClickListener clickListener; - - public interface OnItemClickListener { - void onClick(int position); - } - - public void setOnItemClickListener(OnItemClickListener onItemClickListener) { - this.clickListener = onItemClickListener; - } -} diff --git a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java index 85cebc6..667981d 100644 --- a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java @@ -1,19 +1,27 @@ package com.casic.dcms.fragment.check; +import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; + +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.casic.dcms.adapter.CheckCaseListAdapter; +import com.bumptech.glide.Glide; +import com.casic.dcms.R; import com.casic.dcms.databinding.FragmentCheckCaseBinding; -import com.casic.dcms.model.check.CaseCheckModel; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.view.check.CaseCheckDetailActivity; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.check.CheckDetailActivity; import com.casic.dcms.vm.CaseViewModel; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseFragment; import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.StringHub; @@ -24,14 +32,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class CaseCheckFragment extends AndroidxBaseFragment { private static final String TAG = "CaseCheckFragment"; private WeakReferenceHandler weakReferenceHandler; private CaseViewModel caseViewModel; - private CheckCaseListAdapter adapter; - private List dataBeans = new ArrayList<>(); + private NormalRecyclerAdapter adapter; + private List dataBeans = new ArrayList<>(); private int pageIndex = 1; private boolean isRefresh, isLoadMore = false; @@ -49,12 +58,37 @@ protected void initData() { weakReferenceHandler = new WeakReferenceHandler(callback); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.caseCheckModel.observe(this, new Observer() { + @Override + public void onChanged(CaseCheckModel resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(requireContext(), "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(202104251); + } + } + }); } @Override public void onResume() { - obtainCheckCaseList(); super.onResume(); + pageIndex = 1; + obtainCheckCaseList(); } private void obtainCheckCaseList() { @@ -80,31 +114,6 @@ obtainCheckCaseList(); } }); - - caseViewModel.caseCheckModel.observe(this, new Observer() { - @Override - public void onChanged(CaseCheckModel resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(requireContext(), "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(202104251); - } - } - }); } private final Handler.Callback callback = new Handler.Callback() { @@ -125,16 +134,42 @@ }); } else { viewBinding.emptyView.hide(); - adapter = new CheckCaseListAdapter(requireContext(), dataBeans); - viewBinding.caseRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new CheckCaseListAdapter.OnItemClickListener() { + adapter = new NormalRecyclerAdapter(R.layout.item_case_rv_l, dataBeans) { @Override - public void onClick(int position) { - ContextHub.navigatePageTo( - requireContext(), - CaseCheckDetailActivity.class, - dataBeans.get(position).getId() - ); + public void convertView(ViewHolder viewHolder, int position, CaseCheckModel.DataModel.RowsModel item) { + String fileIdProcess = item.getFileIdProcess(); + if (!TextUtils.isEmpty(fileIdProcess)) { + String[] split = fileIdProcess.split(","); + String firstImage = split[0]; + if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Drawable drawable = Glide.with(requireContext()).load(StringHelper.appendCompleteURL(firstImage)).submit().get(); + runOnUiThread(new Runnable() { + @Override + public void run() { + viewHolder.setImageResource(R.id.caseImageView, drawable); + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + } + } + viewHolder.setText(R.id.caseTitleView, StringHub.filterSpaceOrEnter(item.getDescription())) + .setText(R.id.casePlaceView, "发生地点:" + StringHub.filterSpaceOrEnter(item.getFieldintro())) + .setText(R.id.caseTimeView, "上报时间:" + item.getReportTime()); + } + }; + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, CaseCheckModel.DataModel.RowsModel rowsModel) { + ContextHub.navigatePageTo(requireContext(), CheckDetailActivity.class, rowsModel.getId()); } }); } diff --git a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java index 3e2d904..6775b65 100644 --- a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java @@ -1,19 +1,27 @@ package com.casic.dcms.fragment.check; +import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; + +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.casic.dcms.adapter.CheckCaseListAdapter; +import com.bumptech.glide.Glide; +import com.casic.dcms.R; import com.casic.dcms.databinding.FragmentCheckCaseBinding; -import com.casic.dcms.model.check.CaseCheckModel; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.view.check.CaseCheckedDetailActivity; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.check.CheckedDetailActivity; import com.casic.dcms.vm.CaseViewModel; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseFragment; import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.StringHub; @@ -24,14 +32,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class CaseCheckedFragment extends AndroidxBaseFragment { private static final String TAG = "CaseCheckedFragment"; private WeakReferenceHandler weakReferenceHandler; private CaseViewModel caseViewModel; - private CheckCaseListAdapter adapter; - private List dataBeans = new ArrayList<>(); + private NormalRecyclerAdapter adapter; + private List dataBeans = new ArrayList<>(); private int pageIndex = 1; private boolean isRefresh, isLoadMore = false; @@ -50,12 +59,37 @@ protected void initData() { weakReferenceHandler = new WeakReferenceHandler(callback); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.caseCheckModel.observe(this, new Observer() { + @Override + public void onChanged(CaseCheckModel resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(requireContext(), "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(202104252); + } + } + }); } @Override public void onResume() { - obtainCheckCaseList(); super.onResume(); + pageIndex = 1; + obtainCheckCaseList(); } private void obtainCheckCaseList() { @@ -81,32 +115,6 @@ obtainCheckCaseList(); } }); - - caseViewModel.caseCheckModel.observe(this, new Observer() { - - @Override - public void onChanged(CaseCheckModel resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(requireContext(), "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(202104252); - } - } - }); } private final Handler.Callback callback = new Handler.Callback() { @@ -127,16 +135,42 @@ }); } else { viewBinding.emptyView.hide(); - adapter = new CheckCaseListAdapter(requireContext(), dataBeans); - viewBinding.caseRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new CheckCaseListAdapter.OnItemClickListener() { + adapter = new NormalRecyclerAdapter(R.layout.item_case_rv_l, dataBeans) { @Override - public void onClick(int position) { - ContextHub.navigatePageTo( - requireContext(), - CaseCheckedDetailActivity.class, - dataBeans.get(position).getId() - ); + public void convertView(ViewHolder viewHolder, int position, CaseCheckModel.DataModel.RowsModel item) { + String fileIdProcess = item.getFileIdProcess(); + if (!TextUtils.isEmpty(fileIdProcess)) { + String[] split = fileIdProcess.split(","); + String firstImage = split[0]; + if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Drawable drawable = Glide.with(requireContext()).load(StringHelper.appendCompleteURL(firstImage)).submit().get(); + runOnUiThread(new Runnable() { + @Override + public void run() { + viewHolder.setImageResource(R.id.caseImageView, drawable); + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + } + } + viewHolder.setText(R.id.caseTitleView, StringHub.filterSpaceOrEnter(item.getDescription())) + .setText(R.id.casePlaceView, "发生地点:" + StringHub.filterSpaceOrEnter(item.getFieldintro())) + .setText(R.id.caseTimeView, "上报时间:" + item.getReportTime()); + } + }; + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, CaseCheckModel.DataModel.RowsModel rowsModel) { + ContextHub.navigatePageTo(requireContext(), CheckedDetailActivity.class, rowsModel.getId()); } }); } diff --git a/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java b/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java new file mode 100644 index 0000000..550a1fe --- /dev/null +++ b/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java @@ -0,0 +1,358 @@ +package com.casic.dcms.model; + +import java.util.List; + +/** + * 核查-已办/待办共用一个Model + */ +public class CaseCheckModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String isPostpone; + private String description; + private String source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private String caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String lng; + private String isOvertime; + private String currRoleName; + private String fileIdVerify; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String taskName; + private String sourceName; + private String fileIdProcess; + private String reportTime; + private String onedeptName; + + public String getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(String isPostpone) { + this.isPostpone = isPostpone; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getCaseState() { + return caseState; + } + + public void setCaseState(String caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getFileIdVerify() { + return fileIdVerify; + } + + public void setFileIdVerify(String fileIdVerify) { + this.fileIdVerify = fileIdVerify; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getTaskName() { + return taskName; + } + + public void setTaskName(String taskName) { + this.taskName = taskName; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getFileIdProcess() { + return fileIdProcess; + } + + public void setFileIdProcess(String fileIdProcess) { + this.fileIdProcess = fileIdProcess; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java b/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java deleted file mode 100644 index 854e2fe..0000000 --- a/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java +++ /dev/null @@ -1,358 +0,0 @@ -package com.casic.dcms.model.check; - -import java.util.List; - -/** - * 核查-已办/待办共用一个Bean - */ -public class CaseCheckModel { - - private int code; - private DataDTO data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataDTO getData() { - return data; - } - - public void setData(DataDTO data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataDTO { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsDTO { - private int isPostpone; - private String description; - private int source; - private String eorcName; - private String casetypeDetailName; - private String remainingTime; - private String casetypeName; - private String currUserId; - private String currUserName; - private String processId; - private int caseState; - private String id; - private String shopId; - private String fieldintro; - private String lat; - private String caseStateName; - private String lng; - private String isOvertime; - private String currRoleName; - private String fileIdVerify; - private String casetypeDetailCode; - private String onedeptid; - private String eorc; - private String currRoleId; - private String caseid; - private String casetypeCode; - private String nodeLimittime; - private String taskName; - private String sourceName; - private String fileIdProcess; - private String reportTime; - private String onedeptName; - - public int getIsPostpone() { - return isPostpone; - } - - public void setIsPostpone(int isPostpone) { - this.isPostpone = isPostpone; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public int getSource() { - return source; - } - - public void setSource(int source) { - this.source = source; - } - - public String getEorcName() { - return eorcName; - } - - public void setEorcName(String eorcName) { - this.eorcName = eorcName; - } - - public String getCasetypeDetailName() { - return casetypeDetailName; - } - - public void setCasetypeDetailName(String casetypeDetailName) { - this.casetypeDetailName = casetypeDetailName; - } - - public String getRemainingTime() { - return remainingTime; - } - - public void setRemainingTime(String remainingTime) { - this.remainingTime = remainingTime; - } - - public String getCasetypeName() { - return casetypeName; - } - - public void setCasetypeName(String casetypeName) { - this.casetypeName = casetypeName; - } - - public String getCurrUserId() { - return currUserId; - } - - public void setCurrUserId(String currUserId) { - this.currUserId = currUserId; - } - - public String getCurrUserName() { - return currUserName; - } - - public void setCurrUserName(String currUserName) { - this.currUserName = currUserName; - } - - public String getProcessId() { - return processId; - } - - public void setProcessId(String processId) { - this.processId = processId; - } - - public int getCaseState() { - return caseState; - } - - public void setCaseState(int caseState) { - this.caseState = caseState; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getShopId() { - return shopId; - } - - public void setShopId(String shopId) { - this.shopId = shopId; - } - - public String getFieldintro() { - return fieldintro; - } - - public void setFieldintro(String fieldintro) { - this.fieldintro = fieldintro; - } - - public String getLat() { - return lat; - } - - public void setLat(String lat) { - this.lat = lat; - } - - public String getCaseStateName() { - return caseStateName; - } - - public void setCaseStateName(String caseStateName) { - this.caseStateName = caseStateName; - } - - public String getLng() { - return lng; - } - - public void setLng(String lng) { - this.lng = lng; - } - - public String getIsOvertime() { - return isOvertime; - } - - public void setIsOvertime(String isOvertime) { - this.isOvertime = isOvertime; - } - - public String getCurrRoleName() { - return currRoleName; - } - - public void setCurrRoleName(String currRoleName) { - this.currRoleName = currRoleName; - } - - public String getFileIdVerify() { - return fileIdVerify; - } - - public void setFileIdVerify(String fileIdVerify) { - this.fileIdVerify = fileIdVerify; - } - - public String getCasetypeDetailCode() { - return casetypeDetailCode; - } - - public void setCasetypeDetailCode(String casetypeDetailCode) { - this.casetypeDetailCode = casetypeDetailCode; - } - - public String getOnedeptid() { - return onedeptid; - } - - public void setOnedeptid(String onedeptid) { - this.onedeptid = onedeptid; - } - - public String getEorc() { - return eorc; - } - - public void setEorc(String eorc) { - this.eorc = eorc; - } - - public String getCurrRoleId() { - return currRoleId; - } - - public void setCurrRoleId(String currRoleId) { - this.currRoleId = currRoleId; - } - - public String getCaseid() { - return caseid; - } - - public void setCaseid(String caseid) { - this.caseid = caseid; - } - - public String getCasetypeCode() { - return casetypeCode; - } - - public void setCasetypeCode(String casetypeCode) { - this.casetypeCode = casetypeCode; - } - - public String getNodeLimittime() { - return nodeLimittime; - } - - public void setNodeLimittime(String nodeLimittime) { - this.nodeLimittime = nodeLimittime; - } - - public String getTaskName() { - return taskName; - } - - public void setTaskName(String taskName) { - this.taskName = taskName; - } - - public String getSourceName() { - return sourceName; - } - - public void setSourceName(String sourceName) { - this.sourceName = sourceName; - } - - public String getFileIdProcess() { - return fileIdProcess; - } - - public void setFileIdProcess(String fileIdProcess) { - this.fileIdProcess = fileIdProcess; - } - - public String getReportTime() { - return reportTime; - } - - public void setReportTime(String reportTime) { - this.reportTime = reportTime; - } - - public String getOnedeptName() { - return onedeptName; - } - - public void setOnedeptName(String onedeptName) { - this.onedeptName = onedeptName; - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java b/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java index cd3e026..d0888bc 100644 --- a/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java @@ -14,10 +14,10 @@ import com.casic.dcms.R; public class NotificationHelper { - private Context mContext; + private final Context mContext; @SuppressLint("StaticFieldLeak") - private static NotificationHelper notificationHelper; - private NotificationManager notificationManager; + private static volatile NotificationHelper notificationHelper; + private final NotificationManager notificationManager; private NotificationHelper(Context context) { this.mContext = context; @@ -45,10 +45,8 @@ //创建渠道 String id = name + "_DefaultChannel"; NotificationChannel mChannel = new NotificationChannel(id, name, NotificationManager.IMPORTANCE_HIGH); -// mChannel.setSound(Uri.parse(""), Notification.AUDIO_ATTRIBUTES_DEFAULT); mChannel.setShowBadge(true); - mChannel.enableVibration(true); - mChannel.setVibrationPattern(new long[]{100, 200, 300}); + mChannel.enableVibration(false); mChannel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);//设置锁屏可见 notificationManager.createNotificationChannel(mChannel); builder = new Notification.Builder(mContext, id); diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b6a8d08..c78d07c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -64,8 +64,8 @@ - - + + diff --git a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java deleted file mode 100644 index 254f0cd..0000000 --- a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.casic.dcms.adapter; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.text.TextUtils; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.model.check.CaseCheckModel; -import com.casic.dcms.utils.StringHelper; -import com.pengxh.androidx.lite.hub.StringHub; -import com.qmuiteam.qmui.widget.QMUIRadiusImageView; - -import java.util.List; - -public class CheckCaseListAdapter extends RecyclerView.Adapter { - - private final Context context; - private final List dataBeans; - private final LayoutInflater layoutInflater; - - public CheckCaseListAdapter(Context context, List dataRows) { - this.context = context; - this.dataBeans = dataRows; - this.layoutInflater = LayoutInflater.from(context); - } - - @NonNull - @Override - public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - return new ItemViewHolder(layoutInflater.inflate(R.layout.item_case_rv_l, parent, false)); - } - - @Override - public void onBindViewHolder(@NonNull ItemViewHolder holder, @SuppressLint("RecyclerView") int position) { - holder.bindView(dataBeans.get(position)); - if (clickListener != null) { - holder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - clickListener.onClick(position); - } - }); - } - } - - @Override - public int getItemCount() { - return dataBeans.size(); - } - - class ItemViewHolder extends RecyclerView.ViewHolder { - - private final QMUIRadiusImageView caseImageView; - private final TextView caseTitleView; - private final TextView casePlaceView; - private final TextView caseTimeView; - - ItemViewHolder(@NonNull View itemView) { - super(itemView); - caseImageView = itemView.findViewById(R.id.caseImageView); - caseTitleView = itemView.findViewById(R.id.caseTitleView); - casePlaceView = itemView.findViewById(R.id.casePlaceView); - caseTimeView = itemView.findViewById(R.id.caseTimeView); - } - - void bindView(CaseCheckModel.DataDTO.RowsDTO rowsBean) { - //处理图片 - String fileIdProcess = rowsBean.getFileIdProcess(); - if (!TextUtils.isEmpty(fileIdProcess)) { - String[] split = fileIdProcess.split(","); - String firstImage = split[0]; - if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { - Glide.with(context).load(StringHelper.appendCompleteURL(firstImage)).into(caseImageView); - } - } - caseTitleView.setText(StringHub.filterSpaceOrEnter(rowsBean.getDescription())); - casePlaceView.setText("发生地点:" + StringHub.filterSpaceOrEnter(rowsBean.getFieldintro())); - caseTimeView.setText("上报时间:" + rowsBean.getReportTime()); - } - } - - private OnItemClickListener clickListener; - - public interface OnItemClickListener { - void onClick(int position); - } - - public void setOnItemClickListener(OnItemClickListener onItemClickListener) { - this.clickListener = onItemClickListener; - } -} diff --git a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java index 85cebc6..667981d 100644 --- a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java @@ -1,19 +1,27 @@ package com.casic.dcms.fragment.check; +import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; + +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.casic.dcms.adapter.CheckCaseListAdapter; +import com.bumptech.glide.Glide; +import com.casic.dcms.R; import com.casic.dcms.databinding.FragmentCheckCaseBinding; -import com.casic.dcms.model.check.CaseCheckModel; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.view.check.CaseCheckDetailActivity; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.check.CheckDetailActivity; import com.casic.dcms.vm.CaseViewModel; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseFragment; import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.StringHub; @@ -24,14 +32,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class CaseCheckFragment extends AndroidxBaseFragment { private static final String TAG = "CaseCheckFragment"; private WeakReferenceHandler weakReferenceHandler; private CaseViewModel caseViewModel; - private CheckCaseListAdapter adapter; - private List dataBeans = new ArrayList<>(); + private NormalRecyclerAdapter adapter; + private List dataBeans = new ArrayList<>(); private int pageIndex = 1; private boolean isRefresh, isLoadMore = false; @@ -49,12 +58,37 @@ protected void initData() { weakReferenceHandler = new WeakReferenceHandler(callback); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.caseCheckModel.observe(this, new Observer() { + @Override + public void onChanged(CaseCheckModel resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(requireContext(), "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(202104251); + } + } + }); } @Override public void onResume() { - obtainCheckCaseList(); super.onResume(); + pageIndex = 1; + obtainCheckCaseList(); } private void obtainCheckCaseList() { @@ -80,31 +114,6 @@ obtainCheckCaseList(); } }); - - caseViewModel.caseCheckModel.observe(this, new Observer() { - @Override - public void onChanged(CaseCheckModel resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(requireContext(), "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(202104251); - } - } - }); } private final Handler.Callback callback = new Handler.Callback() { @@ -125,16 +134,42 @@ }); } else { viewBinding.emptyView.hide(); - adapter = new CheckCaseListAdapter(requireContext(), dataBeans); - viewBinding.caseRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new CheckCaseListAdapter.OnItemClickListener() { + adapter = new NormalRecyclerAdapter(R.layout.item_case_rv_l, dataBeans) { @Override - public void onClick(int position) { - ContextHub.navigatePageTo( - requireContext(), - CaseCheckDetailActivity.class, - dataBeans.get(position).getId() - ); + public void convertView(ViewHolder viewHolder, int position, CaseCheckModel.DataModel.RowsModel item) { + String fileIdProcess = item.getFileIdProcess(); + if (!TextUtils.isEmpty(fileIdProcess)) { + String[] split = fileIdProcess.split(","); + String firstImage = split[0]; + if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Drawable drawable = Glide.with(requireContext()).load(StringHelper.appendCompleteURL(firstImage)).submit().get(); + runOnUiThread(new Runnable() { + @Override + public void run() { + viewHolder.setImageResource(R.id.caseImageView, drawable); + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + } + } + viewHolder.setText(R.id.caseTitleView, StringHub.filterSpaceOrEnter(item.getDescription())) + .setText(R.id.casePlaceView, "发生地点:" + StringHub.filterSpaceOrEnter(item.getFieldintro())) + .setText(R.id.caseTimeView, "上报时间:" + item.getReportTime()); + } + }; + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, CaseCheckModel.DataModel.RowsModel rowsModel) { + ContextHub.navigatePageTo(requireContext(), CheckDetailActivity.class, rowsModel.getId()); } }); } diff --git a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java index 3e2d904..6775b65 100644 --- a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java @@ -1,19 +1,27 @@ package com.casic.dcms.fragment.check; +import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; + +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.casic.dcms.adapter.CheckCaseListAdapter; +import com.bumptech.glide.Glide; +import com.casic.dcms.R; import com.casic.dcms.databinding.FragmentCheckCaseBinding; -import com.casic.dcms.model.check.CaseCheckModel; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.view.check.CaseCheckedDetailActivity; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.check.CheckedDetailActivity; import com.casic.dcms.vm.CaseViewModel; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseFragment; import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.StringHub; @@ -24,14 +32,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class CaseCheckedFragment extends AndroidxBaseFragment { private static final String TAG = "CaseCheckedFragment"; private WeakReferenceHandler weakReferenceHandler; private CaseViewModel caseViewModel; - private CheckCaseListAdapter adapter; - private List dataBeans = new ArrayList<>(); + private NormalRecyclerAdapter adapter; + private List dataBeans = new ArrayList<>(); private int pageIndex = 1; private boolean isRefresh, isLoadMore = false; @@ -50,12 +59,37 @@ protected void initData() { weakReferenceHandler = new WeakReferenceHandler(callback); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.caseCheckModel.observe(this, new Observer() { + @Override + public void onChanged(CaseCheckModel resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(requireContext(), "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(202104252); + } + } + }); } @Override public void onResume() { - obtainCheckCaseList(); super.onResume(); + pageIndex = 1; + obtainCheckCaseList(); } private void obtainCheckCaseList() { @@ -81,32 +115,6 @@ obtainCheckCaseList(); } }); - - caseViewModel.caseCheckModel.observe(this, new Observer() { - - @Override - public void onChanged(CaseCheckModel resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(requireContext(), "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(202104252); - } - } - }); } private final Handler.Callback callback = new Handler.Callback() { @@ -127,16 +135,42 @@ }); } else { viewBinding.emptyView.hide(); - adapter = new CheckCaseListAdapter(requireContext(), dataBeans); - viewBinding.caseRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new CheckCaseListAdapter.OnItemClickListener() { + adapter = new NormalRecyclerAdapter(R.layout.item_case_rv_l, dataBeans) { @Override - public void onClick(int position) { - ContextHub.navigatePageTo( - requireContext(), - CaseCheckedDetailActivity.class, - dataBeans.get(position).getId() - ); + public void convertView(ViewHolder viewHolder, int position, CaseCheckModel.DataModel.RowsModel item) { + String fileIdProcess = item.getFileIdProcess(); + if (!TextUtils.isEmpty(fileIdProcess)) { + String[] split = fileIdProcess.split(","); + String firstImage = split[0]; + if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Drawable drawable = Glide.with(requireContext()).load(StringHelper.appendCompleteURL(firstImage)).submit().get(); + runOnUiThread(new Runnable() { + @Override + public void run() { + viewHolder.setImageResource(R.id.caseImageView, drawable); + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + } + } + viewHolder.setText(R.id.caseTitleView, StringHub.filterSpaceOrEnter(item.getDescription())) + .setText(R.id.casePlaceView, "发生地点:" + StringHub.filterSpaceOrEnter(item.getFieldintro())) + .setText(R.id.caseTimeView, "上报时间:" + item.getReportTime()); + } + }; + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, CaseCheckModel.DataModel.RowsModel rowsModel) { + ContextHub.navigatePageTo(requireContext(), CheckedDetailActivity.class, rowsModel.getId()); } }); } diff --git a/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java b/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java new file mode 100644 index 0000000..550a1fe --- /dev/null +++ b/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java @@ -0,0 +1,358 @@ +package com.casic.dcms.model; + +import java.util.List; + +/** + * 核查-已办/待办共用一个Model + */ +public class CaseCheckModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String isPostpone; + private String description; + private String source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private String caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String lng; + private String isOvertime; + private String currRoleName; + private String fileIdVerify; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String taskName; + private String sourceName; + private String fileIdProcess; + private String reportTime; + private String onedeptName; + + public String getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(String isPostpone) { + this.isPostpone = isPostpone; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getCaseState() { + return caseState; + } + + public void setCaseState(String caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getFileIdVerify() { + return fileIdVerify; + } + + public void setFileIdVerify(String fileIdVerify) { + this.fileIdVerify = fileIdVerify; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getTaskName() { + return taskName; + } + + public void setTaskName(String taskName) { + this.taskName = taskName; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getFileIdProcess() { + return fileIdProcess; + } + + public void setFileIdProcess(String fileIdProcess) { + this.fileIdProcess = fileIdProcess; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java b/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java deleted file mode 100644 index 854e2fe..0000000 --- a/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java +++ /dev/null @@ -1,358 +0,0 @@ -package com.casic.dcms.model.check; - -import java.util.List; - -/** - * 核查-已办/待办共用一个Bean - */ -public class CaseCheckModel { - - private int code; - private DataDTO data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataDTO getData() { - return data; - } - - public void setData(DataDTO data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataDTO { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsDTO { - private int isPostpone; - private String description; - private int source; - private String eorcName; - private String casetypeDetailName; - private String remainingTime; - private String casetypeName; - private String currUserId; - private String currUserName; - private String processId; - private int caseState; - private String id; - private String shopId; - private String fieldintro; - private String lat; - private String caseStateName; - private String lng; - private String isOvertime; - private String currRoleName; - private String fileIdVerify; - private String casetypeDetailCode; - private String onedeptid; - private String eorc; - private String currRoleId; - private String caseid; - private String casetypeCode; - private String nodeLimittime; - private String taskName; - private String sourceName; - private String fileIdProcess; - private String reportTime; - private String onedeptName; - - public int getIsPostpone() { - return isPostpone; - } - - public void setIsPostpone(int isPostpone) { - this.isPostpone = isPostpone; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public int getSource() { - return source; - } - - public void setSource(int source) { - this.source = source; - } - - public String getEorcName() { - return eorcName; - } - - public void setEorcName(String eorcName) { - this.eorcName = eorcName; - } - - public String getCasetypeDetailName() { - return casetypeDetailName; - } - - public void setCasetypeDetailName(String casetypeDetailName) { - this.casetypeDetailName = casetypeDetailName; - } - - public String getRemainingTime() { - return remainingTime; - } - - public void setRemainingTime(String remainingTime) { - this.remainingTime = remainingTime; - } - - public String getCasetypeName() { - return casetypeName; - } - - public void setCasetypeName(String casetypeName) { - this.casetypeName = casetypeName; - } - - public String getCurrUserId() { - return currUserId; - } - - public void setCurrUserId(String currUserId) { - this.currUserId = currUserId; - } - - public String getCurrUserName() { - return currUserName; - } - - public void setCurrUserName(String currUserName) { - this.currUserName = currUserName; - } - - public String getProcessId() { - return processId; - } - - public void setProcessId(String processId) { - this.processId = processId; - } - - public int getCaseState() { - return caseState; - } - - public void setCaseState(int caseState) { - this.caseState = caseState; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getShopId() { - return shopId; - } - - public void setShopId(String shopId) { - this.shopId = shopId; - } - - public String getFieldintro() { - return fieldintro; - } - - public void setFieldintro(String fieldintro) { - this.fieldintro = fieldintro; - } - - public String getLat() { - return lat; - } - - public void setLat(String lat) { - this.lat = lat; - } - - public String getCaseStateName() { - return caseStateName; - } - - public void setCaseStateName(String caseStateName) { - this.caseStateName = caseStateName; - } - - public String getLng() { - return lng; - } - - public void setLng(String lng) { - this.lng = lng; - } - - public String getIsOvertime() { - return isOvertime; - } - - public void setIsOvertime(String isOvertime) { - this.isOvertime = isOvertime; - } - - public String getCurrRoleName() { - return currRoleName; - } - - public void setCurrRoleName(String currRoleName) { - this.currRoleName = currRoleName; - } - - public String getFileIdVerify() { - return fileIdVerify; - } - - public void setFileIdVerify(String fileIdVerify) { - this.fileIdVerify = fileIdVerify; - } - - public String getCasetypeDetailCode() { - return casetypeDetailCode; - } - - public void setCasetypeDetailCode(String casetypeDetailCode) { - this.casetypeDetailCode = casetypeDetailCode; - } - - public String getOnedeptid() { - return onedeptid; - } - - public void setOnedeptid(String onedeptid) { - this.onedeptid = onedeptid; - } - - public String getEorc() { - return eorc; - } - - public void setEorc(String eorc) { - this.eorc = eorc; - } - - public String getCurrRoleId() { - return currRoleId; - } - - public void setCurrRoleId(String currRoleId) { - this.currRoleId = currRoleId; - } - - public String getCaseid() { - return caseid; - } - - public void setCaseid(String caseid) { - this.caseid = caseid; - } - - public String getCasetypeCode() { - return casetypeCode; - } - - public void setCasetypeCode(String casetypeCode) { - this.casetypeCode = casetypeCode; - } - - public String getNodeLimittime() { - return nodeLimittime; - } - - public void setNodeLimittime(String nodeLimittime) { - this.nodeLimittime = nodeLimittime; - } - - public String getTaskName() { - return taskName; - } - - public void setTaskName(String taskName) { - this.taskName = taskName; - } - - public String getSourceName() { - return sourceName; - } - - public void setSourceName(String sourceName) { - this.sourceName = sourceName; - } - - public String getFileIdProcess() { - return fileIdProcess; - } - - public void setFileIdProcess(String fileIdProcess) { - this.fileIdProcess = fileIdProcess; - } - - public String getReportTime() { - return reportTime; - } - - public void setReportTime(String reportTime) { - this.reportTime = reportTime; - } - - public String getOnedeptName() { - return onedeptName; - } - - public void setOnedeptName(String onedeptName) { - this.onedeptName = onedeptName; - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java b/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java index cd3e026..d0888bc 100644 --- a/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java @@ -14,10 +14,10 @@ import com.casic.dcms.R; public class NotificationHelper { - private Context mContext; + private final Context mContext; @SuppressLint("StaticFieldLeak") - private static NotificationHelper notificationHelper; - private NotificationManager notificationManager; + private static volatile NotificationHelper notificationHelper; + private final NotificationManager notificationManager; private NotificationHelper(Context context) { this.mContext = context; @@ -45,10 +45,8 @@ //创建渠道 String id = name + "_DefaultChannel"; NotificationChannel mChannel = new NotificationChannel(id, name, NotificationManager.IMPORTANCE_HIGH); -// mChannel.setSound(Uri.parse(""), Notification.AUDIO_ATTRIBUTES_DEFAULT); mChannel.setShowBadge(true); - mChannel.enableVibration(true); - mChannel.setVibrationPattern(new long[]{100, 200, 300}); + mChannel.enableVibration(false); mChannel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);//设置锁屏可见 notificationManager.createNotificationChannel(mChannel); builder = new Notification.Builder(mContext, id); diff --git a/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java index d7bf511..691dfd5 100644 --- a/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java +++ b/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java @@ -4,20 +4,22 @@ import android.graphics.Color; import android.view.View; -import androidx.core.content.ContextCompat; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; import com.casic.dcms.R; import com.casic.dcms.databinding.ActivityCaseProcessBinding; import com.casic.dcms.model.CaseProcessBean; +import com.casic.dcms.utils.DialogHelper; import com.casic.dcms.vm.CommonDataViewModel; import com.gyf.immersionbar.ImmersionBar; import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.IntHub; import com.pengxh.androidx.lite.utils.Constant; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.vm.LoadState; import java.util.ArrayList; import java.util.List; @@ -30,8 +32,8 @@ @Override protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); viewBinding.titleBarLayout.titleView.setText("处理记录"); viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); @@ -39,7 +41,16 @@ @Override protected void observeRequestState() { - + commonDataViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override @@ -47,10 +58,6 @@ String processId = getIntent().getStringExtra(Constant.INTENT_PARAM); commonDataViewModel = new ViewModelProvider(this).get(CommonDataViewModel.class); commonDataViewModel.obtainCaseProcess(processId); - } - - @Override - protected void initEvent() { commonDataViewModel.caseProcessModel.observe(this, new Observer() { @Override public void onChanged(CaseProcessBean resultBean) { @@ -91,4 +98,9 @@ } }); } + + @Override + protected void initEvent() { + + } } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b6a8d08..c78d07c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -64,8 +64,8 @@ - - + + diff --git a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java deleted file mode 100644 index 254f0cd..0000000 --- a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.casic.dcms.adapter; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.text.TextUtils; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.model.check.CaseCheckModel; -import com.casic.dcms.utils.StringHelper; -import com.pengxh.androidx.lite.hub.StringHub; -import com.qmuiteam.qmui.widget.QMUIRadiusImageView; - -import java.util.List; - -public class CheckCaseListAdapter extends RecyclerView.Adapter { - - private final Context context; - private final List dataBeans; - private final LayoutInflater layoutInflater; - - public CheckCaseListAdapter(Context context, List dataRows) { - this.context = context; - this.dataBeans = dataRows; - this.layoutInflater = LayoutInflater.from(context); - } - - @NonNull - @Override - public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - return new ItemViewHolder(layoutInflater.inflate(R.layout.item_case_rv_l, parent, false)); - } - - @Override - public void onBindViewHolder(@NonNull ItemViewHolder holder, @SuppressLint("RecyclerView") int position) { - holder.bindView(dataBeans.get(position)); - if (clickListener != null) { - holder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - clickListener.onClick(position); - } - }); - } - } - - @Override - public int getItemCount() { - return dataBeans.size(); - } - - class ItemViewHolder extends RecyclerView.ViewHolder { - - private final QMUIRadiusImageView caseImageView; - private final TextView caseTitleView; - private final TextView casePlaceView; - private final TextView caseTimeView; - - ItemViewHolder(@NonNull View itemView) { - super(itemView); - caseImageView = itemView.findViewById(R.id.caseImageView); - caseTitleView = itemView.findViewById(R.id.caseTitleView); - casePlaceView = itemView.findViewById(R.id.casePlaceView); - caseTimeView = itemView.findViewById(R.id.caseTimeView); - } - - void bindView(CaseCheckModel.DataDTO.RowsDTO rowsBean) { - //处理图片 - String fileIdProcess = rowsBean.getFileIdProcess(); - if (!TextUtils.isEmpty(fileIdProcess)) { - String[] split = fileIdProcess.split(","); - String firstImage = split[0]; - if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { - Glide.with(context).load(StringHelper.appendCompleteURL(firstImage)).into(caseImageView); - } - } - caseTitleView.setText(StringHub.filterSpaceOrEnter(rowsBean.getDescription())); - casePlaceView.setText("发生地点:" + StringHub.filterSpaceOrEnter(rowsBean.getFieldintro())); - caseTimeView.setText("上报时间:" + rowsBean.getReportTime()); - } - } - - private OnItemClickListener clickListener; - - public interface OnItemClickListener { - void onClick(int position); - } - - public void setOnItemClickListener(OnItemClickListener onItemClickListener) { - this.clickListener = onItemClickListener; - } -} diff --git a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java index 85cebc6..667981d 100644 --- a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java @@ -1,19 +1,27 @@ package com.casic.dcms.fragment.check; +import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; + +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.casic.dcms.adapter.CheckCaseListAdapter; +import com.bumptech.glide.Glide; +import com.casic.dcms.R; import com.casic.dcms.databinding.FragmentCheckCaseBinding; -import com.casic.dcms.model.check.CaseCheckModel; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.view.check.CaseCheckDetailActivity; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.check.CheckDetailActivity; import com.casic.dcms.vm.CaseViewModel; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseFragment; import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.StringHub; @@ -24,14 +32,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class CaseCheckFragment extends AndroidxBaseFragment { private static final String TAG = "CaseCheckFragment"; private WeakReferenceHandler weakReferenceHandler; private CaseViewModel caseViewModel; - private CheckCaseListAdapter adapter; - private List dataBeans = new ArrayList<>(); + private NormalRecyclerAdapter adapter; + private List dataBeans = new ArrayList<>(); private int pageIndex = 1; private boolean isRefresh, isLoadMore = false; @@ -49,12 +58,37 @@ protected void initData() { weakReferenceHandler = new WeakReferenceHandler(callback); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.caseCheckModel.observe(this, new Observer() { + @Override + public void onChanged(CaseCheckModel resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(requireContext(), "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(202104251); + } + } + }); } @Override public void onResume() { - obtainCheckCaseList(); super.onResume(); + pageIndex = 1; + obtainCheckCaseList(); } private void obtainCheckCaseList() { @@ -80,31 +114,6 @@ obtainCheckCaseList(); } }); - - caseViewModel.caseCheckModel.observe(this, new Observer() { - @Override - public void onChanged(CaseCheckModel resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(requireContext(), "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(202104251); - } - } - }); } private final Handler.Callback callback = new Handler.Callback() { @@ -125,16 +134,42 @@ }); } else { viewBinding.emptyView.hide(); - adapter = new CheckCaseListAdapter(requireContext(), dataBeans); - viewBinding.caseRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new CheckCaseListAdapter.OnItemClickListener() { + adapter = new NormalRecyclerAdapter(R.layout.item_case_rv_l, dataBeans) { @Override - public void onClick(int position) { - ContextHub.navigatePageTo( - requireContext(), - CaseCheckDetailActivity.class, - dataBeans.get(position).getId() - ); + public void convertView(ViewHolder viewHolder, int position, CaseCheckModel.DataModel.RowsModel item) { + String fileIdProcess = item.getFileIdProcess(); + if (!TextUtils.isEmpty(fileIdProcess)) { + String[] split = fileIdProcess.split(","); + String firstImage = split[0]; + if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Drawable drawable = Glide.with(requireContext()).load(StringHelper.appendCompleteURL(firstImage)).submit().get(); + runOnUiThread(new Runnable() { + @Override + public void run() { + viewHolder.setImageResource(R.id.caseImageView, drawable); + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + } + } + viewHolder.setText(R.id.caseTitleView, StringHub.filterSpaceOrEnter(item.getDescription())) + .setText(R.id.casePlaceView, "发生地点:" + StringHub.filterSpaceOrEnter(item.getFieldintro())) + .setText(R.id.caseTimeView, "上报时间:" + item.getReportTime()); + } + }; + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, CaseCheckModel.DataModel.RowsModel rowsModel) { + ContextHub.navigatePageTo(requireContext(), CheckDetailActivity.class, rowsModel.getId()); } }); } diff --git a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java index 3e2d904..6775b65 100644 --- a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java @@ -1,19 +1,27 @@ package com.casic.dcms.fragment.check; +import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; + +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.casic.dcms.adapter.CheckCaseListAdapter; +import com.bumptech.glide.Glide; +import com.casic.dcms.R; import com.casic.dcms.databinding.FragmentCheckCaseBinding; -import com.casic.dcms.model.check.CaseCheckModel; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.view.check.CaseCheckedDetailActivity; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.check.CheckedDetailActivity; import com.casic.dcms.vm.CaseViewModel; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseFragment; import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.StringHub; @@ -24,14 +32,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class CaseCheckedFragment extends AndroidxBaseFragment { private static final String TAG = "CaseCheckedFragment"; private WeakReferenceHandler weakReferenceHandler; private CaseViewModel caseViewModel; - private CheckCaseListAdapter adapter; - private List dataBeans = new ArrayList<>(); + private NormalRecyclerAdapter adapter; + private List dataBeans = new ArrayList<>(); private int pageIndex = 1; private boolean isRefresh, isLoadMore = false; @@ -50,12 +59,37 @@ protected void initData() { weakReferenceHandler = new WeakReferenceHandler(callback); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.caseCheckModel.observe(this, new Observer() { + @Override + public void onChanged(CaseCheckModel resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(requireContext(), "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(202104252); + } + } + }); } @Override public void onResume() { - obtainCheckCaseList(); super.onResume(); + pageIndex = 1; + obtainCheckCaseList(); } private void obtainCheckCaseList() { @@ -81,32 +115,6 @@ obtainCheckCaseList(); } }); - - caseViewModel.caseCheckModel.observe(this, new Observer() { - - @Override - public void onChanged(CaseCheckModel resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(requireContext(), "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(202104252); - } - } - }); } private final Handler.Callback callback = new Handler.Callback() { @@ -127,16 +135,42 @@ }); } else { viewBinding.emptyView.hide(); - adapter = new CheckCaseListAdapter(requireContext(), dataBeans); - viewBinding.caseRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new CheckCaseListAdapter.OnItemClickListener() { + adapter = new NormalRecyclerAdapter(R.layout.item_case_rv_l, dataBeans) { @Override - public void onClick(int position) { - ContextHub.navigatePageTo( - requireContext(), - CaseCheckedDetailActivity.class, - dataBeans.get(position).getId() - ); + public void convertView(ViewHolder viewHolder, int position, CaseCheckModel.DataModel.RowsModel item) { + String fileIdProcess = item.getFileIdProcess(); + if (!TextUtils.isEmpty(fileIdProcess)) { + String[] split = fileIdProcess.split(","); + String firstImage = split[0]; + if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Drawable drawable = Glide.with(requireContext()).load(StringHelper.appendCompleteURL(firstImage)).submit().get(); + runOnUiThread(new Runnable() { + @Override + public void run() { + viewHolder.setImageResource(R.id.caseImageView, drawable); + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + } + } + viewHolder.setText(R.id.caseTitleView, StringHub.filterSpaceOrEnter(item.getDescription())) + .setText(R.id.casePlaceView, "发生地点:" + StringHub.filterSpaceOrEnter(item.getFieldintro())) + .setText(R.id.caseTimeView, "上报时间:" + item.getReportTime()); + } + }; + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, CaseCheckModel.DataModel.RowsModel rowsModel) { + ContextHub.navigatePageTo(requireContext(), CheckedDetailActivity.class, rowsModel.getId()); } }); } diff --git a/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java b/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java new file mode 100644 index 0000000..550a1fe --- /dev/null +++ b/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java @@ -0,0 +1,358 @@ +package com.casic.dcms.model; + +import java.util.List; + +/** + * 核查-已办/待办共用一个Model + */ +public class CaseCheckModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String isPostpone; + private String description; + private String source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private String caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String lng; + private String isOvertime; + private String currRoleName; + private String fileIdVerify; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String taskName; + private String sourceName; + private String fileIdProcess; + private String reportTime; + private String onedeptName; + + public String getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(String isPostpone) { + this.isPostpone = isPostpone; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getCaseState() { + return caseState; + } + + public void setCaseState(String caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getFileIdVerify() { + return fileIdVerify; + } + + public void setFileIdVerify(String fileIdVerify) { + this.fileIdVerify = fileIdVerify; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getTaskName() { + return taskName; + } + + public void setTaskName(String taskName) { + this.taskName = taskName; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getFileIdProcess() { + return fileIdProcess; + } + + public void setFileIdProcess(String fileIdProcess) { + this.fileIdProcess = fileIdProcess; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java b/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java deleted file mode 100644 index 854e2fe..0000000 --- a/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java +++ /dev/null @@ -1,358 +0,0 @@ -package com.casic.dcms.model.check; - -import java.util.List; - -/** - * 核查-已办/待办共用一个Bean - */ -public class CaseCheckModel { - - private int code; - private DataDTO data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataDTO getData() { - return data; - } - - public void setData(DataDTO data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataDTO { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsDTO { - private int isPostpone; - private String description; - private int source; - private String eorcName; - private String casetypeDetailName; - private String remainingTime; - private String casetypeName; - private String currUserId; - private String currUserName; - private String processId; - private int caseState; - private String id; - private String shopId; - private String fieldintro; - private String lat; - private String caseStateName; - private String lng; - private String isOvertime; - private String currRoleName; - private String fileIdVerify; - private String casetypeDetailCode; - private String onedeptid; - private String eorc; - private String currRoleId; - private String caseid; - private String casetypeCode; - private String nodeLimittime; - private String taskName; - private String sourceName; - private String fileIdProcess; - private String reportTime; - private String onedeptName; - - public int getIsPostpone() { - return isPostpone; - } - - public void setIsPostpone(int isPostpone) { - this.isPostpone = isPostpone; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public int getSource() { - return source; - } - - public void setSource(int source) { - this.source = source; - } - - public String getEorcName() { - return eorcName; - } - - public void setEorcName(String eorcName) { - this.eorcName = eorcName; - } - - public String getCasetypeDetailName() { - return casetypeDetailName; - } - - public void setCasetypeDetailName(String casetypeDetailName) { - this.casetypeDetailName = casetypeDetailName; - } - - public String getRemainingTime() { - return remainingTime; - } - - public void setRemainingTime(String remainingTime) { - this.remainingTime = remainingTime; - } - - public String getCasetypeName() { - return casetypeName; - } - - public void setCasetypeName(String casetypeName) { - this.casetypeName = casetypeName; - } - - public String getCurrUserId() { - return currUserId; - } - - public void setCurrUserId(String currUserId) { - this.currUserId = currUserId; - } - - public String getCurrUserName() { - return currUserName; - } - - public void setCurrUserName(String currUserName) { - this.currUserName = currUserName; - } - - public String getProcessId() { - return processId; - } - - public void setProcessId(String processId) { - this.processId = processId; - } - - public int getCaseState() { - return caseState; - } - - public void setCaseState(int caseState) { - this.caseState = caseState; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getShopId() { - return shopId; - } - - public void setShopId(String shopId) { - this.shopId = shopId; - } - - public String getFieldintro() { - return fieldintro; - } - - public void setFieldintro(String fieldintro) { - this.fieldintro = fieldintro; - } - - public String getLat() { - return lat; - } - - public void setLat(String lat) { - this.lat = lat; - } - - public String getCaseStateName() { - return caseStateName; - } - - public void setCaseStateName(String caseStateName) { - this.caseStateName = caseStateName; - } - - public String getLng() { - return lng; - } - - public void setLng(String lng) { - this.lng = lng; - } - - public String getIsOvertime() { - return isOvertime; - } - - public void setIsOvertime(String isOvertime) { - this.isOvertime = isOvertime; - } - - public String getCurrRoleName() { - return currRoleName; - } - - public void setCurrRoleName(String currRoleName) { - this.currRoleName = currRoleName; - } - - public String getFileIdVerify() { - return fileIdVerify; - } - - public void setFileIdVerify(String fileIdVerify) { - this.fileIdVerify = fileIdVerify; - } - - public String getCasetypeDetailCode() { - return casetypeDetailCode; - } - - public void setCasetypeDetailCode(String casetypeDetailCode) { - this.casetypeDetailCode = casetypeDetailCode; - } - - public String getOnedeptid() { - return onedeptid; - } - - public void setOnedeptid(String onedeptid) { - this.onedeptid = onedeptid; - } - - public String getEorc() { - return eorc; - } - - public void setEorc(String eorc) { - this.eorc = eorc; - } - - public String getCurrRoleId() { - return currRoleId; - } - - public void setCurrRoleId(String currRoleId) { - this.currRoleId = currRoleId; - } - - public String getCaseid() { - return caseid; - } - - public void setCaseid(String caseid) { - this.caseid = caseid; - } - - public String getCasetypeCode() { - return casetypeCode; - } - - public void setCasetypeCode(String casetypeCode) { - this.casetypeCode = casetypeCode; - } - - public String getNodeLimittime() { - return nodeLimittime; - } - - public void setNodeLimittime(String nodeLimittime) { - this.nodeLimittime = nodeLimittime; - } - - public String getTaskName() { - return taskName; - } - - public void setTaskName(String taskName) { - this.taskName = taskName; - } - - public String getSourceName() { - return sourceName; - } - - public void setSourceName(String sourceName) { - this.sourceName = sourceName; - } - - public String getFileIdProcess() { - return fileIdProcess; - } - - public void setFileIdProcess(String fileIdProcess) { - this.fileIdProcess = fileIdProcess; - } - - public String getReportTime() { - return reportTime; - } - - public void setReportTime(String reportTime) { - this.reportTime = reportTime; - } - - public String getOnedeptName() { - return onedeptName; - } - - public void setOnedeptName(String onedeptName) { - this.onedeptName = onedeptName; - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java b/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java index cd3e026..d0888bc 100644 --- a/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java @@ -14,10 +14,10 @@ import com.casic.dcms.R; public class NotificationHelper { - private Context mContext; + private final Context mContext; @SuppressLint("StaticFieldLeak") - private static NotificationHelper notificationHelper; - private NotificationManager notificationManager; + private static volatile NotificationHelper notificationHelper; + private final NotificationManager notificationManager; private NotificationHelper(Context context) { this.mContext = context; @@ -45,10 +45,8 @@ //创建渠道 String id = name + "_DefaultChannel"; NotificationChannel mChannel = new NotificationChannel(id, name, NotificationManager.IMPORTANCE_HIGH); -// mChannel.setSound(Uri.parse(""), Notification.AUDIO_ATTRIBUTES_DEFAULT); mChannel.setShowBadge(true); - mChannel.enableVibration(true); - mChannel.setVibrationPattern(new long[]{100, 200, 300}); + mChannel.enableVibration(false); mChannel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);//设置锁屏可见 notificationManager.createNotificationChannel(mChannel); builder = new Notification.Builder(mContext, id); diff --git a/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java index d7bf511..691dfd5 100644 --- a/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java +++ b/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java @@ -4,20 +4,22 @@ import android.graphics.Color; import android.view.View; -import androidx.core.content.ContextCompat; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; import com.casic.dcms.R; import com.casic.dcms.databinding.ActivityCaseProcessBinding; import com.casic.dcms.model.CaseProcessBean; +import com.casic.dcms.utils.DialogHelper; import com.casic.dcms.vm.CommonDataViewModel; import com.gyf.immersionbar.ImmersionBar; import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.IntHub; import com.pengxh.androidx.lite.utils.Constant; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.vm.LoadState; import java.util.ArrayList; import java.util.List; @@ -30,8 +32,8 @@ @Override protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); viewBinding.titleBarLayout.titleView.setText("处理记录"); viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); @@ -39,7 +41,16 @@ @Override protected void observeRequestState() { - + commonDataViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override @@ -47,10 +58,6 @@ String processId = getIntent().getStringExtra(Constant.INTENT_PARAM); commonDataViewModel = new ViewModelProvider(this).get(CommonDataViewModel.class); commonDataViewModel.obtainCaseProcess(processId); - } - - @Override - protected void initEvent() { commonDataViewModel.caseProcessModel.observe(this, new Observer() { @Override public void onChanged(CaseProcessBean resultBean) { @@ -91,4 +98,9 @@ } }); } + + @Override + protected void initEvent() { + + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java deleted file mode 100644 index 30585d5..0000000 --- a/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java +++ /dev/null @@ -1,353 +0,0 @@ -package com.casic.dcms.view.check; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; - -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.databinding.ActivityCaseCheckDetailBinding; -import com.casic.dcms.model.ActionResultBean; -import com.casic.dcms.model.CaseDetailBean; -import com.casic.dcms.model.CaseNextNodeBean; -import com.casic.dcms.utils.DialogHelper; -import com.casic.dcms.utils.MapHelper; -import com.casic.dcms.utils.PictureSelectorHelper; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.callback.ISelectorListener; -import com.casic.dcms.view.BigImageActivity; -import com.casic.dcms.vm.CaseOperateViewModel; -import com.casic.dcms.vm.CaseViewModel; -import com.casic.dcms.vm.NodeViewModel; -import com.casic.dcms.vm.UploadViewModel; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.entity.LocalMedia; -import com.pengxh.androidx.lite.adapter.EditableImageAdapter; -import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.hub.ContextHub; -import com.pengxh.androidx.lite.hub.StringHub; -import com.pengxh.androidx.lite.utils.Constant; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; -import com.pengxh.androidx.lite.vm.LoadState; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import cn.jzvd.Jzvd; - -public class CaseCheckDetailActivity extends AndroidxBaseActivity { - - private final Context context = CaseCheckDetailActivity.this; - private final ArrayList realPaths = new ArrayList<>(); //真实图片路径 - private final ArrayList imageList = new ArrayList<>(); //上传到服务器的数据集 - private CaseViewModel caseViewModel; - private UploadViewModel uploadViewModel; - private NodeViewModel nodeViewModel; - private CaseOperateViewModel operateViewModel; - private String id; - private String changeState; - private EditableImageAdapter checkImageAdapter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - - viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - } - - @Override - protected void observeRequestState() { - - } - - @Override - protected void initData() { - id = getIntent().getStringExtra(Constant.INTENT_PARAM); - caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); - caseViewModel.obtainCaseDetail(id); - - uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); - nodeViewModel = new ViewModelProvider(this).get(NodeViewModel.class); - operateViewModel = new ViewModelProvider(this).get(CaseOperateViewModel.class); - - checkImageAdapter = new EditableImageAdapter(this, 3, 13); - viewBinding.addImageRecyclerView.setAdapter(checkImageAdapter); - } - - @Override - protected void initEvent() { - caseViewModel.caseDetailModel.observe(this, new Observer() { - @Override - public void onChanged(CaseDetailBean resultBean) { - if (resultBean.getCode() == 200) { - data = resultBean.getData().get(0); - viewBinding.caseNumberView.setText(data.getCaseid()); - viewBinding.caseTypeView.setText(data.getEorcName()); - viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); - viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); - viewBinding.caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); - viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); - viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); - viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - viewBinding.caseStartTimeView.setText(data.getCreateTime()); - viewBinding.caseEndTimeView.setText(data.getNodeLimittime()); - /** - * 图片 - */ - //核实照片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.imageGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - viewBinding.audioPlayerView.setVisibility(View.VISIBLE); - viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - viewBinding.videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - viewBinding.videoPlayerView.setUp( - videoUrl, - StringHub.filterSpaceOrEnter(data.getDescription()), - Jzvd.SCREEN_NORMAL - ); - //设置第一帧为封面 - Glide.with(context) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(viewBinding.videoPlayerView.posterImageView); - } - - //处理照片 - String processImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(processImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = processImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - viewBinding.caseHandleResultView.setText(data.getProcessRemarks().equals("") ? "无处理意见" : data.getProcessRemarks()); - //TODO 服务器返回数据缺少此字段,暂时注掉 -// viewBinding.caseHandleTimeView.setText(); - } - } - }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "获取数据中..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); - } - }); - - //图片九宫格事件处理 - checkImageAdapter.setOnItemClickListener(new EditableImageAdapter.OnItemClickListener() { - @Override - public void onAddImageClick() { - PictureSelectorHelper.selectPicture(context, new ISelectorListener() { - @Override - public void onSuccess(ArrayList result) { - if (result.size() == 1) { - uploadViewModel.uploadImage(new File(result.get(0).getRealPath())); - } else { - for (LocalMedia localMedia : result) { - uploadViewModel.uploadImage(new File(localMedia.getRealPath())); - } - } - } - }); - } - - @Override - public void onItemClick(int position) { - if (realPaths.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, realPaths); - } - } - - @Override - public void onItemLongClick(View view, int position) { - imageList.remove(position); - checkImageAdapter.deleteImage(position); - } - }); - uploadViewModel.imageModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - if (checkImageAdapter.getItemCount() <= 3) { - String url = resultBean.getData(); - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - checkImageAdapter.setupImage(realPaths); - } else { - StringHub.show(context, "最多只能上传3张图片"); - } - } - } - }); - uploadViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.caseCheckLayout.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - nodeViewModel.obtainNextNode(String.valueOf(data.getCaseState())); - } - }); - nodeViewModel.nodeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseNextNodeBean resultBean) { - if (resultBean.getCode() == 200) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(context); - sheetBuilder.setTitle("核实情况"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - viewBinding.caseCheckOptView.setText(dataBean.getNextOperation()); - changeState = String.valueOf(dataBean.getNextState()); - } - }).build().show(); - } else { - StringHub.show(context, "该案卷无下级流转节点"); - } - } - }); - - viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - //案卷提交 - String remarks = viewBinding.caseCheckOptView.getText().toString(); - if (TextUtils.isEmpty(remarks)) { - StringHub.show(context, "核查意见不能为空"); - return; - } - if (TextUtils.isEmpty(changeState)) { - StringHub.show(context, "核查情况还未选择"); - return; - } - operateViewModel.checkCase(data.getProcessId(), id, - String.valueOf(data.getCaseState()), changeState, remarks, - StringHelper.reformatURL(imageList) - ); - } - }); - operateViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "案卷核查中,请稍后..."); - } else if (loadState == LoadState.Success) { - DialogHelper.dismissLoadingDialog(); - finish(); - } else { - StringHub.show(context, "核查失败,请重试"); - DialogHelper.dismissLoadingDialog(); - } - } - }); - } - - @Override - public void onDestroy() { - viewBinding.audioPlayerView.release(); - super.onDestroy(); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - public void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b6a8d08..c78d07c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -64,8 +64,8 @@ - - + + diff --git a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java deleted file mode 100644 index 254f0cd..0000000 --- a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.casic.dcms.adapter; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.text.TextUtils; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.model.check.CaseCheckModel; -import com.casic.dcms.utils.StringHelper; -import com.pengxh.androidx.lite.hub.StringHub; -import com.qmuiteam.qmui.widget.QMUIRadiusImageView; - -import java.util.List; - -public class CheckCaseListAdapter extends RecyclerView.Adapter { - - private final Context context; - private final List dataBeans; - private final LayoutInflater layoutInflater; - - public CheckCaseListAdapter(Context context, List dataRows) { - this.context = context; - this.dataBeans = dataRows; - this.layoutInflater = LayoutInflater.from(context); - } - - @NonNull - @Override - public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - return new ItemViewHolder(layoutInflater.inflate(R.layout.item_case_rv_l, parent, false)); - } - - @Override - public void onBindViewHolder(@NonNull ItemViewHolder holder, @SuppressLint("RecyclerView") int position) { - holder.bindView(dataBeans.get(position)); - if (clickListener != null) { - holder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - clickListener.onClick(position); - } - }); - } - } - - @Override - public int getItemCount() { - return dataBeans.size(); - } - - class ItemViewHolder extends RecyclerView.ViewHolder { - - private final QMUIRadiusImageView caseImageView; - private final TextView caseTitleView; - private final TextView casePlaceView; - private final TextView caseTimeView; - - ItemViewHolder(@NonNull View itemView) { - super(itemView); - caseImageView = itemView.findViewById(R.id.caseImageView); - caseTitleView = itemView.findViewById(R.id.caseTitleView); - casePlaceView = itemView.findViewById(R.id.casePlaceView); - caseTimeView = itemView.findViewById(R.id.caseTimeView); - } - - void bindView(CaseCheckModel.DataDTO.RowsDTO rowsBean) { - //处理图片 - String fileIdProcess = rowsBean.getFileIdProcess(); - if (!TextUtils.isEmpty(fileIdProcess)) { - String[] split = fileIdProcess.split(","); - String firstImage = split[0]; - if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { - Glide.with(context).load(StringHelper.appendCompleteURL(firstImage)).into(caseImageView); - } - } - caseTitleView.setText(StringHub.filterSpaceOrEnter(rowsBean.getDescription())); - casePlaceView.setText("发生地点:" + StringHub.filterSpaceOrEnter(rowsBean.getFieldintro())); - caseTimeView.setText("上报时间:" + rowsBean.getReportTime()); - } - } - - private OnItemClickListener clickListener; - - public interface OnItemClickListener { - void onClick(int position); - } - - public void setOnItemClickListener(OnItemClickListener onItemClickListener) { - this.clickListener = onItemClickListener; - } -} diff --git a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java index 85cebc6..667981d 100644 --- a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java @@ -1,19 +1,27 @@ package com.casic.dcms.fragment.check; +import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; + +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.casic.dcms.adapter.CheckCaseListAdapter; +import com.bumptech.glide.Glide; +import com.casic.dcms.R; import com.casic.dcms.databinding.FragmentCheckCaseBinding; -import com.casic.dcms.model.check.CaseCheckModel; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.view.check.CaseCheckDetailActivity; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.check.CheckDetailActivity; import com.casic.dcms.vm.CaseViewModel; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseFragment; import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.StringHub; @@ -24,14 +32,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class CaseCheckFragment extends AndroidxBaseFragment { private static final String TAG = "CaseCheckFragment"; private WeakReferenceHandler weakReferenceHandler; private CaseViewModel caseViewModel; - private CheckCaseListAdapter adapter; - private List dataBeans = new ArrayList<>(); + private NormalRecyclerAdapter adapter; + private List dataBeans = new ArrayList<>(); private int pageIndex = 1; private boolean isRefresh, isLoadMore = false; @@ -49,12 +58,37 @@ protected void initData() { weakReferenceHandler = new WeakReferenceHandler(callback); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.caseCheckModel.observe(this, new Observer() { + @Override + public void onChanged(CaseCheckModel resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(requireContext(), "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(202104251); + } + } + }); } @Override public void onResume() { - obtainCheckCaseList(); super.onResume(); + pageIndex = 1; + obtainCheckCaseList(); } private void obtainCheckCaseList() { @@ -80,31 +114,6 @@ obtainCheckCaseList(); } }); - - caseViewModel.caseCheckModel.observe(this, new Observer() { - @Override - public void onChanged(CaseCheckModel resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(requireContext(), "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(202104251); - } - } - }); } private final Handler.Callback callback = new Handler.Callback() { @@ -125,16 +134,42 @@ }); } else { viewBinding.emptyView.hide(); - adapter = new CheckCaseListAdapter(requireContext(), dataBeans); - viewBinding.caseRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new CheckCaseListAdapter.OnItemClickListener() { + adapter = new NormalRecyclerAdapter(R.layout.item_case_rv_l, dataBeans) { @Override - public void onClick(int position) { - ContextHub.navigatePageTo( - requireContext(), - CaseCheckDetailActivity.class, - dataBeans.get(position).getId() - ); + public void convertView(ViewHolder viewHolder, int position, CaseCheckModel.DataModel.RowsModel item) { + String fileIdProcess = item.getFileIdProcess(); + if (!TextUtils.isEmpty(fileIdProcess)) { + String[] split = fileIdProcess.split(","); + String firstImage = split[0]; + if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Drawable drawable = Glide.with(requireContext()).load(StringHelper.appendCompleteURL(firstImage)).submit().get(); + runOnUiThread(new Runnable() { + @Override + public void run() { + viewHolder.setImageResource(R.id.caseImageView, drawable); + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + } + } + viewHolder.setText(R.id.caseTitleView, StringHub.filterSpaceOrEnter(item.getDescription())) + .setText(R.id.casePlaceView, "发生地点:" + StringHub.filterSpaceOrEnter(item.getFieldintro())) + .setText(R.id.caseTimeView, "上报时间:" + item.getReportTime()); + } + }; + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, CaseCheckModel.DataModel.RowsModel rowsModel) { + ContextHub.navigatePageTo(requireContext(), CheckDetailActivity.class, rowsModel.getId()); } }); } diff --git a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java index 3e2d904..6775b65 100644 --- a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java @@ -1,19 +1,27 @@ package com.casic.dcms.fragment.check; +import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; + +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.casic.dcms.adapter.CheckCaseListAdapter; +import com.bumptech.glide.Glide; +import com.casic.dcms.R; import com.casic.dcms.databinding.FragmentCheckCaseBinding; -import com.casic.dcms.model.check.CaseCheckModel; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.view.check.CaseCheckedDetailActivity; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.check.CheckedDetailActivity; import com.casic.dcms.vm.CaseViewModel; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseFragment; import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.StringHub; @@ -24,14 +32,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class CaseCheckedFragment extends AndroidxBaseFragment { private static final String TAG = "CaseCheckedFragment"; private WeakReferenceHandler weakReferenceHandler; private CaseViewModel caseViewModel; - private CheckCaseListAdapter adapter; - private List dataBeans = new ArrayList<>(); + private NormalRecyclerAdapter adapter; + private List dataBeans = new ArrayList<>(); private int pageIndex = 1; private boolean isRefresh, isLoadMore = false; @@ -50,12 +59,37 @@ protected void initData() { weakReferenceHandler = new WeakReferenceHandler(callback); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.caseCheckModel.observe(this, new Observer() { + @Override + public void onChanged(CaseCheckModel resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(requireContext(), "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(202104252); + } + } + }); } @Override public void onResume() { - obtainCheckCaseList(); super.onResume(); + pageIndex = 1; + obtainCheckCaseList(); } private void obtainCheckCaseList() { @@ -81,32 +115,6 @@ obtainCheckCaseList(); } }); - - caseViewModel.caseCheckModel.observe(this, new Observer() { - - @Override - public void onChanged(CaseCheckModel resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(requireContext(), "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(202104252); - } - } - }); } private final Handler.Callback callback = new Handler.Callback() { @@ -127,16 +135,42 @@ }); } else { viewBinding.emptyView.hide(); - adapter = new CheckCaseListAdapter(requireContext(), dataBeans); - viewBinding.caseRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new CheckCaseListAdapter.OnItemClickListener() { + adapter = new NormalRecyclerAdapter(R.layout.item_case_rv_l, dataBeans) { @Override - public void onClick(int position) { - ContextHub.navigatePageTo( - requireContext(), - CaseCheckedDetailActivity.class, - dataBeans.get(position).getId() - ); + public void convertView(ViewHolder viewHolder, int position, CaseCheckModel.DataModel.RowsModel item) { + String fileIdProcess = item.getFileIdProcess(); + if (!TextUtils.isEmpty(fileIdProcess)) { + String[] split = fileIdProcess.split(","); + String firstImage = split[0]; + if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Drawable drawable = Glide.with(requireContext()).load(StringHelper.appendCompleteURL(firstImage)).submit().get(); + runOnUiThread(new Runnable() { + @Override + public void run() { + viewHolder.setImageResource(R.id.caseImageView, drawable); + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + } + } + viewHolder.setText(R.id.caseTitleView, StringHub.filterSpaceOrEnter(item.getDescription())) + .setText(R.id.casePlaceView, "发生地点:" + StringHub.filterSpaceOrEnter(item.getFieldintro())) + .setText(R.id.caseTimeView, "上报时间:" + item.getReportTime()); + } + }; + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, CaseCheckModel.DataModel.RowsModel rowsModel) { + ContextHub.navigatePageTo(requireContext(), CheckedDetailActivity.class, rowsModel.getId()); } }); } diff --git a/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java b/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java new file mode 100644 index 0000000..550a1fe --- /dev/null +++ b/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java @@ -0,0 +1,358 @@ +package com.casic.dcms.model; + +import java.util.List; + +/** + * 核查-已办/待办共用一个Model + */ +public class CaseCheckModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String isPostpone; + private String description; + private String source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private String caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String lng; + private String isOvertime; + private String currRoleName; + private String fileIdVerify; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String taskName; + private String sourceName; + private String fileIdProcess; + private String reportTime; + private String onedeptName; + + public String getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(String isPostpone) { + this.isPostpone = isPostpone; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getCaseState() { + return caseState; + } + + public void setCaseState(String caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getFileIdVerify() { + return fileIdVerify; + } + + public void setFileIdVerify(String fileIdVerify) { + this.fileIdVerify = fileIdVerify; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getTaskName() { + return taskName; + } + + public void setTaskName(String taskName) { + this.taskName = taskName; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getFileIdProcess() { + return fileIdProcess; + } + + public void setFileIdProcess(String fileIdProcess) { + this.fileIdProcess = fileIdProcess; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java b/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java deleted file mode 100644 index 854e2fe..0000000 --- a/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java +++ /dev/null @@ -1,358 +0,0 @@ -package com.casic.dcms.model.check; - -import java.util.List; - -/** - * 核查-已办/待办共用一个Bean - */ -public class CaseCheckModel { - - private int code; - private DataDTO data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataDTO getData() { - return data; - } - - public void setData(DataDTO data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataDTO { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsDTO { - private int isPostpone; - private String description; - private int source; - private String eorcName; - private String casetypeDetailName; - private String remainingTime; - private String casetypeName; - private String currUserId; - private String currUserName; - private String processId; - private int caseState; - private String id; - private String shopId; - private String fieldintro; - private String lat; - private String caseStateName; - private String lng; - private String isOvertime; - private String currRoleName; - private String fileIdVerify; - private String casetypeDetailCode; - private String onedeptid; - private String eorc; - private String currRoleId; - private String caseid; - private String casetypeCode; - private String nodeLimittime; - private String taskName; - private String sourceName; - private String fileIdProcess; - private String reportTime; - private String onedeptName; - - public int getIsPostpone() { - return isPostpone; - } - - public void setIsPostpone(int isPostpone) { - this.isPostpone = isPostpone; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public int getSource() { - return source; - } - - public void setSource(int source) { - this.source = source; - } - - public String getEorcName() { - return eorcName; - } - - public void setEorcName(String eorcName) { - this.eorcName = eorcName; - } - - public String getCasetypeDetailName() { - return casetypeDetailName; - } - - public void setCasetypeDetailName(String casetypeDetailName) { - this.casetypeDetailName = casetypeDetailName; - } - - public String getRemainingTime() { - return remainingTime; - } - - public void setRemainingTime(String remainingTime) { - this.remainingTime = remainingTime; - } - - public String getCasetypeName() { - return casetypeName; - } - - public void setCasetypeName(String casetypeName) { - this.casetypeName = casetypeName; - } - - public String getCurrUserId() { - return currUserId; - } - - public void setCurrUserId(String currUserId) { - this.currUserId = currUserId; - } - - public String getCurrUserName() { - return currUserName; - } - - public void setCurrUserName(String currUserName) { - this.currUserName = currUserName; - } - - public String getProcessId() { - return processId; - } - - public void setProcessId(String processId) { - this.processId = processId; - } - - public int getCaseState() { - return caseState; - } - - public void setCaseState(int caseState) { - this.caseState = caseState; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getShopId() { - return shopId; - } - - public void setShopId(String shopId) { - this.shopId = shopId; - } - - public String getFieldintro() { - return fieldintro; - } - - public void setFieldintro(String fieldintro) { - this.fieldintro = fieldintro; - } - - public String getLat() { - return lat; - } - - public void setLat(String lat) { - this.lat = lat; - } - - public String getCaseStateName() { - return caseStateName; - } - - public void setCaseStateName(String caseStateName) { - this.caseStateName = caseStateName; - } - - public String getLng() { - return lng; - } - - public void setLng(String lng) { - this.lng = lng; - } - - public String getIsOvertime() { - return isOvertime; - } - - public void setIsOvertime(String isOvertime) { - this.isOvertime = isOvertime; - } - - public String getCurrRoleName() { - return currRoleName; - } - - public void setCurrRoleName(String currRoleName) { - this.currRoleName = currRoleName; - } - - public String getFileIdVerify() { - return fileIdVerify; - } - - public void setFileIdVerify(String fileIdVerify) { - this.fileIdVerify = fileIdVerify; - } - - public String getCasetypeDetailCode() { - return casetypeDetailCode; - } - - public void setCasetypeDetailCode(String casetypeDetailCode) { - this.casetypeDetailCode = casetypeDetailCode; - } - - public String getOnedeptid() { - return onedeptid; - } - - public void setOnedeptid(String onedeptid) { - this.onedeptid = onedeptid; - } - - public String getEorc() { - return eorc; - } - - public void setEorc(String eorc) { - this.eorc = eorc; - } - - public String getCurrRoleId() { - return currRoleId; - } - - public void setCurrRoleId(String currRoleId) { - this.currRoleId = currRoleId; - } - - public String getCaseid() { - return caseid; - } - - public void setCaseid(String caseid) { - this.caseid = caseid; - } - - public String getCasetypeCode() { - return casetypeCode; - } - - public void setCasetypeCode(String casetypeCode) { - this.casetypeCode = casetypeCode; - } - - public String getNodeLimittime() { - return nodeLimittime; - } - - public void setNodeLimittime(String nodeLimittime) { - this.nodeLimittime = nodeLimittime; - } - - public String getTaskName() { - return taskName; - } - - public void setTaskName(String taskName) { - this.taskName = taskName; - } - - public String getSourceName() { - return sourceName; - } - - public void setSourceName(String sourceName) { - this.sourceName = sourceName; - } - - public String getFileIdProcess() { - return fileIdProcess; - } - - public void setFileIdProcess(String fileIdProcess) { - this.fileIdProcess = fileIdProcess; - } - - public String getReportTime() { - return reportTime; - } - - public void setReportTime(String reportTime) { - this.reportTime = reportTime; - } - - public String getOnedeptName() { - return onedeptName; - } - - public void setOnedeptName(String onedeptName) { - this.onedeptName = onedeptName; - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java b/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java index cd3e026..d0888bc 100644 --- a/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java @@ -14,10 +14,10 @@ import com.casic.dcms.R; public class NotificationHelper { - private Context mContext; + private final Context mContext; @SuppressLint("StaticFieldLeak") - private static NotificationHelper notificationHelper; - private NotificationManager notificationManager; + private static volatile NotificationHelper notificationHelper; + private final NotificationManager notificationManager; private NotificationHelper(Context context) { this.mContext = context; @@ -45,10 +45,8 @@ //创建渠道 String id = name + "_DefaultChannel"; NotificationChannel mChannel = new NotificationChannel(id, name, NotificationManager.IMPORTANCE_HIGH); -// mChannel.setSound(Uri.parse(""), Notification.AUDIO_ATTRIBUTES_DEFAULT); mChannel.setShowBadge(true); - mChannel.enableVibration(true); - mChannel.setVibrationPattern(new long[]{100, 200, 300}); + mChannel.enableVibration(false); mChannel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);//设置锁屏可见 notificationManager.createNotificationChannel(mChannel); builder = new Notification.Builder(mContext, id); diff --git a/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java index d7bf511..691dfd5 100644 --- a/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java +++ b/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java @@ -4,20 +4,22 @@ import android.graphics.Color; import android.view.View; -import androidx.core.content.ContextCompat; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; import com.casic.dcms.R; import com.casic.dcms.databinding.ActivityCaseProcessBinding; import com.casic.dcms.model.CaseProcessBean; +import com.casic.dcms.utils.DialogHelper; import com.casic.dcms.vm.CommonDataViewModel; import com.gyf.immersionbar.ImmersionBar; import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.IntHub; import com.pengxh.androidx.lite.utils.Constant; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.vm.LoadState; import java.util.ArrayList; import java.util.List; @@ -30,8 +32,8 @@ @Override protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); viewBinding.titleBarLayout.titleView.setText("处理记录"); viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); @@ -39,7 +41,16 @@ @Override protected void observeRequestState() { - + commonDataViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override @@ -47,10 +58,6 @@ String processId = getIntent().getStringExtra(Constant.INTENT_PARAM); commonDataViewModel = new ViewModelProvider(this).get(CommonDataViewModel.class); commonDataViewModel.obtainCaseProcess(processId); - } - - @Override - protected void initEvent() { commonDataViewModel.caseProcessModel.observe(this, new Observer() { @Override public void onChanged(CaseProcessBean resultBean) { @@ -91,4 +98,9 @@ } }); } + + @Override + protected void initEvent() { + + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java deleted file mode 100644 index 30585d5..0000000 --- a/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java +++ /dev/null @@ -1,353 +0,0 @@ -package com.casic.dcms.view.check; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; - -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.databinding.ActivityCaseCheckDetailBinding; -import com.casic.dcms.model.ActionResultBean; -import com.casic.dcms.model.CaseDetailBean; -import com.casic.dcms.model.CaseNextNodeBean; -import com.casic.dcms.utils.DialogHelper; -import com.casic.dcms.utils.MapHelper; -import com.casic.dcms.utils.PictureSelectorHelper; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.callback.ISelectorListener; -import com.casic.dcms.view.BigImageActivity; -import com.casic.dcms.vm.CaseOperateViewModel; -import com.casic.dcms.vm.CaseViewModel; -import com.casic.dcms.vm.NodeViewModel; -import com.casic.dcms.vm.UploadViewModel; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.entity.LocalMedia; -import com.pengxh.androidx.lite.adapter.EditableImageAdapter; -import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.hub.ContextHub; -import com.pengxh.androidx.lite.hub.StringHub; -import com.pengxh.androidx.lite.utils.Constant; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; -import com.pengxh.androidx.lite.vm.LoadState; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import cn.jzvd.Jzvd; - -public class CaseCheckDetailActivity extends AndroidxBaseActivity { - - private final Context context = CaseCheckDetailActivity.this; - private final ArrayList realPaths = new ArrayList<>(); //真实图片路径 - private final ArrayList imageList = new ArrayList<>(); //上传到服务器的数据集 - private CaseViewModel caseViewModel; - private UploadViewModel uploadViewModel; - private NodeViewModel nodeViewModel; - private CaseOperateViewModel operateViewModel; - private String id; - private String changeState; - private EditableImageAdapter checkImageAdapter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - - viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - } - - @Override - protected void observeRequestState() { - - } - - @Override - protected void initData() { - id = getIntent().getStringExtra(Constant.INTENT_PARAM); - caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); - caseViewModel.obtainCaseDetail(id); - - uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); - nodeViewModel = new ViewModelProvider(this).get(NodeViewModel.class); - operateViewModel = new ViewModelProvider(this).get(CaseOperateViewModel.class); - - checkImageAdapter = new EditableImageAdapter(this, 3, 13); - viewBinding.addImageRecyclerView.setAdapter(checkImageAdapter); - } - - @Override - protected void initEvent() { - caseViewModel.caseDetailModel.observe(this, new Observer() { - @Override - public void onChanged(CaseDetailBean resultBean) { - if (resultBean.getCode() == 200) { - data = resultBean.getData().get(0); - viewBinding.caseNumberView.setText(data.getCaseid()); - viewBinding.caseTypeView.setText(data.getEorcName()); - viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); - viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); - viewBinding.caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); - viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); - viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); - viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - viewBinding.caseStartTimeView.setText(data.getCreateTime()); - viewBinding.caseEndTimeView.setText(data.getNodeLimittime()); - /** - * 图片 - */ - //核实照片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.imageGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - viewBinding.audioPlayerView.setVisibility(View.VISIBLE); - viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - viewBinding.videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - viewBinding.videoPlayerView.setUp( - videoUrl, - StringHub.filterSpaceOrEnter(data.getDescription()), - Jzvd.SCREEN_NORMAL - ); - //设置第一帧为封面 - Glide.with(context) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(viewBinding.videoPlayerView.posterImageView); - } - - //处理照片 - String processImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(processImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = processImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - viewBinding.caseHandleResultView.setText(data.getProcessRemarks().equals("") ? "无处理意见" : data.getProcessRemarks()); - //TODO 服务器返回数据缺少此字段,暂时注掉 -// viewBinding.caseHandleTimeView.setText(); - } - } - }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "获取数据中..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); - } - }); - - //图片九宫格事件处理 - checkImageAdapter.setOnItemClickListener(new EditableImageAdapter.OnItemClickListener() { - @Override - public void onAddImageClick() { - PictureSelectorHelper.selectPicture(context, new ISelectorListener() { - @Override - public void onSuccess(ArrayList result) { - if (result.size() == 1) { - uploadViewModel.uploadImage(new File(result.get(0).getRealPath())); - } else { - for (LocalMedia localMedia : result) { - uploadViewModel.uploadImage(new File(localMedia.getRealPath())); - } - } - } - }); - } - - @Override - public void onItemClick(int position) { - if (realPaths.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, realPaths); - } - } - - @Override - public void onItemLongClick(View view, int position) { - imageList.remove(position); - checkImageAdapter.deleteImage(position); - } - }); - uploadViewModel.imageModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - if (checkImageAdapter.getItemCount() <= 3) { - String url = resultBean.getData(); - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - checkImageAdapter.setupImage(realPaths); - } else { - StringHub.show(context, "最多只能上传3张图片"); - } - } - } - }); - uploadViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.caseCheckLayout.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - nodeViewModel.obtainNextNode(String.valueOf(data.getCaseState())); - } - }); - nodeViewModel.nodeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseNextNodeBean resultBean) { - if (resultBean.getCode() == 200) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(context); - sheetBuilder.setTitle("核实情况"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - viewBinding.caseCheckOptView.setText(dataBean.getNextOperation()); - changeState = String.valueOf(dataBean.getNextState()); - } - }).build().show(); - } else { - StringHub.show(context, "该案卷无下级流转节点"); - } - } - }); - - viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - //案卷提交 - String remarks = viewBinding.caseCheckOptView.getText().toString(); - if (TextUtils.isEmpty(remarks)) { - StringHub.show(context, "核查意见不能为空"); - return; - } - if (TextUtils.isEmpty(changeState)) { - StringHub.show(context, "核查情况还未选择"); - return; - } - operateViewModel.checkCase(data.getProcessId(), id, - String.valueOf(data.getCaseState()), changeState, remarks, - StringHelper.reformatURL(imageList) - ); - } - }); - operateViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "案卷核查中,请稍后..."); - } else if (loadState == LoadState.Success) { - DialogHelper.dismissLoadingDialog(); - finish(); - } else { - StringHub.show(context, "核查失败,请重试"); - DialogHelper.dismissLoadingDialog(); - } - } - }); - } - - @Override - public void onDestroy() { - viewBinding.audioPlayerView.release(); - super.onDestroy(); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - public void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CaseCheckedDetailActivity.java deleted file mode 100644 index 0ffce7d..0000000 --- a/app/src/main/java/com/casic/dcms/view/check/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,228 +0,0 @@ -package com.casic.dcms.view.check; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; - -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.databinding.ActivityCaseCheckedDetailBinding; -import com.casic.dcms.model.CaseDetailBean; -import com.casic.dcms.utils.DialogHelper; -import com.casic.dcms.utils.MapHelper; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.view.BigImageActivity; -import com.casic.dcms.view.CaseProcessActivity; -import com.casic.dcms.vm.CaseViewModel; -import com.gyf.immersionbar.ImmersionBar; -import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.hub.ContextHub; -import com.pengxh.androidx.lite.hub.StringHub; -import com.pengxh.androidx.lite.utils.Constant; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; -import com.pengxh.androidx.lite.vm.LoadState; - -import java.util.ArrayList; - -import cn.jzvd.Jzvd; - -public class CaseCheckedDetailActivity extends AndroidxBaseActivity { - - private final Context context = CaseCheckedDetailActivity.this; - private CaseViewModel caseViewModel; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - - viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - } - - @Override - protected void observeRequestState() { - - } - - @Override - protected void initData() { - String id = getIntent().getStringExtra(Constant.INTENT_PARAM); - caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); - caseViewModel.obtainCaseDetail(id); - } - - @Override - protected void initEvent() { - caseViewModel.caseDetailModel.observe(this, new Observer() { - @Override - public void onChanged(CaseDetailBean resultBean) { - if (resultBean.getCode() == 200) { - data = resultBean.getData().get(0); - viewBinding.caseNumberView.setText(data.getCaseid()); - viewBinding.caseTypeView.setText(data.getEorcName()); - viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); - viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); - viewBinding.caseCommunityView.setText(data.getCommunityName()); - viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); - viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.imageGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //处理图片 - 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)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - viewBinding.audioPlayerView.setVisibility(View.VISIBLE); - viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - viewBinding.videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - viewBinding.videoPlayerView.setUp( - videoUrl, - StringHub.filterSpaceOrEnter(data.getDescription()), - Jzvd.SCREEN_NORMAL - ); - //设置第一帧为封面 - Glide.with(context) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(viewBinding.videoPlayerView.posterImageView); - } - } - } - }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "获取数据中..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); - } - }); - - viewBinding.handleLayout.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - ContextHub.navigatePageTo(context, CaseProcessActivity.class, data.getProcessId()); - } - }); - } - - @Override - protected void onDestroy() { - viewBinding.audioPlayerView.release(); - super.onDestroy(); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b6a8d08..c78d07c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -64,8 +64,8 @@ - - + + diff --git a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java deleted file mode 100644 index 254f0cd..0000000 --- a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.casic.dcms.adapter; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.text.TextUtils; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.model.check.CaseCheckModel; -import com.casic.dcms.utils.StringHelper; -import com.pengxh.androidx.lite.hub.StringHub; -import com.qmuiteam.qmui.widget.QMUIRadiusImageView; - -import java.util.List; - -public class CheckCaseListAdapter extends RecyclerView.Adapter { - - private final Context context; - private final List dataBeans; - private final LayoutInflater layoutInflater; - - public CheckCaseListAdapter(Context context, List dataRows) { - this.context = context; - this.dataBeans = dataRows; - this.layoutInflater = LayoutInflater.from(context); - } - - @NonNull - @Override - public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - return new ItemViewHolder(layoutInflater.inflate(R.layout.item_case_rv_l, parent, false)); - } - - @Override - public void onBindViewHolder(@NonNull ItemViewHolder holder, @SuppressLint("RecyclerView") int position) { - holder.bindView(dataBeans.get(position)); - if (clickListener != null) { - holder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - clickListener.onClick(position); - } - }); - } - } - - @Override - public int getItemCount() { - return dataBeans.size(); - } - - class ItemViewHolder extends RecyclerView.ViewHolder { - - private final QMUIRadiusImageView caseImageView; - private final TextView caseTitleView; - private final TextView casePlaceView; - private final TextView caseTimeView; - - ItemViewHolder(@NonNull View itemView) { - super(itemView); - caseImageView = itemView.findViewById(R.id.caseImageView); - caseTitleView = itemView.findViewById(R.id.caseTitleView); - casePlaceView = itemView.findViewById(R.id.casePlaceView); - caseTimeView = itemView.findViewById(R.id.caseTimeView); - } - - void bindView(CaseCheckModel.DataDTO.RowsDTO rowsBean) { - //处理图片 - String fileIdProcess = rowsBean.getFileIdProcess(); - if (!TextUtils.isEmpty(fileIdProcess)) { - String[] split = fileIdProcess.split(","); - String firstImage = split[0]; - if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { - Glide.with(context).load(StringHelper.appendCompleteURL(firstImage)).into(caseImageView); - } - } - caseTitleView.setText(StringHub.filterSpaceOrEnter(rowsBean.getDescription())); - casePlaceView.setText("发生地点:" + StringHub.filterSpaceOrEnter(rowsBean.getFieldintro())); - caseTimeView.setText("上报时间:" + rowsBean.getReportTime()); - } - } - - private OnItemClickListener clickListener; - - public interface OnItemClickListener { - void onClick(int position); - } - - public void setOnItemClickListener(OnItemClickListener onItemClickListener) { - this.clickListener = onItemClickListener; - } -} diff --git a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java index 85cebc6..667981d 100644 --- a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java @@ -1,19 +1,27 @@ package com.casic.dcms.fragment.check; +import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; + +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.casic.dcms.adapter.CheckCaseListAdapter; +import com.bumptech.glide.Glide; +import com.casic.dcms.R; import com.casic.dcms.databinding.FragmentCheckCaseBinding; -import com.casic.dcms.model.check.CaseCheckModel; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.view.check.CaseCheckDetailActivity; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.check.CheckDetailActivity; import com.casic.dcms.vm.CaseViewModel; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseFragment; import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.StringHub; @@ -24,14 +32,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class CaseCheckFragment extends AndroidxBaseFragment { private static final String TAG = "CaseCheckFragment"; private WeakReferenceHandler weakReferenceHandler; private CaseViewModel caseViewModel; - private CheckCaseListAdapter adapter; - private List dataBeans = new ArrayList<>(); + private NormalRecyclerAdapter adapter; + private List dataBeans = new ArrayList<>(); private int pageIndex = 1; private boolean isRefresh, isLoadMore = false; @@ -49,12 +58,37 @@ protected void initData() { weakReferenceHandler = new WeakReferenceHandler(callback); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.caseCheckModel.observe(this, new Observer() { + @Override + public void onChanged(CaseCheckModel resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(requireContext(), "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(202104251); + } + } + }); } @Override public void onResume() { - obtainCheckCaseList(); super.onResume(); + pageIndex = 1; + obtainCheckCaseList(); } private void obtainCheckCaseList() { @@ -80,31 +114,6 @@ obtainCheckCaseList(); } }); - - caseViewModel.caseCheckModel.observe(this, new Observer() { - @Override - public void onChanged(CaseCheckModel resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(requireContext(), "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(202104251); - } - } - }); } private final Handler.Callback callback = new Handler.Callback() { @@ -125,16 +134,42 @@ }); } else { viewBinding.emptyView.hide(); - adapter = new CheckCaseListAdapter(requireContext(), dataBeans); - viewBinding.caseRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new CheckCaseListAdapter.OnItemClickListener() { + adapter = new NormalRecyclerAdapter(R.layout.item_case_rv_l, dataBeans) { @Override - public void onClick(int position) { - ContextHub.navigatePageTo( - requireContext(), - CaseCheckDetailActivity.class, - dataBeans.get(position).getId() - ); + public void convertView(ViewHolder viewHolder, int position, CaseCheckModel.DataModel.RowsModel item) { + String fileIdProcess = item.getFileIdProcess(); + if (!TextUtils.isEmpty(fileIdProcess)) { + String[] split = fileIdProcess.split(","); + String firstImage = split[0]; + if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Drawable drawable = Glide.with(requireContext()).load(StringHelper.appendCompleteURL(firstImage)).submit().get(); + runOnUiThread(new Runnable() { + @Override + public void run() { + viewHolder.setImageResource(R.id.caseImageView, drawable); + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + } + } + viewHolder.setText(R.id.caseTitleView, StringHub.filterSpaceOrEnter(item.getDescription())) + .setText(R.id.casePlaceView, "发生地点:" + StringHub.filterSpaceOrEnter(item.getFieldintro())) + .setText(R.id.caseTimeView, "上报时间:" + item.getReportTime()); + } + }; + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, CaseCheckModel.DataModel.RowsModel rowsModel) { + ContextHub.navigatePageTo(requireContext(), CheckDetailActivity.class, rowsModel.getId()); } }); } diff --git a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java index 3e2d904..6775b65 100644 --- a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java @@ -1,19 +1,27 @@ package com.casic.dcms.fragment.check; +import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; + +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.casic.dcms.adapter.CheckCaseListAdapter; +import com.bumptech.glide.Glide; +import com.casic.dcms.R; import com.casic.dcms.databinding.FragmentCheckCaseBinding; -import com.casic.dcms.model.check.CaseCheckModel; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.view.check.CaseCheckedDetailActivity; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.check.CheckedDetailActivity; import com.casic.dcms.vm.CaseViewModel; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseFragment; import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.StringHub; @@ -24,14 +32,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class CaseCheckedFragment extends AndroidxBaseFragment { private static final String TAG = "CaseCheckedFragment"; private WeakReferenceHandler weakReferenceHandler; private CaseViewModel caseViewModel; - private CheckCaseListAdapter adapter; - private List dataBeans = new ArrayList<>(); + private NormalRecyclerAdapter adapter; + private List dataBeans = new ArrayList<>(); private int pageIndex = 1; private boolean isRefresh, isLoadMore = false; @@ -50,12 +59,37 @@ protected void initData() { weakReferenceHandler = new WeakReferenceHandler(callback); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.caseCheckModel.observe(this, new Observer() { + @Override + public void onChanged(CaseCheckModel resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(requireContext(), "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(202104252); + } + } + }); } @Override public void onResume() { - obtainCheckCaseList(); super.onResume(); + pageIndex = 1; + obtainCheckCaseList(); } private void obtainCheckCaseList() { @@ -81,32 +115,6 @@ obtainCheckCaseList(); } }); - - caseViewModel.caseCheckModel.observe(this, new Observer() { - - @Override - public void onChanged(CaseCheckModel resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(requireContext(), "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(202104252); - } - } - }); } private final Handler.Callback callback = new Handler.Callback() { @@ -127,16 +135,42 @@ }); } else { viewBinding.emptyView.hide(); - adapter = new CheckCaseListAdapter(requireContext(), dataBeans); - viewBinding.caseRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new CheckCaseListAdapter.OnItemClickListener() { + adapter = new NormalRecyclerAdapter(R.layout.item_case_rv_l, dataBeans) { @Override - public void onClick(int position) { - ContextHub.navigatePageTo( - requireContext(), - CaseCheckedDetailActivity.class, - dataBeans.get(position).getId() - ); + public void convertView(ViewHolder viewHolder, int position, CaseCheckModel.DataModel.RowsModel item) { + String fileIdProcess = item.getFileIdProcess(); + if (!TextUtils.isEmpty(fileIdProcess)) { + String[] split = fileIdProcess.split(","); + String firstImage = split[0]; + if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Drawable drawable = Glide.with(requireContext()).load(StringHelper.appendCompleteURL(firstImage)).submit().get(); + runOnUiThread(new Runnable() { + @Override + public void run() { + viewHolder.setImageResource(R.id.caseImageView, drawable); + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + } + } + viewHolder.setText(R.id.caseTitleView, StringHub.filterSpaceOrEnter(item.getDescription())) + .setText(R.id.casePlaceView, "发生地点:" + StringHub.filterSpaceOrEnter(item.getFieldintro())) + .setText(R.id.caseTimeView, "上报时间:" + item.getReportTime()); + } + }; + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, CaseCheckModel.DataModel.RowsModel rowsModel) { + ContextHub.navigatePageTo(requireContext(), CheckedDetailActivity.class, rowsModel.getId()); } }); } diff --git a/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java b/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java new file mode 100644 index 0000000..550a1fe --- /dev/null +++ b/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java @@ -0,0 +1,358 @@ +package com.casic.dcms.model; + +import java.util.List; + +/** + * 核查-已办/待办共用一个Model + */ +public class CaseCheckModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String isPostpone; + private String description; + private String source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private String caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String lng; + private String isOvertime; + private String currRoleName; + private String fileIdVerify; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String taskName; + private String sourceName; + private String fileIdProcess; + private String reportTime; + private String onedeptName; + + public String getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(String isPostpone) { + this.isPostpone = isPostpone; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getCaseState() { + return caseState; + } + + public void setCaseState(String caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getFileIdVerify() { + return fileIdVerify; + } + + public void setFileIdVerify(String fileIdVerify) { + this.fileIdVerify = fileIdVerify; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getTaskName() { + return taskName; + } + + public void setTaskName(String taskName) { + this.taskName = taskName; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getFileIdProcess() { + return fileIdProcess; + } + + public void setFileIdProcess(String fileIdProcess) { + this.fileIdProcess = fileIdProcess; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java b/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java deleted file mode 100644 index 854e2fe..0000000 --- a/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java +++ /dev/null @@ -1,358 +0,0 @@ -package com.casic.dcms.model.check; - -import java.util.List; - -/** - * 核查-已办/待办共用一个Bean - */ -public class CaseCheckModel { - - private int code; - private DataDTO data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataDTO getData() { - return data; - } - - public void setData(DataDTO data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataDTO { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsDTO { - private int isPostpone; - private String description; - private int source; - private String eorcName; - private String casetypeDetailName; - private String remainingTime; - private String casetypeName; - private String currUserId; - private String currUserName; - private String processId; - private int caseState; - private String id; - private String shopId; - private String fieldintro; - private String lat; - private String caseStateName; - private String lng; - private String isOvertime; - private String currRoleName; - private String fileIdVerify; - private String casetypeDetailCode; - private String onedeptid; - private String eorc; - private String currRoleId; - private String caseid; - private String casetypeCode; - private String nodeLimittime; - private String taskName; - private String sourceName; - private String fileIdProcess; - private String reportTime; - private String onedeptName; - - public int getIsPostpone() { - return isPostpone; - } - - public void setIsPostpone(int isPostpone) { - this.isPostpone = isPostpone; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public int getSource() { - return source; - } - - public void setSource(int source) { - this.source = source; - } - - public String getEorcName() { - return eorcName; - } - - public void setEorcName(String eorcName) { - this.eorcName = eorcName; - } - - public String getCasetypeDetailName() { - return casetypeDetailName; - } - - public void setCasetypeDetailName(String casetypeDetailName) { - this.casetypeDetailName = casetypeDetailName; - } - - public String getRemainingTime() { - return remainingTime; - } - - public void setRemainingTime(String remainingTime) { - this.remainingTime = remainingTime; - } - - public String getCasetypeName() { - return casetypeName; - } - - public void setCasetypeName(String casetypeName) { - this.casetypeName = casetypeName; - } - - public String getCurrUserId() { - return currUserId; - } - - public void setCurrUserId(String currUserId) { - this.currUserId = currUserId; - } - - public String getCurrUserName() { - return currUserName; - } - - public void setCurrUserName(String currUserName) { - this.currUserName = currUserName; - } - - public String getProcessId() { - return processId; - } - - public void setProcessId(String processId) { - this.processId = processId; - } - - public int getCaseState() { - return caseState; - } - - public void setCaseState(int caseState) { - this.caseState = caseState; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getShopId() { - return shopId; - } - - public void setShopId(String shopId) { - this.shopId = shopId; - } - - public String getFieldintro() { - return fieldintro; - } - - public void setFieldintro(String fieldintro) { - this.fieldintro = fieldintro; - } - - public String getLat() { - return lat; - } - - public void setLat(String lat) { - this.lat = lat; - } - - public String getCaseStateName() { - return caseStateName; - } - - public void setCaseStateName(String caseStateName) { - this.caseStateName = caseStateName; - } - - public String getLng() { - return lng; - } - - public void setLng(String lng) { - this.lng = lng; - } - - public String getIsOvertime() { - return isOvertime; - } - - public void setIsOvertime(String isOvertime) { - this.isOvertime = isOvertime; - } - - public String getCurrRoleName() { - return currRoleName; - } - - public void setCurrRoleName(String currRoleName) { - this.currRoleName = currRoleName; - } - - public String getFileIdVerify() { - return fileIdVerify; - } - - public void setFileIdVerify(String fileIdVerify) { - this.fileIdVerify = fileIdVerify; - } - - public String getCasetypeDetailCode() { - return casetypeDetailCode; - } - - public void setCasetypeDetailCode(String casetypeDetailCode) { - this.casetypeDetailCode = casetypeDetailCode; - } - - public String getOnedeptid() { - return onedeptid; - } - - public void setOnedeptid(String onedeptid) { - this.onedeptid = onedeptid; - } - - public String getEorc() { - return eorc; - } - - public void setEorc(String eorc) { - this.eorc = eorc; - } - - public String getCurrRoleId() { - return currRoleId; - } - - public void setCurrRoleId(String currRoleId) { - this.currRoleId = currRoleId; - } - - public String getCaseid() { - return caseid; - } - - public void setCaseid(String caseid) { - this.caseid = caseid; - } - - public String getCasetypeCode() { - return casetypeCode; - } - - public void setCasetypeCode(String casetypeCode) { - this.casetypeCode = casetypeCode; - } - - public String getNodeLimittime() { - return nodeLimittime; - } - - public void setNodeLimittime(String nodeLimittime) { - this.nodeLimittime = nodeLimittime; - } - - public String getTaskName() { - return taskName; - } - - public void setTaskName(String taskName) { - this.taskName = taskName; - } - - public String getSourceName() { - return sourceName; - } - - public void setSourceName(String sourceName) { - this.sourceName = sourceName; - } - - public String getFileIdProcess() { - return fileIdProcess; - } - - public void setFileIdProcess(String fileIdProcess) { - this.fileIdProcess = fileIdProcess; - } - - public String getReportTime() { - return reportTime; - } - - public void setReportTime(String reportTime) { - this.reportTime = reportTime; - } - - public String getOnedeptName() { - return onedeptName; - } - - public void setOnedeptName(String onedeptName) { - this.onedeptName = onedeptName; - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java b/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java index cd3e026..d0888bc 100644 --- a/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java @@ -14,10 +14,10 @@ import com.casic.dcms.R; public class NotificationHelper { - private Context mContext; + private final Context mContext; @SuppressLint("StaticFieldLeak") - private static NotificationHelper notificationHelper; - private NotificationManager notificationManager; + private static volatile NotificationHelper notificationHelper; + private final NotificationManager notificationManager; private NotificationHelper(Context context) { this.mContext = context; @@ -45,10 +45,8 @@ //创建渠道 String id = name + "_DefaultChannel"; NotificationChannel mChannel = new NotificationChannel(id, name, NotificationManager.IMPORTANCE_HIGH); -// mChannel.setSound(Uri.parse(""), Notification.AUDIO_ATTRIBUTES_DEFAULT); mChannel.setShowBadge(true); - mChannel.enableVibration(true); - mChannel.setVibrationPattern(new long[]{100, 200, 300}); + mChannel.enableVibration(false); mChannel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);//设置锁屏可见 notificationManager.createNotificationChannel(mChannel); builder = new Notification.Builder(mContext, id); diff --git a/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java index d7bf511..691dfd5 100644 --- a/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java +++ b/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java @@ -4,20 +4,22 @@ import android.graphics.Color; import android.view.View; -import androidx.core.content.ContextCompat; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; import com.casic.dcms.R; import com.casic.dcms.databinding.ActivityCaseProcessBinding; import com.casic.dcms.model.CaseProcessBean; +import com.casic.dcms.utils.DialogHelper; import com.casic.dcms.vm.CommonDataViewModel; import com.gyf.immersionbar.ImmersionBar; import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.IntHub; import com.pengxh.androidx.lite.utils.Constant; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.vm.LoadState; import java.util.ArrayList; import java.util.List; @@ -30,8 +32,8 @@ @Override protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); viewBinding.titleBarLayout.titleView.setText("处理记录"); viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); @@ -39,7 +41,16 @@ @Override protected void observeRequestState() { - + commonDataViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override @@ -47,10 +58,6 @@ String processId = getIntent().getStringExtra(Constant.INTENT_PARAM); commonDataViewModel = new ViewModelProvider(this).get(CommonDataViewModel.class); commonDataViewModel.obtainCaseProcess(processId); - } - - @Override - protected void initEvent() { commonDataViewModel.caseProcessModel.observe(this, new Observer() { @Override public void onChanged(CaseProcessBean resultBean) { @@ -91,4 +98,9 @@ } }); } + + @Override + protected void initEvent() { + + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java deleted file mode 100644 index 30585d5..0000000 --- a/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java +++ /dev/null @@ -1,353 +0,0 @@ -package com.casic.dcms.view.check; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; - -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.databinding.ActivityCaseCheckDetailBinding; -import com.casic.dcms.model.ActionResultBean; -import com.casic.dcms.model.CaseDetailBean; -import com.casic.dcms.model.CaseNextNodeBean; -import com.casic.dcms.utils.DialogHelper; -import com.casic.dcms.utils.MapHelper; -import com.casic.dcms.utils.PictureSelectorHelper; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.callback.ISelectorListener; -import com.casic.dcms.view.BigImageActivity; -import com.casic.dcms.vm.CaseOperateViewModel; -import com.casic.dcms.vm.CaseViewModel; -import com.casic.dcms.vm.NodeViewModel; -import com.casic.dcms.vm.UploadViewModel; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.entity.LocalMedia; -import com.pengxh.androidx.lite.adapter.EditableImageAdapter; -import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.hub.ContextHub; -import com.pengxh.androidx.lite.hub.StringHub; -import com.pengxh.androidx.lite.utils.Constant; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; -import com.pengxh.androidx.lite.vm.LoadState; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import cn.jzvd.Jzvd; - -public class CaseCheckDetailActivity extends AndroidxBaseActivity { - - private final Context context = CaseCheckDetailActivity.this; - private final ArrayList realPaths = new ArrayList<>(); //真实图片路径 - private final ArrayList imageList = new ArrayList<>(); //上传到服务器的数据集 - private CaseViewModel caseViewModel; - private UploadViewModel uploadViewModel; - private NodeViewModel nodeViewModel; - private CaseOperateViewModel operateViewModel; - private String id; - private String changeState; - private EditableImageAdapter checkImageAdapter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - - viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - } - - @Override - protected void observeRequestState() { - - } - - @Override - protected void initData() { - id = getIntent().getStringExtra(Constant.INTENT_PARAM); - caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); - caseViewModel.obtainCaseDetail(id); - - uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); - nodeViewModel = new ViewModelProvider(this).get(NodeViewModel.class); - operateViewModel = new ViewModelProvider(this).get(CaseOperateViewModel.class); - - checkImageAdapter = new EditableImageAdapter(this, 3, 13); - viewBinding.addImageRecyclerView.setAdapter(checkImageAdapter); - } - - @Override - protected void initEvent() { - caseViewModel.caseDetailModel.observe(this, new Observer() { - @Override - public void onChanged(CaseDetailBean resultBean) { - if (resultBean.getCode() == 200) { - data = resultBean.getData().get(0); - viewBinding.caseNumberView.setText(data.getCaseid()); - viewBinding.caseTypeView.setText(data.getEorcName()); - viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); - viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); - viewBinding.caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); - viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); - viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); - viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - viewBinding.caseStartTimeView.setText(data.getCreateTime()); - viewBinding.caseEndTimeView.setText(data.getNodeLimittime()); - /** - * 图片 - */ - //核实照片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.imageGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - viewBinding.audioPlayerView.setVisibility(View.VISIBLE); - viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - viewBinding.videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - viewBinding.videoPlayerView.setUp( - videoUrl, - StringHub.filterSpaceOrEnter(data.getDescription()), - Jzvd.SCREEN_NORMAL - ); - //设置第一帧为封面 - Glide.with(context) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(viewBinding.videoPlayerView.posterImageView); - } - - //处理照片 - String processImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(processImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = processImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - viewBinding.caseHandleResultView.setText(data.getProcessRemarks().equals("") ? "无处理意见" : data.getProcessRemarks()); - //TODO 服务器返回数据缺少此字段,暂时注掉 -// viewBinding.caseHandleTimeView.setText(); - } - } - }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "获取数据中..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); - } - }); - - //图片九宫格事件处理 - checkImageAdapter.setOnItemClickListener(new EditableImageAdapter.OnItemClickListener() { - @Override - public void onAddImageClick() { - PictureSelectorHelper.selectPicture(context, new ISelectorListener() { - @Override - public void onSuccess(ArrayList result) { - if (result.size() == 1) { - uploadViewModel.uploadImage(new File(result.get(0).getRealPath())); - } else { - for (LocalMedia localMedia : result) { - uploadViewModel.uploadImage(new File(localMedia.getRealPath())); - } - } - } - }); - } - - @Override - public void onItemClick(int position) { - if (realPaths.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, realPaths); - } - } - - @Override - public void onItemLongClick(View view, int position) { - imageList.remove(position); - checkImageAdapter.deleteImage(position); - } - }); - uploadViewModel.imageModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - if (checkImageAdapter.getItemCount() <= 3) { - String url = resultBean.getData(); - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - checkImageAdapter.setupImage(realPaths); - } else { - StringHub.show(context, "最多只能上传3张图片"); - } - } - } - }); - uploadViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.caseCheckLayout.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - nodeViewModel.obtainNextNode(String.valueOf(data.getCaseState())); - } - }); - nodeViewModel.nodeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseNextNodeBean resultBean) { - if (resultBean.getCode() == 200) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(context); - sheetBuilder.setTitle("核实情况"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - viewBinding.caseCheckOptView.setText(dataBean.getNextOperation()); - changeState = String.valueOf(dataBean.getNextState()); - } - }).build().show(); - } else { - StringHub.show(context, "该案卷无下级流转节点"); - } - } - }); - - viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - //案卷提交 - String remarks = viewBinding.caseCheckOptView.getText().toString(); - if (TextUtils.isEmpty(remarks)) { - StringHub.show(context, "核查意见不能为空"); - return; - } - if (TextUtils.isEmpty(changeState)) { - StringHub.show(context, "核查情况还未选择"); - return; - } - operateViewModel.checkCase(data.getProcessId(), id, - String.valueOf(data.getCaseState()), changeState, remarks, - StringHelper.reformatURL(imageList) - ); - } - }); - operateViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "案卷核查中,请稍后..."); - } else if (loadState == LoadState.Success) { - DialogHelper.dismissLoadingDialog(); - finish(); - } else { - StringHub.show(context, "核查失败,请重试"); - DialogHelper.dismissLoadingDialog(); - } - } - }); - } - - @Override - public void onDestroy() { - viewBinding.audioPlayerView.release(); - super.onDestroy(); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - public void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CaseCheckedDetailActivity.java deleted file mode 100644 index 0ffce7d..0000000 --- a/app/src/main/java/com/casic/dcms/view/check/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,228 +0,0 @@ -package com.casic.dcms.view.check; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; - -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.databinding.ActivityCaseCheckedDetailBinding; -import com.casic.dcms.model.CaseDetailBean; -import com.casic.dcms.utils.DialogHelper; -import com.casic.dcms.utils.MapHelper; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.view.BigImageActivity; -import com.casic.dcms.view.CaseProcessActivity; -import com.casic.dcms.vm.CaseViewModel; -import com.gyf.immersionbar.ImmersionBar; -import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.hub.ContextHub; -import com.pengxh.androidx.lite.hub.StringHub; -import com.pengxh.androidx.lite.utils.Constant; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; -import com.pengxh.androidx.lite.vm.LoadState; - -import java.util.ArrayList; - -import cn.jzvd.Jzvd; - -public class CaseCheckedDetailActivity extends AndroidxBaseActivity { - - private final Context context = CaseCheckedDetailActivity.this; - private CaseViewModel caseViewModel; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - - viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - } - - @Override - protected void observeRequestState() { - - } - - @Override - protected void initData() { - String id = getIntent().getStringExtra(Constant.INTENT_PARAM); - caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); - caseViewModel.obtainCaseDetail(id); - } - - @Override - protected void initEvent() { - caseViewModel.caseDetailModel.observe(this, new Observer() { - @Override - public void onChanged(CaseDetailBean resultBean) { - if (resultBean.getCode() == 200) { - data = resultBean.getData().get(0); - viewBinding.caseNumberView.setText(data.getCaseid()); - viewBinding.caseTypeView.setText(data.getEorcName()); - viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); - viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); - viewBinding.caseCommunityView.setText(data.getCommunityName()); - viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); - viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.imageGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //处理图片 - 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)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - viewBinding.audioPlayerView.setVisibility(View.VISIBLE); - viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - viewBinding.videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - viewBinding.videoPlayerView.setUp( - videoUrl, - StringHub.filterSpaceOrEnter(data.getDescription()), - Jzvd.SCREEN_NORMAL - ); - //设置第一帧为封面 - Glide.with(context) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(viewBinding.videoPlayerView.posterImageView); - } - } - } - }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "获取数据中..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); - } - }); - - viewBinding.handleLayout.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - ContextHub.navigatePageTo(context, CaseProcessActivity.class, data.getProcessId()); - } - }); - } - - @Override - protected void onDestroy() { - viewBinding.audioPlayerView.release(); - super.onDestroy(); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java b/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java index 76e3203..2c76426 100644 --- a/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java @@ -2,7 +2,6 @@ import android.widget.LinearLayout; -import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; import com.casic.dcms.R; @@ -14,6 +13,7 @@ import com.casic.dcms.utils.LocaleConstant; import com.gyf.immersionbar.ImmersionBar; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.IntHub; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; import java.util.ArrayList; @@ -28,8 +28,8 @@ @Override protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); viewBinding.titleBarLayout.titleView.setText("案卷核查"); viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); @@ -46,10 +46,10 @@ fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), LocaleConstant.CASE_PAGE_TITLES, fragmentList); - viewBinding.checkViewPager.setAdapter(adapter); + viewBinding.viewPager.setAdapter(adapter); //绑定TabLayout - viewBinding.checkTabLayout.setupWithViewPager(viewBinding.checkViewPager); - LinearLayout linearLayout = (LinearLayout) viewBinding.checkTabLayout.getChildAt(0); + viewBinding.topTabLayout.setupWithViewPager(viewBinding.viewPager); + LinearLayout linearLayout = (LinearLayout) viewBinding.topTabLayout.getChildAt(0); LinearLayoutHelper.setDivider(this, linearLayout); } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b6a8d08..c78d07c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -64,8 +64,8 @@ - - + + diff --git a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java deleted file mode 100644 index 254f0cd..0000000 --- a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.casic.dcms.adapter; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.text.TextUtils; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.model.check.CaseCheckModel; -import com.casic.dcms.utils.StringHelper; -import com.pengxh.androidx.lite.hub.StringHub; -import com.qmuiteam.qmui.widget.QMUIRadiusImageView; - -import java.util.List; - -public class CheckCaseListAdapter extends RecyclerView.Adapter { - - private final Context context; - private final List dataBeans; - private final LayoutInflater layoutInflater; - - public CheckCaseListAdapter(Context context, List dataRows) { - this.context = context; - this.dataBeans = dataRows; - this.layoutInflater = LayoutInflater.from(context); - } - - @NonNull - @Override - public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - return new ItemViewHolder(layoutInflater.inflate(R.layout.item_case_rv_l, parent, false)); - } - - @Override - public void onBindViewHolder(@NonNull ItemViewHolder holder, @SuppressLint("RecyclerView") int position) { - holder.bindView(dataBeans.get(position)); - if (clickListener != null) { - holder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - clickListener.onClick(position); - } - }); - } - } - - @Override - public int getItemCount() { - return dataBeans.size(); - } - - class ItemViewHolder extends RecyclerView.ViewHolder { - - private final QMUIRadiusImageView caseImageView; - private final TextView caseTitleView; - private final TextView casePlaceView; - private final TextView caseTimeView; - - ItemViewHolder(@NonNull View itemView) { - super(itemView); - caseImageView = itemView.findViewById(R.id.caseImageView); - caseTitleView = itemView.findViewById(R.id.caseTitleView); - casePlaceView = itemView.findViewById(R.id.casePlaceView); - caseTimeView = itemView.findViewById(R.id.caseTimeView); - } - - void bindView(CaseCheckModel.DataDTO.RowsDTO rowsBean) { - //处理图片 - String fileIdProcess = rowsBean.getFileIdProcess(); - if (!TextUtils.isEmpty(fileIdProcess)) { - String[] split = fileIdProcess.split(","); - String firstImage = split[0]; - if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { - Glide.with(context).load(StringHelper.appendCompleteURL(firstImage)).into(caseImageView); - } - } - caseTitleView.setText(StringHub.filterSpaceOrEnter(rowsBean.getDescription())); - casePlaceView.setText("发生地点:" + StringHub.filterSpaceOrEnter(rowsBean.getFieldintro())); - caseTimeView.setText("上报时间:" + rowsBean.getReportTime()); - } - } - - private OnItemClickListener clickListener; - - public interface OnItemClickListener { - void onClick(int position); - } - - public void setOnItemClickListener(OnItemClickListener onItemClickListener) { - this.clickListener = onItemClickListener; - } -} diff --git a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java index 85cebc6..667981d 100644 --- a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java @@ -1,19 +1,27 @@ package com.casic.dcms.fragment.check; +import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; + +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.casic.dcms.adapter.CheckCaseListAdapter; +import com.bumptech.glide.Glide; +import com.casic.dcms.R; import com.casic.dcms.databinding.FragmentCheckCaseBinding; -import com.casic.dcms.model.check.CaseCheckModel; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.view.check.CaseCheckDetailActivity; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.check.CheckDetailActivity; import com.casic.dcms.vm.CaseViewModel; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseFragment; import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.StringHub; @@ -24,14 +32,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class CaseCheckFragment extends AndroidxBaseFragment { private static final String TAG = "CaseCheckFragment"; private WeakReferenceHandler weakReferenceHandler; private CaseViewModel caseViewModel; - private CheckCaseListAdapter adapter; - private List dataBeans = new ArrayList<>(); + private NormalRecyclerAdapter adapter; + private List dataBeans = new ArrayList<>(); private int pageIndex = 1; private boolean isRefresh, isLoadMore = false; @@ -49,12 +58,37 @@ protected void initData() { weakReferenceHandler = new WeakReferenceHandler(callback); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.caseCheckModel.observe(this, new Observer() { + @Override + public void onChanged(CaseCheckModel resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(requireContext(), "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(202104251); + } + } + }); } @Override public void onResume() { - obtainCheckCaseList(); super.onResume(); + pageIndex = 1; + obtainCheckCaseList(); } private void obtainCheckCaseList() { @@ -80,31 +114,6 @@ obtainCheckCaseList(); } }); - - caseViewModel.caseCheckModel.observe(this, new Observer() { - @Override - public void onChanged(CaseCheckModel resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(requireContext(), "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(202104251); - } - } - }); } private final Handler.Callback callback = new Handler.Callback() { @@ -125,16 +134,42 @@ }); } else { viewBinding.emptyView.hide(); - adapter = new CheckCaseListAdapter(requireContext(), dataBeans); - viewBinding.caseRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new CheckCaseListAdapter.OnItemClickListener() { + adapter = new NormalRecyclerAdapter(R.layout.item_case_rv_l, dataBeans) { @Override - public void onClick(int position) { - ContextHub.navigatePageTo( - requireContext(), - CaseCheckDetailActivity.class, - dataBeans.get(position).getId() - ); + public void convertView(ViewHolder viewHolder, int position, CaseCheckModel.DataModel.RowsModel item) { + String fileIdProcess = item.getFileIdProcess(); + if (!TextUtils.isEmpty(fileIdProcess)) { + String[] split = fileIdProcess.split(","); + String firstImage = split[0]; + if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Drawable drawable = Glide.with(requireContext()).load(StringHelper.appendCompleteURL(firstImage)).submit().get(); + runOnUiThread(new Runnable() { + @Override + public void run() { + viewHolder.setImageResource(R.id.caseImageView, drawable); + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + } + } + viewHolder.setText(R.id.caseTitleView, StringHub.filterSpaceOrEnter(item.getDescription())) + .setText(R.id.casePlaceView, "发生地点:" + StringHub.filterSpaceOrEnter(item.getFieldintro())) + .setText(R.id.caseTimeView, "上报时间:" + item.getReportTime()); + } + }; + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, CaseCheckModel.DataModel.RowsModel rowsModel) { + ContextHub.navigatePageTo(requireContext(), CheckDetailActivity.class, rowsModel.getId()); } }); } diff --git a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java index 3e2d904..6775b65 100644 --- a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java @@ -1,19 +1,27 @@ package com.casic.dcms.fragment.check; +import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; + +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.casic.dcms.adapter.CheckCaseListAdapter; +import com.bumptech.glide.Glide; +import com.casic.dcms.R; import com.casic.dcms.databinding.FragmentCheckCaseBinding; -import com.casic.dcms.model.check.CaseCheckModel; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.view.check.CaseCheckedDetailActivity; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.check.CheckedDetailActivity; import com.casic.dcms.vm.CaseViewModel; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseFragment; import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.StringHub; @@ -24,14 +32,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class CaseCheckedFragment extends AndroidxBaseFragment { private static final String TAG = "CaseCheckedFragment"; private WeakReferenceHandler weakReferenceHandler; private CaseViewModel caseViewModel; - private CheckCaseListAdapter adapter; - private List dataBeans = new ArrayList<>(); + private NormalRecyclerAdapter adapter; + private List dataBeans = new ArrayList<>(); private int pageIndex = 1; private boolean isRefresh, isLoadMore = false; @@ -50,12 +59,37 @@ protected void initData() { weakReferenceHandler = new WeakReferenceHandler(callback); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.caseCheckModel.observe(this, new Observer() { + @Override + public void onChanged(CaseCheckModel resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(requireContext(), "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(202104252); + } + } + }); } @Override public void onResume() { - obtainCheckCaseList(); super.onResume(); + pageIndex = 1; + obtainCheckCaseList(); } private void obtainCheckCaseList() { @@ -81,32 +115,6 @@ obtainCheckCaseList(); } }); - - caseViewModel.caseCheckModel.observe(this, new Observer() { - - @Override - public void onChanged(CaseCheckModel resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(requireContext(), "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(202104252); - } - } - }); } private final Handler.Callback callback = new Handler.Callback() { @@ -127,16 +135,42 @@ }); } else { viewBinding.emptyView.hide(); - adapter = new CheckCaseListAdapter(requireContext(), dataBeans); - viewBinding.caseRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new CheckCaseListAdapter.OnItemClickListener() { + adapter = new NormalRecyclerAdapter(R.layout.item_case_rv_l, dataBeans) { @Override - public void onClick(int position) { - ContextHub.navigatePageTo( - requireContext(), - CaseCheckedDetailActivity.class, - dataBeans.get(position).getId() - ); + public void convertView(ViewHolder viewHolder, int position, CaseCheckModel.DataModel.RowsModel item) { + String fileIdProcess = item.getFileIdProcess(); + if (!TextUtils.isEmpty(fileIdProcess)) { + String[] split = fileIdProcess.split(","); + String firstImage = split[0]; + if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Drawable drawable = Glide.with(requireContext()).load(StringHelper.appendCompleteURL(firstImage)).submit().get(); + runOnUiThread(new Runnable() { + @Override + public void run() { + viewHolder.setImageResource(R.id.caseImageView, drawable); + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + } + } + viewHolder.setText(R.id.caseTitleView, StringHub.filterSpaceOrEnter(item.getDescription())) + .setText(R.id.casePlaceView, "发生地点:" + StringHub.filterSpaceOrEnter(item.getFieldintro())) + .setText(R.id.caseTimeView, "上报时间:" + item.getReportTime()); + } + }; + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, CaseCheckModel.DataModel.RowsModel rowsModel) { + ContextHub.navigatePageTo(requireContext(), CheckedDetailActivity.class, rowsModel.getId()); } }); } diff --git a/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java b/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java new file mode 100644 index 0000000..550a1fe --- /dev/null +++ b/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java @@ -0,0 +1,358 @@ +package com.casic.dcms.model; + +import java.util.List; + +/** + * 核查-已办/待办共用一个Model + */ +public class CaseCheckModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String isPostpone; + private String description; + private String source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private String caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String lng; + private String isOvertime; + private String currRoleName; + private String fileIdVerify; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String taskName; + private String sourceName; + private String fileIdProcess; + private String reportTime; + private String onedeptName; + + public String getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(String isPostpone) { + this.isPostpone = isPostpone; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getCaseState() { + return caseState; + } + + public void setCaseState(String caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getFileIdVerify() { + return fileIdVerify; + } + + public void setFileIdVerify(String fileIdVerify) { + this.fileIdVerify = fileIdVerify; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getTaskName() { + return taskName; + } + + public void setTaskName(String taskName) { + this.taskName = taskName; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getFileIdProcess() { + return fileIdProcess; + } + + public void setFileIdProcess(String fileIdProcess) { + this.fileIdProcess = fileIdProcess; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java b/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java deleted file mode 100644 index 854e2fe..0000000 --- a/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java +++ /dev/null @@ -1,358 +0,0 @@ -package com.casic.dcms.model.check; - -import java.util.List; - -/** - * 核查-已办/待办共用一个Bean - */ -public class CaseCheckModel { - - private int code; - private DataDTO data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataDTO getData() { - return data; - } - - public void setData(DataDTO data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataDTO { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsDTO { - private int isPostpone; - private String description; - private int source; - private String eorcName; - private String casetypeDetailName; - private String remainingTime; - private String casetypeName; - private String currUserId; - private String currUserName; - private String processId; - private int caseState; - private String id; - private String shopId; - private String fieldintro; - private String lat; - private String caseStateName; - private String lng; - private String isOvertime; - private String currRoleName; - private String fileIdVerify; - private String casetypeDetailCode; - private String onedeptid; - private String eorc; - private String currRoleId; - private String caseid; - private String casetypeCode; - private String nodeLimittime; - private String taskName; - private String sourceName; - private String fileIdProcess; - private String reportTime; - private String onedeptName; - - public int getIsPostpone() { - return isPostpone; - } - - public void setIsPostpone(int isPostpone) { - this.isPostpone = isPostpone; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public int getSource() { - return source; - } - - public void setSource(int source) { - this.source = source; - } - - public String getEorcName() { - return eorcName; - } - - public void setEorcName(String eorcName) { - this.eorcName = eorcName; - } - - public String getCasetypeDetailName() { - return casetypeDetailName; - } - - public void setCasetypeDetailName(String casetypeDetailName) { - this.casetypeDetailName = casetypeDetailName; - } - - public String getRemainingTime() { - return remainingTime; - } - - public void setRemainingTime(String remainingTime) { - this.remainingTime = remainingTime; - } - - public String getCasetypeName() { - return casetypeName; - } - - public void setCasetypeName(String casetypeName) { - this.casetypeName = casetypeName; - } - - public String getCurrUserId() { - return currUserId; - } - - public void setCurrUserId(String currUserId) { - this.currUserId = currUserId; - } - - public String getCurrUserName() { - return currUserName; - } - - public void setCurrUserName(String currUserName) { - this.currUserName = currUserName; - } - - public String getProcessId() { - return processId; - } - - public void setProcessId(String processId) { - this.processId = processId; - } - - public int getCaseState() { - return caseState; - } - - public void setCaseState(int caseState) { - this.caseState = caseState; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getShopId() { - return shopId; - } - - public void setShopId(String shopId) { - this.shopId = shopId; - } - - public String getFieldintro() { - return fieldintro; - } - - public void setFieldintro(String fieldintro) { - this.fieldintro = fieldintro; - } - - public String getLat() { - return lat; - } - - public void setLat(String lat) { - this.lat = lat; - } - - public String getCaseStateName() { - return caseStateName; - } - - public void setCaseStateName(String caseStateName) { - this.caseStateName = caseStateName; - } - - public String getLng() { - return lng; - } - - public void setLng(String lng) { - this.lng = lng; - } - - public String getIsOvertime() { - return isOvertime; - } - - public void setIsOvertime(String isOvertime) { - this.isOvertime = isOvertime; - } - - public String getCurrRoleName() { - return currRoleName; - } - - public void setCurrRoleName(String currRoleName) { - this.currRoleName = currRoleName; - } - - public String getFileIdVerify() { - return fileIdVerify; - } - - public void setFileIdVerify(String fileIdVerify) { - this.fileIdVerify = fileIdVerify; - } - - public String getCasetypeDetailCode() { - return casetypeDetailCode; - } - - public void setCasetypeDetailCode(String casetypeDetailCode) { - this.casetypeDetailCode = casetypeDetailCode; - } - - public String getOnedeptid() { - return onedeptid; - } - - public void setOnedeptid(String onedeptid) { - this.onedeptid = onedeptid; - } - - public String getEorc() { - return eorc; - } - - public void setEorc(String eorc) { - this.eorc = eorc; - } - - public String getCurrRoleId() { - return currRoleId; - } - - public void setCurrRoleId(String currRoleId) { - this.currRoleId = currRoleId; - } - - public String getCaseid() { - return caseid; - } - - public void setCaseid(String caseid) { - this.caseid = caseid; - } - - public String getCasetypeCode() { - return casetypeCode; - } - - public void setCasetypeCode(String casetypeCode) { - this.casetypeCode = casetypeCode; - } - - public String getNodeLimittime() { - return nodeLimittime; - } - - public void setNodeLimittime(String nodeLimittime) { - this.nodeLimittime = nodeLimittime; - } - - public String getTaskName() { - return taskName; - } - - public void setTaskName(String taskName) { - this.taskName = taskName; - } - - public String getSourceName() { - return sourceName; - } - - public void setSourceName(String sourceName) { - this.sourceName = sourceName; - } - - public String getFileIdProcess() { - return fileIdProcess; - } - - public void setFileIdProcess(String fileIdProcess) { - this.fileIdProcess = fileIdProcess; - } - - public String getReportTime() { - return reportTime; - } - - public void setReportTime(String reportTime) { - this.reportTime = reportTime; - } - - public String getOnedeptName() { - return onedeptName; - } - - public void setOnedeptName(String onedeptName) { - this.onedeptName = onedeptName; - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java b/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java index cd3e026..d0888bc 100644 --- a/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java @@ -14,10 +14,10 @@ import com.casic.dcms.R; public class NotificationHelper { - private Context mContext; + private final Context mContext; @SuppressLint("StaticFieldLeak") - private static NotificationHelper notificationHelper; - private NotificationManager notificationManager; + private static volatile NotificationHelper notificationHelper; + private final NotificationManager notificationManager; private NotificationHelper(Context context) { this.mContext = context; @@ -45,10 +45,8 @@ //创建渠道 String id = name + "_DefaultChannel"; NotificationChannel mChannel = new NotificationChannel(id, name, NotificationManager.IMPORTANCE_HIGH); -// mChannel.setSound(Uri.parse(""), Notification.AUDIO_ATTRIBUTES_DEFAULT); mChannel.setShowBadge(true); - mChannel.enableVibration(true); - mChannel.setVibrationPattern(new long[]{100, 200, 300}); + mChannel.enableVibration(false); mChannel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);//设置锁屏可见 notificationManager.createNotificationChannel(mChannel); builder = new Notification.Builder(mContext, id); diff --git a/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java index d7bf511..691dfd5 100644 --- a/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java +++ b/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java @@ -4,20 +4,22 @@ import android.graphics.Color; import android.view.View; -import androidx.core.content.ContextCompat; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; import com.casic.dcms.R; import com.casic.dcms.databinding.ActivityCaseProcessBinding; import com.casic.dcms.model.CaseProcessBean; +import com.casic.dcms.utils.DialogHelper; import com.casic.dcms.vm.CommonDataViewModel; import com.gyf.immersionbar.ImmersionBar; import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.IntHub; import com.pengxh.androidx.lite.utils.Constant; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.vm.LoadState; import java.util.ArrayList; import java.util.List; @@ -30,8 +32,8 @@ @Override protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); viewBinding.titleBarLayout.titleView.setText("处理记录"); viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); @@ -39,7 +41,16 @@ @Override protected void observeRequestState() { - + commonDataViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override @@ -47,10 +58,6 @@ String processId = getIntent().getStringExtra(Constant.INTENT_PARAM); commonDataViewModel = new ViewModelProvider(this).get(CommonDataViewModel.class); commonDataViewModel.obtainCaseProcess(processId); - } - - @Override - protected void initEvent() { commonDataViewModel.caseProcessModel.observe(this, new Observer() { @Override public void onChanged(CaseProcessBean resultBean) { @@ -91,4 +98,9 @@ } }); } + + @Override + protected void initEvent() { + + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java deleted file mode 100644 index 30585d5..0000000 --- a/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java +++ /dev/null @@ -1,353 +0,0 @@ -package com.casic.dcms.view.check; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; - -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.databinding.ActivityCaseCheckDetailBinding; -import com.casic.dcms.model.ActionResultBean; -import com.casic.dcms.model.CaseDetailBean; -import com.casic.dcms.model.CaseNextNodeBean; -import com.casic.dcms.utils.DialogHelper; -import com.casic.dcms.utils.MapHelper; -import com.casic.dcms.utils.PictureSelectorHelper; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.callback.ISelectorListener; -import com.casic.dcms.view.BigImageActivity; -import com.casic.dcms.vm.CaseOperateViewModel; -import com.casic.dcms.vm.CaseViewModel; -import com.casic.dcms.vm.NodeViewModel; -import com.casic.dcms.vm.UploadViewModel; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.entity.LocalMedia; -import com.pengxh.androidx.lite.adapter.EditableImageAdapter; -import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.hub.ContextHub; -import com.pengxh.androidx.lite.hub.StringHub; -import com.pengxh.androidx.lite.utils.Constant; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; -import com.pengxh.androidx.lite.vm.LoadState; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import cn.jzvd.Jzvd; - -public class CaseCheckDetailActivity extends AndroidxBaseActivity { - - private final Context context = CaseCheckDetailActivity.this; - private final ArrayList realPaths = new ArrayList<>(); //真实图片路径 - private final ArrayList imageList = new ArrayList<>(); //上传到服务器的数据集 - private CaseViewModel caseViewModel; - private UploadViewModel uploadViewModel; - private NodeViewModel nodeViewModel; - private CaseOperateViewModel operateViewModel; - private String id; - private String changeState; - private EditableImageAdapter checkImageAdapter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - - viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - } - - @Override - protected void observeRequestState() { - - } - - @Override - protected void initData() { - id = getIntent().getStringExtra(Constant.INTENT_PARAM); - caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); - caseViewModel.obtainCaseDetail(id); - - uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); - nodeViewModel = new ViewModelProvider(this).get(NodeViewModel.class); - operateViewModel = new ViewModelProvider(this).get(CaseOperateViewModel.class); - - checkImageAdapter = new EditableImageAdapter(this, 3, 13); - viewBinding.addImageRecyclerView.setAdapter(checkImageAdapter); - } - - @Override - protected void initEvent() { - caseViewModel.caseDetailModel.observe(this, new Observer() { - @Override - public void onChanged(CaseDetailBean resultBean) { - if (resultBean.getCode() == 200) { - data = resultBean.getData().get(0); - viewBinding.caseNumberView.setText(data.getCaseid()); - viewBinding.caseTypeView.setText(data.getEorcName()); - viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); - viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); - viewBinding.caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); - viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); - viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); - viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - viewBinding.caseStartTimeView.setText(data.getCreateTime()); - viewBinding.caseEndTimeView.setText(data.getNodeLimittime()); - /** - * 图片 - */ - //核实照片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.imageGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - viewBinding.audioPlayerView.setVisibility(View.VISIBLE); - viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - viewBinding.videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - viewBinding.videoPlayerView.setUp( - videoUrl, - StringHub.filterSpaceOrEnter(data.getDescription()), - Jzvd.SCREEN_NORMAL - ); - //设置第一帧为封面 - Glide.with(context) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(viewBinding.videoPlayerView.posterImageView); - } - - //处理照片 - String processImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(processImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = processImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - viewBinding.caseHandleResultView.setText(data.getProcessRemarks().equals("") ? "无处理意见" : data.getProcessRemarks()); - //TODO 服务器返回数据缺少此字段,暂时注掉 -// viewBinding.caseHandleTimeView.setText(); - } - } - }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "获取数据中..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); - } - }); - - //图片九宫格事件处理 - checkImageAdapter.setOnItemClickListener(new EditableImageAdapter.OnItemClickListener() { - @Override - public void onAddImageClick() { - PictureSelectorHelper.selectPicture(context, new ISelectorListener() { - @Override - public void onSuccess(ArrayList result) { - if (result.size() == 1) { - uploadViewModel.uploadImage(new File(result.get(0).getRealPath())); - } else { - for (LocalMedia localMedia : result) { - uploadViewModel.uploadImage(new File(localMedia.getRealPath())); - } - } - } - }); - } - - @Override - public void onItemClick(int position) { - if (realPaths.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, realPaths); - } - } - - @Override - public void onItemLongClick(View view, int position) { - imageList.remove(position); - checkImageAdapter.deleteImage(position); - } - }); - uploadViewModel.imageModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - if (checkImageAdapter.getItemCount() <= 3) { - String url = resultBean.getData(); - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - checkImageAdapter.setupImage(realPaths); - } else { - StringHub.show(context, "最多只能上传3张图片"); - } - } - } - }); - uploadViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.caseCheckLayout.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - nodeViewModel.obtainNextNode(String.valueOf(data.getCaseState())); - } - }); - nodeViewModel.nodeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseNextNodeBean resultBean) { - if (resultBean.getCode() == 200) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(context); - sheetBuilder.setTitle("核实情况"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - viewBinding.caseCheckOptView.setText(dataBean.getNextOperation()); - changeState = String.valueOf(dataBean.getNextState()); - } - }).build().show(); - } else { - StringHub.show(context, "该案卷无下级流转节点"); - } - } - }); - - viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - //案卷提交 - String remarks = viewBinding.caseCheckOptView.getText().toString(); - if (TextUtils.isEmpty(remarks)) { - StringHub.show(context, "核查意见不能为空"); - return; - } - if (TextUtils.isEmpty(changeState)) { - StringHub.show(context, "核查情况还未选择"); - return; - } - operateViewModel.checkCase(data.getProcessId(), id, - String.valueOf(data.getCaseState()), changeState, remarks, - StringHelper.reformatURL(imageList) - ); - } - }); - operateViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "案卷核查中,请稍后..."); - } else if (loadState == LoadState.Success) { - DialogHelper.dismissLoadingDialog(); - finish(); - } else { - StringHub.show(context, "核查失败,请重试"); - DialogHelper.dismissLoadingDialog(); - } - } - }); - } - - @Override - public void onDestroy() { - viewBinding.audioPlayerView.release(); - super.onDestroy(); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - public void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CaseCheckedDetailActivity.java deleted file mode 100644 index 0ffce7d..0000000 --- a/app/src/main/java/com/casic/dcms/view/check/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,228 +0,0 @@ -package com.casic.dcms.view.check; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; - -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.databinding.ActivityCaseCheckedDetailBinding; -import com.casic.dcms.model.CaseDetailBean; -import com.casic.dcms.utils.DialogHelper; -import com.casic.dcms.utils.MapHelper; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.view.BigImageActivity; -import com.casic.dcms.view.CaseProcessActivity; -import com.casic.dcms.vm.CaseViewModel; -import com.gyf.immersionbar.ImmersionBar; -import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.hub.ContextHub; -import com.pengxh.androidx.lite.hub.StringHub; -import com.pengxh.androidx.lite.utils.Constant; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; -import com.pengxh.androidx.lite.vm.LoadState; - -import java.util.ArrayList; - -import cn.jzvd.Jzvd; - -public class CaseCheckedDetailActivity extends AndroidxBaseActivity { - - private final Context context = CaseCheckedDetailActivity.this; - private CaseViewModel caseViewModel; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - - viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - } - - @Override - protected void observeRequestState() { - - } - - @Override - protected void initData() { - String id = getIntent().getStringExtra(Constant.INTENT_PARAM); - caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); - caseViewModel.obtainCaseDetail(id); - } - - @Override - protected void initEvent() { - caseViewModel.caseDetailModel.observe(this, new Observer() { - @Override - public void onChanged(CaseDetailBean resultBean) { - if (resultBean.getCode() == 200) { - data = resultBean.getData().get(0); - viewBinding.caseNumberView.setText(data.getCaseid()); - viewBinding.caseTypeView.setText(data.getEorcName()); - viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); - viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); - viewBinding.caseCommunityView.setText(data.getCommunityName()); - viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); - viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.imageGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //处理图片 - 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)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - viewBinding.audioPlayerView.setVisibility(View.VISIBLE); - viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - viewBinding.videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - viewBinding.videoPlayerView.setUp( - videoUrl, - StringHub.filterSpaceOrEnter(data.getDescription()), - Jzvd.SCREEN_NORMAL - ); - //设置第一帧为封面 - Glide.with(context) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(viewBinding.videoPlayerView.posterImageView); - } - } - } - }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "获取数据中..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); - } - }); - - viewBinding.handleLayout.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - ContextHub.navigatePageTo(context, CaseProcessActivity.class, data.getProcessId()); - } - }); - } - - @Override - protected void onDestroy() { - viewBinding.audioPlayerView.release(); - super.onDestroy(); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java b/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java index 76e3203..2c76426 100644 --- a/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java @@ -2,7 +2,6 @@ import android.widget.LinearLayout; -import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; import com.casic.dcms.R; @@ -14,6 +13,7 @@ import com.casic.dcms.utils.LocaleConstant; import com.gyf.immersionbar.ImmersionBar; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.IntHub; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; import java.util.ArrayList; @@ -28,8 +28,8 @@ @Override protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); viewBinding.titleBarLayout.titleView.setText("案卷核查"); viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); @@ -46,10 +46,10 @@ fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), LocaleConstant.CASE_PAGE_TITLES, fragmentList); - viewBinding.checkViewPager.setAdapter(adapter); + viewBinding.viewPager.setAdapter(adapter); //绑定TabLayout - viewBinding.checkTabLayout.setupWithViewPager(viewBinding.checkViewPager); - LinearLayout linearLayout = (LinearLayout) viewBinding.checkTabLayout.getChildAt(0); + viewBinding.topTabLayout.setupWithViewPager(viewBinding.viewPager); + LinearLayout linearLayout = (LinearLayout) viewBinding.topTabLayout.getChildAt(0); LinearLayoutHelper.setDivider(this, linearLayout); } diff --git a/app/src/main/java/com/casic/dcms/view/check/CheckDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CheckDetailActivity.java new file mode 100644 index 0000000..b9aeeb7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/view/check/CheckDetailActivity.java @@ -0,0 +1,356 @@ +package com.casic.dcms.view.check; + +import android.content.Context; +import android.text.TextUtils; +import android.view.View; +import android.widget.AdapterView; + +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.databinding.ActivityCheckDetailBinding; +import com.casic.dcms.model.ActionResultBean; +import com.casic.dcms.model.CaseDetailBean; +import com.casic.dcms.model.CaseNextNodeBean; +import com.casic.dcms.utils.DialogHelper; +import com.casic.dcms.utils.MapHelper; +import com.casic.dcms.utils.PictureSelectorHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.ISelectorListener; +import com.casic.dcms.view.BigImageActivity; +import com.casic.dcms.vm.CaseOperateViewModel; +import com.casic.dcms.vm.CaseViewModel; +import com.casic.dcms.vm.NodeViewModel; +import com.casic.dcms.vm.UploadViewModel; +import com.gyf.immersionbar.ImmersionBar; +import com.luck.picture.lib.entity.LocalMedia; +import com.pengxh.androidx.lite.adapter.EditableImageAdapter; +import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; +import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.ContextHub; +import com.pengxh.androidx.lite.hub.IntHub; +import com.pengxh.androidx.lite.hub.StringHub; +import com.pengxh.androidx.lite.utils.Constant; +import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.vm.LoadState; +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import cn.jzvd.Jzvd; + +public class CheckDetailActivity extends AndroidxBaseActivity { + + private final Context context = CheckDetailActivity.this; + private final ArrayList realPaths = new ArrayList<>(); //真实图片路径 + private final ArrayList imageList = new ArrayList<>(); //上传到服务器的数据集 + private CaseViewModel caseViewModel; + private UploadViewModel uploadViewModel; + private NodeViewModel nodeViewModel; + private CaseOperateViewModel operateViewModel; + private String id; + private String changeState; + private EditableImageAdapter checkImageAdapter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + + @Override + protected void setupTopBarLayout() { + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); + + viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); + viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); + } + + @Override + protected void observeRequestState() { + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + + uploadViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + + operateViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "案卷核查中,请稍后..."); + } else if (loadState == LoadState.Success) { + DialogHelper.dismissLoadingDialog(); + finish(); + } else { + StringHub.show(context, "核查失败,请重试"); + DialogHelper.dismissLoadingDialog(); + } + } + }); + } + + @Override + protected void initData() { + id = getIntent().getStringExtra(Constant.INTENT_PARAM); + caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.obtainCaseDetail(id); + caseViewModel.caseDetailModel.observe(this, new Observer() { + @Override + public void onChanged(CaseDetailBean resultBean) { + if (resultBean.getCode() == 200) { + data = resultBean.getData().get(0); + viewBinding.caseNumberView.setText(data.getCaseid()); + viewBinding.caseTypeView.setText(data.getEorcName()); + viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); + viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); + viewBinding.caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); + viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); + viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); + viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); + viewBinding.caseStartTimeView.setText(data.getCreateTime()); + viewBinding.caseEndTimeView.setText(data.getNodeLimittime()); + /** + * 图片 + */ + //核实照片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.imageGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + viewBinding.audioPlayerView.setVisibility(View.VISIBLE); + viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(videoFile)) { + viewBinding.videoPlayerView.setVisibility(View.VISIBLE); + String videoUrl = StringHelper.appendCompleteURL(videoFile); + viewBinding.videoPlayerView.setUp( + videoUrl, + StringHub.filterSpaceOrEnter(data.getDescription()), + Jzvd.SCREEN_NORMAL + ); + //设置第一帧为封面 + Glide.with(context) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(viewBinding.videoPlayerView.posterImageView); + } + + //处理照片 + String processImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(processImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = processImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.handleGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + viewBinding.caseHandleResultView.setText(data.getProcessRemarks().equals("") ? "无处理意见" : data.getProcessRemarks()); + //TODO 服务器返回数据缺少此字段,暂时注掉 +// viewBinding.caseHandleTimeView.setText(); + } + } + }); + + uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); + uploadViewModel.imageModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + if (checkImageAdapter.getItemCount() <= 3) { + String url = resultBean.getData(); + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + checkImageAdapter.setupImage(realPaths); + } else { + StringHub.show(context, "最多只能上传3张图片"); + } + } + } + }); + + nodeViewModel = new ViewModelProvider(this).get(NodeViewModel.class); + nodeViewModel.nodeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseNextNodeBean resultBean) { + if (resultBean.getCode() == 200) { + List dataBeans = resultBean.getData(); + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(context); + sheetBuilder.setTitle("核实情况"); + for (CaseNextNodeBean.DataBean dataBean : dataBeans) { + sheetBuilder.addItem(dataBean.getNextOperation()); + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); + viewBinding.caseCheckOptView.setText(dataBean.getNextOperation()); + changeState = String.valueOf(dataBean.getNextState()); + } + }).build().show(); + } else { + StringHub.show(context, "该案卷无下级流转节点"); + } + } + }); + + operateViewModel = new ViewModelProvider(this).get(CaseOperateViewModel.class); + + checkImageAdapter = new EditableImageAdapter(this, 3, 13); + viewBinding.addImageRecyclerView.setAdapter(checkImageAdapter); + } + + @Override + protected void initEvent() { + viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); + } + }); + + //图片九宫格事件处理 + checkImageAdapter.setOnItemClickListener(new EditableImageAdapter.OnItemClickListener() { + @Override + public void onAddImageClick() { + PictureSelectorHelper.selectPicture(context, new ISelectorListener() { + @Override + public void onSuccess(ArrayList result) { + if (result.size() == 1) { + uploadViewModel.uploadImage(new File(result.get(0).getRealPath())); + } else { + for (LocalMedia localMedia : result) { + uploadViewModel.uploadImage(new File(localMedia.getRealPath())); + } + } + } + }); + } + + @Override + public void onItemClick(int position) { + if (realPaths.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, realPaths); + } + } + + @Override + public void onItemLongClick(View view, int position) { + imageList.remove(position); + checkImageAdapter.deleteImage(position); + } + }); + + + viewBinding.caseCheckLayout.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + nodeViewModel.obtainNextNode(String.valueOf(data.getCaseState())); + } + }); + + viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + //案卷提交 + String remarks = viewBinding.caseCheckOptView.getText().toString(); + if (TextUtils.isEmpty(remarks)) { + StringHub.show(context, "核查意见不能为空"); + return; + } + if (TextUtils.isEmpty(changeState)) { + StringHub.show(context, "核查情况还未选择"); + return; + } + operateViewModel.checkCase(data.getProcessId(), id, + String.valueOf(data.getCaseState()), changeState, remarks, + StringHelper.reformatURL(imageList) + ); + } + }); + } + + @Override + public void onDestroy() { + viewBinding.audioPlayerView.release(); + super.onDestroy(); + } + + @Override + public void onBackPressed() { + if (Jzvd.backPress()) { + return; + } + super.onBackPressed(); + } + + @Override + public void onPause() { + super.onPause(); + Jzvd.releaseAllVideos(); + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b6a8d08..c78d07c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -64,8 +64,8 @@ - - + + diff --git a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java deleted file mode 100644 index 254f0cd..0000000 --- a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.casic.dcms.adapter; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.text.TextUtils; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.model.check.CaseCheckModel; -import com.casic.dcms.utils.StringHelper; -import com.pengxh.androidx.lite.hub.StringHub; -import com.qmuiteam.qmui.widget.QMUIRadiusImageView; - -import java.util.List; - -public class CheckCaseListAdapter extends RecyclerView.Adapter { - - private final Context context; - private final List dataBeans; - private final LayoutInflater layoutInflater; - - public CheckCaseListAdapter(Context context, List dataRows) { - this.context = context; - this.dataBeans = dataRows; - this.layoutInflater = LayoutInflater.from(context); - } - - @NonNull - @Override - public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - return new ItemViewHolder(layoutInflater.inflate(R.layout.item_case_rv_l, parent, false)); - } - - @Override - public void onBindViewHolder(@NonNull ItemViewHolder holder, @SuppressLint("RecyclerView") int position) { - holder.bindView(dataBeans.get(position)); - if (clickListener != null) { - holder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - clickListener.onClick(position); - } - }); - } - } - - @Override - public int getItemCount() { - return dataBeans.size(); - } - - class ItemViewHolder extends RecyclerView.ViewHolder { - - private final QMUIRadiusImageView caseImageView; - private final TextView caseTitleView; - private final TextView casePlaceView; - private final TextView caseTimeView; - - ItemViewHolder(@NonNull View itemView) { - super(itemView); - caseImageView = itemView.findViewById(R.id.caseImageView); - caseTitleView = itemView.findViewById(R.id.caseTitleView); - casePlaceView = itemView.findViewById(R.id.casePlaceView); - caseTimeView = itemView.findViewById(R.id.caseTimeView); - } - - void bindView(CaseCheckModel.DataDTO.RowsDTO rowsBean) { - //处理图片 - String fileIdProcess = rowsBean.getFileIdProcess(); - if (!TextUtils.isEmpty(fileIdProcess)) { - String[] split = fileIdProcess.split(","); - String firstImage = split[0]; - if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { - Glide.with(context).load(StringHelper.appendCompleteURL(firstImage)).into(caseImageView); - } - } - caseTitleView.setText(StringHub.filterSpaceOrEnter(rowsBean.getDescription())); - casePlaceView.setText("发生地点:" + StringHub.filterSpaceOrEnter(rowsBean.getFieldintro())); - caseTimeView.setText("上报时间:" + rowsBean.getReportTime()); - } - } - - private OnItemClickListener clickListener; - - public interface OnItemClickListener { - void onClick(int position); - } - - public void setOnItemClickListener(OnItemClickListener onItemClickListener) { - this.clickListener = onItemClickListener; - } -} diff --git a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java index 85cebc6..667981d 100644 --- a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java @@ -1,19 +1,27 @@ package com.casic.dcms.fragment.check; +import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; + +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.casic.dcms.adapter.CheckCaseListAdapter; +import com.bumptech.glide.Glide; +import com.casic.dcms.R; import com.casic.dcms.databinding.FragmentCheckCaseBinding; -import com.casic.dcms.model.check.CaseCheckModel; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.view.check.CaseCheckDetailActivity; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.check.CheckDetailActivity; import com.casic.dcms.vm.CaseViewModel; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseFragment; import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.StringHub; @@ -24,14 +32,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class CaseCheckFragment extends AndroidxBaseFragment { private static final String TAG = "CaseCheckFragment"; private WeakReferenceHandler weakReferenceHandler; private CaseViewModel caseViewModel; - private CheckCaseListAdapter adapter; - private List dataBeans = new ArrayList<>(); + private NormalRecyclerAdapter adapter; + private List dataBeans = new ArrayList<>(); private int pageIndex = 1; private boolean isRefresh, isLoadMore = false; @@ -49,12 +58,37 @@ protected void initData() { weakReferenceHandler = new WeakReferenceHandler(callback); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.caseCheckModel.observe(this, new Observer() { + @Override + public void onChanged(CaseCheckModel resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(requireContext(), "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(202104251); + } + } + }); } @Override public void onResume() { - obtainCheckCaseList(); super.onResume(); + pageIndex = 1; + obtainCheckCaseList(); } private void obtainCheckCaseList() { @@ -80,31 +114,6 @@ obtainCheckCaseList(); } }); - - caseViewModel.caseCheckModel.observe(this, new Observer() { - @Override - public void onChanged(CaseCheckModel resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(requireContext(), "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(202104251); - } - } - }); } private final Handler.Callback callback = new Handler.Callback() { @@ -125,16 +134,42 @@ }); } else { viewBinding.emptyView.hide(); - adapter = new CheckCaseListAdapter(requireContext(), dataBeans); - viewBinding.caseRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new CheckCaseListAdapter.OnItemClickListener() { + adapter = new NormalRecyclerAdapter(R.layout.item_case_rv_l, dataBeans) { @Override - public void onClick(int position) { - ContextHub.navigatePageTo( - requireContext(), - CaseCheckDetailActivity.class, - dataBeans.get(position).getId() - ); + public void convertView(ViewHolder viewHolder, int position, CaseCheckModel.DataModel.RowsModel item) { + String fileIdProcess = item.getFileIdProcess(); + if (!TextUtils.isEmpty(fileIdProcess)) { + String[] split = fileIdProcess.split(","); + String firstImage = split[0]; + if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Drawable drawable = Glide.with(requireContext()).load(StringHelper.appendCompleteURL(firstImage)).submit().get(); + runOnUiThread(new Runnable() { + @Override + public void run() { + viewHolder.setImageResource(R.id.caseImageView, drawable); + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + } + } + viewHolder.setText(R.id.caseTitleView, StringHub.filterSpaceOrEnter(item.getDescription())) + .setText(R.id.casePlaceView, "发生地点:" + StringHub.filterSpaceOrEnter(item.getFieldintro())) + .setText(R.id.caseTimeView, "上报时间:" + item.getReportTime()); + } + }; + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, CaseCheckModel.DataModel.RowsModel rowsModel) { + ContextHub.navigatePageTo(requireContext(), CheckDetailActivity.class, rowsModel.getId()); } }); } diff --git a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java index 3e2d904..6775b65 100644 --- a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java @@ -1,19 +1,27 @@ package com.casic.dcms.fragment.check; +import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; + +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.casic.dcms.adapter.CheckCaseListAdapter; +import com.bumptech.glide.Glide; +import com.casic.dcms.R; import com.casic.dcms.databinding.FragmentCheckCaseBinding; -import com.casic.dcms.model.check.CaseCheckModel; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.view.check.CaseCheckedDetailActivity; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.check.CheckedDetailActivity; import com.casic.dcms.vm.CaseViewModel; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseFragment; import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.StringHub; @@ -24,14 +32,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class CaseCheckedFragment extends AndroidxBaseFragment { private static final String TAG = "CaseCheckedFragment"; private WeakReferenceHandler weakReferenceHandler; private CaseViewModel caseViewModel; - private CheckCaseListAdapter adapter; - private List dataBeans = new ArrayList<>(); + private NormalRecyclerAdapter adapter; + private List dataBeans = new ArrayList<>(); private int pageIndex = 1; private boolean isRefresh, isLoadMore = false; @@ -50,12 +59,37 @@ protected void initData() { weakReferenceHandler = new WeakReferenceHandler(callback); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.caseCheckModel.observe(this, new Observer() { + @Override + public void onChanged(CaseCheckModel resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(requireContext(), "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(202104252); + } + } + }); } @Override public void onResume() { - obtainCheckCaseList(); super.onResume(); + pageIndex = 1; + obtainCheckCaseList(); } private void obtainCheckCaseList() { @@ -81,32 +115,6 @@ obtainCheckCaseList(); } }); - - caseViewModel.caseCheckModel.observe(this, new Observer() { - - @Override - public void onChanged(CaseCheckModel resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(requireContext(), "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(202104252); - } - } - }); } private final Handler.Callback callback = new Handler.Callback() { @@ -127,16 +135,42 @@ }); } else { viewBinding.emptyView.hide(); - adapter = new CheckCaseListAdapter(requireContext(), dataBeans); - viewBinding.caseRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new CheckCaseListAdapter.OnItemClickListener() { + adapter = new NormalRecyclerAdapter(R.layout.item_case_rv_l, dataBeans) { @Override - public void onClick(int position) { - ContextHub.navigatePageTo( - requireContext(), - CaseCheckedDetailActivity.class, - dataBeans.get(position).getId() - ); + public void convertView(ViewHolder viewHolder, int position, CaseCheckModel.DataModel.RowsModel item) { + String fileIdProcess = item.getFileIdProcess(); + if (!TextUtils.isEmpty(fileIdProcess)) { + String[] split = fileIdProcess.split(","); + String firstImage = split[0]; + if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Drawable drawable = Glide.with(requireContext()).load(StringHelper.appendCompleteURL(firstImage)).submit().get(); + runOnUiThread(new Runnable() { + @Override + public void run() { + viewHolder.setImageResource(R.id.caseImageView, drawable); + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + } + } + viewHolder.setText(R.id.caseTitleView, StringHub.filterSpaceOrEnter(item.getDescription())) + .setText(R.id.casePlaceView, "发生地点:" + StringHub.filterSpaceOrEnter(item.getFieldintro())) + .setText(R.id.caseTimeView, "上报时间:" + item.getReportTime()); + } + }; + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, CaseCheckModel.DataModel.RowsModel rowsModel) { + ContextHub.navigatePageTo(requireContext(), CheckedDetailActivity.class, rowsModel.getId()); } }); } diff --git a/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java b/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java new file mode 100644 index 0000000..550a1fe --- /dev/null +++ b/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java @@ -0,0 +1,358 @@ +package com.casic.dcms.model; + +import java.util.List; + +/** + * 核查-已办/待办共用一个Model + */ +public class CaseCheckModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String isPostpone; + private String description; + private String source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private String caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String lng; + private String isOvertime; + private String currRoleName; + private String fileIdVerify; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String taskName; + private String sourceName; + private String fileIdProcess; + private String reportTime; + private String onedeptName; + + public String getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(String isPostpone) { + this.isPostpone = isPostpone; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getCaseState() { + return caseState; + } + + public void setCaseState(String caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getFileIdVerify() { + return fileIdVerify; + } + + public void setFileIdVerify(String fileIdVerify) { + this.fileIdVerify = fileIdVerify; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getTaskName() { + return taskName; + } + + public void setTaskName(String taskName) { + this.taskName = taskName; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getFileIdProcess() { + return fileIdProcess; + } + + public void setFileIdProcess(String fileIdProcess) { + this.fileIdProcess = fileIdProcess; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java b/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java deleted file mode 100644 index 854e2fe..0000000 --- a/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java +++ /dev/null @@ -1,358 +0,0 @@ -package com.casic.dcms.model.check; - -import java.util.List; - -/** - * 核查-已办/待办共用一个Bean - */ -public class CaseCheckModel { - - private int code; - private DataDTO data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataDTO getData() { - return data; - } - - public void setData(DataDTO data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataDTO { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsDTO { - private int isPostpone; - private String description; - private int source; - private String eorcName; - private String casetypeDetailName; - private String remainingTime; - private String casetypeName; - private String currUserId; - private String currUserName; - private String processId; - private int caseState; - private String id; - private String shopId; - private String fieldintro; - private String lat; - private String caseStateName; - private String lng; - private String isOvertime; - private String currRoleName; - private String fileIdVerify; - private String casetypeDetailCode; - private String onedeptid; - private String eorc; - private String currRoleId; - private String caseid; - private String casetypeCode; - private String nodeLimittime; - private String taskName; - private String sourceName; - private String fileIdProcess; - private String reportTime; - private String onedeptName; - - public int getIsPostpone() { - return isPostpone; - } - - public void setIsPostpone(int isPostpone) { - this.isPostpone = isPostpone; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public int getSource() { - return source; - } - - public void setSource(int source) { - this.source = source; - } - - public String getEorcName() { - return eorcName; - } - - public void setEorcName(String eorcName) { - this.eorcName = eorcName; - } - - public String getCasetypeDetailName() { - return casetypeDetailName; - } - - public void setCasetypeDetailName(String casetypeDetailName) { - this.casetypeDetailName = casetypeDetailName; - } - - public String getRemainingTime() { - return remainingTime; - } - - public void setRemainingTime(String remainingTime) { - this.remainingTime = remainingTime; - } - - public String getCasetypeName() { - return casetypeName; - } - - public void setCasetypeName(String casetypeName) { - this.casetypeName = casetypeName; - } - - public String getCurrUserId() { - return currUserId; - } - - public void setCurrUserId(String currUserId) { - this.currUserId = currUserId; - } - - public String getCurrUserName() { - return currUserName; - } - - public void setCurrUserName(String currUserName) { - this.currUserName = currUserName; - } - - public String getProcessId() { - return processId; - } - - public void setProcessId(String processId) { - this.processId = processId; - } - - public int getCaseState() { - return caseState; - } - - public void setCaseState(int caseState) { - this.caseState = caseState; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getShopId() { - return shopId; - } - - public void setShopId(String shopId) { - this.shopId = shopId; - } - - public String getFieldintro() { - return fieldintro; - } - - public void setFieldintro(String fieldintro) { - this.fieldintro = fieldintro; - } - - public String getLat() { - return lat; - } - - public void setLat(String lat) { - this.lat = lat; - } - - public String getCaseStateName() { - return caseStateName; - } - - public void setCaseStateName(String caseStateName) { - this.caseStateName = caseStateName; - } - - public String getLng() { - return lng; - } - - public void setLng(String lng) { - this.lng = lng; - } - - public String getIsOvertime() { - return isOvertime; - } - - public void setIsOvertime(String isOvertime) { - this.isOvertime = isOvertime; - } - - public String getCurrRoleName() { - return currRoleName; - } - - public void setCurrRoleName(String currRoleName) { - this.currRoleName = currRoleName; - } - - public String getFileIdVerify() { - return fileIdVerify; - } - - public void setFileIdVerify(String fileIdVerify) { - this.fileIdVerify = fileIdVerify; - } - - public String getCasetypeDetailCode() { - return casetypeDetailCode; - } - - public void setCasetypeDetailCode(String casetypeDetailCode) { - this.casetypeDetailCode = casetypeDetailCode; - } - - public String getOnedeptid() { - return onedeptid; - } - - public void setOnedeptid(String onedeptid) { - this.onedeptid = onedeptid; - } - - public String getEorc() { - return eorc; - } - - public void setEorc(String eorc) { - this.eorc = eorc; - } - - public String getCurrRoleId() { - return currRoleId; - } - - public void setCurrRoleId(String currRoleId) { - this.currRoleId = currRoleId; - } - - public String getCaseid() { - return caseid; - } - - public void setCaseid(String caseid) { - this.caseid = caseid; - } - - public String getCasetypeCode() { - return casetypeCode; - } - - public void setCasetypeCode(String casetypeCode) { - this.casetypeCode = casetypeCode; - } - - public String getNodeLimittime() { - return nodeLimittime; - } - - public void setNodeLimittime(String nodeLimittime) { - this.nodeLimittime = nodeLimittime; - } - - public String getTaskName() { - return taskName; - } - - public void setTaskName(String taskName) { - this.taskName = taskName; - } - - public String getSourceName() { - return sourceName; - } - - public void setSourceName(String sourceName) { - this.sourceName = sourceName; - } - - public String getFileIdProcess() { - return fileIdProcess; - } - - public void setFileIdProcess(String fileIdProcess) { - this.fileIdProcess = fileIdProcess; - } - - public String getReportTime() { - return reportTime; - } - - public void setReportTime(String reportTime) { - this.reportTime = reportTime; - } - - public String getOnedeptName() { - return onedeptName; - } - - public void setOnedeptName(String onedeptName) { - this.onedeptName = onedeptName; - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java b/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java index cd3e026..d0888bc 100644 --- a/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java @@ -14,10 +14,10 @@ import com.casic.dcms.R; public class NotificationHelper { - private Context mContext; + private final Context mContext; @SuppressLint("StaticFieldLeak") - private static NotificationHelper notificationHelper; - private NotificationManager notificationManager; + private static volatile NotificationHelper notificationHelper; + private final NotificationManager notificationManager; private NotificationHelper(Context context) { this.mContext = context; @@ -45,10 +45,8 @@ //创建渠道 String id = name + "_DefaultChannel"; NotificationChannel mChannel = new NotificationChannel(id, name, NotificationManager.IMPORTANCE_HIGH); -// mChannel.setSound(Uri.parse(""), Notification.AUDIO_ATTRIBUTES_DEFAULT); mChannel.setShowBadge(true); - mChannel.enableVibration(true); - mChannel.setVibrationPattern(new long[]{100, 200, 300}); + mChannel.enableVibration(false); mChannel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);//设置锁屏可见 notificationManager.createNotificationChannel(mChannel); builder = new Notification.Builder(mContext, id); diff --git a/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java index d7bf511..691dfd5 100644 --- a/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java +++ b/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java @@ -4,20 +4,22 @@ import android.graphics.Color; import android.view.View; -import androidx.core.content.ContextCompat; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; import com.casic.dcms.R; import com.casic.dcms.databinding.ActivityCaseProcessBinding; import com.casic.dcms.model.CaseProcessBean; +import com.casic.dcms.utils.DialogHelper; import com.casic.dcms.vm.CommonDataViewModel; import com.gyf.immersionbar.ImmersionBar; import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.IntHub; import com.pengxh.androidx.lite.utils.Constant; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.vm.LoadState; import java.util.ArrayList; import java.util.List; @@ -30,8 +32,8 @@ @Override protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); viewBinding.titleBarLayout.titleView.setText("处理记录"); viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); @@ -39,7 +41,16 @@ @Override protected void observeRequestState() { - + commonDataViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override @@ -47,10 +58,6 @@ String processId = getIntent().getStringExtra(Constant.INTENT_PARAM); commonDataViewModel = new ViewModelProvider(this).get(CommonDataViewModel.class); commonDataViewModel.obtainCaseProcess(processId); - } - - @Override - protected void initEvent() { commonDataViewModel.caseProcessModel.observe(this, new Observer() { @Override public void onChanged(CaseProcessBean resultBean) { @@ -91,4 +98,9 @@ } }); } + + @Override + protected void initEvent() { + + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java deleted file mode 100644 index 30585d5..0000000 --- a/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java +++ /dev/null @@ -1,353 +0,0 @@ -package com.casic.dcms.view.check; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; - -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.databinding.ActivityCaseCheckDetailBinding; -import com.casic.dcms.model.ActionResultBean; -import com.casic.dcms.model.CaseDetailBean; -import com.casic.dcms.model.CaseNextNodeBean; -import com.casic.dcms.utils.DialogHelper; -import com.casic.dcms.utils.MapHelper; -import com.casic.dcms.utils.PictureSelectorHelper; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.callback.ISelectorListener; -import com.casic.dcms.view.BigImageActivity; -import com.casic.dcms.vm.CaseOperateViewModel; -import com.casic.dcms.vm.CaseViewModel; -import com.casic.dcms.vm.NodeViewModel; -import com.casic.dcms.vm.UploadViewModel; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.entity.LocalMedia; -import com.pengxh.androidx.lite.adapter.EditableImageAdapter; -import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.hub.ContextHub; -import com.pengxh.androidx.lite.hub.StringHub; -import com.pengxh.androidx.lite.utils.Constant; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; -import com.pengxh.androidx.lite.vm.LoadState; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import cn.jzvd.Jzvd; - -public class CaseCheckDetailActivity extends AndroidxBaseActivity { - - private final Context context = CaseCheckDetailActivity.this; - private final ArrayList realPaths = new ArrayList<>(); //真实图片路径 - private final ArrayList imageList = new ArrayList<>(); //上传到服务器的数据集 - private CaseViewModel caseViewModel; - private UploadViewModel uploadViewModel; - private NodeViewModel nodeViewModel; - private CaseOperateViewModel operateViewModel; - private String id; - private String changeState; - private EditableImageAdapter checkImageAdapter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - - viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - } - - @Override - protected void observeRequestState() { - - } - - @Override - protected void initData() { - id = getIntent().getStringExtra(Constant.INTENT_PARAM); - caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); - caseViewModel.obtainCaseDetail(id); - - uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); - nodeViewModel = new ViewModelProvider(this).get(NodeViewModel.class); - operateViewModel = new ViewModelProvider(this).get(CaseOperateViewModel.class); - - checkImageAdapter = new EditableImageAdapter(this, 3, 13); - viewBinding.addImageRecyclerView.setAdapter(checkImageAdapter); - } - - @Override - protected void initEvent() { - caseViewModel.caseDetailModel.observe(this, new Observer() { - @Override - public void onChanged(CaseDetailBean resultBean) { - if (resultBean.getCode() == 200) { - data = resultBean.getData().get(0); - viewBinding.caseNumberView.setText(data.getCaseid()); - viewBinding.caseTypeView.setText(data.getEorcName()); - viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); - viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); - viewBinding.caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); - viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); - viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); - viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - viewBinding.caseStartTimeView.setText(data.getCreateTime()); - viewBinding.caseEndTimeView.setText(data.getNodeLimittime()); - /** - * 图片 - */ - //核实照片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.imageGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - viewBinding.audioPlayerView.setVisibility(View.VISIBLE); - viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - viewBinding.videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - viewBinding.videoPlayerView.setUp( - videoUrl, - StringHub.filterSpaceOrEnter(data.getDescription()), - Jzvd.SCREEN_NORMAL - ); - //设置第一帧为封面 - Glide.with(context) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(viewBinding.videoPlayerView.posterImageView); - } - - //处理照片 - String processImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(processImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = processImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - viewBinding.caseHandleResultView.setText(data.getProcessRemarks().equals("") ? "无处理意见" : data.getProcessRemarks()); - //TODO 服务器返回数据缺少此字段,暂时注掉 -// viewBinding.caseHandleTimeView.setText(); - } - } - }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "获取数据中..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); - } - }); - - //图片九宫格事件处理 - checkImageAdapter.setOnItemClickListener(new EditableImageAdapter.OnItemClickListener() { - @Override - public void onAddImageClick() { - PictureSelectorHelper.selectPicture(context, new ISelectorListener() { - @Override - public void onSuccess(ArrayList result) { - if (result.size() == 1) { - uploadViewModel.uploadImage(new File(result.get(0).getRealPath())); - } else { - for (LocalMedia localMedia : result) { - uploadViewModel.uploadImage(new File(localMedia.getRealPath())); - } - } - } - }); - } - - @Override - public void onItemClick(int position) { - if (realPaths.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, realPaths); - } - } - - @Override - public void onItemLongClick(View view, int position) { - imageList.remove(position); - checkImageAdapter.deleteImage(position); - } - }); - uploadViewModel.imageModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - if (checkImageAdapter.getItemCount() <= 3) { - String url = resultBean.getData(); - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - checkImageAdapter.setupImage(realPaths); - } else { - StringHub.show(context, "最多只能上传3张图片"); - } - } - } - }); - uploadViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.caseCheckLayout.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - nodeViewModel.obtainNextNode(String.valueOf(data.getCaseState())); - } - }); - nodeViewModel.nodeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseNextNodeBean resultBean) { - if (resultBean.getCode() == 200) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(context); - sheetBuilder.setTitle("核实情况"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - viewBinding.caseCheckOptView.setText(dataBean.getNextOperation()); - changeState = String.valueOf(dataBean.getNextState()); - } - }).build().show(); - } else { - StringHub.show(context, "该案卷无下级流转节点"); - } - } - }); - - viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - //案卷提交 - String remarks = viewBinding.caseCheckOptView.getText().toString(); - if (TextUtils.isEmpty(remarks)) { - StringHub.show(context, "核查意见不能为空"); - return; - } - if (TextUtils.isEmpty(changeState)) { - StringHub.show(context, "核查情况还未选择"); - return; - } - operateViewModel.checkCase(data.getProcessId(), id, - String.valueOf(data.getCaseState()), changeState, remarks, - StringHelper.reformatURL(imageList) - ); - } - }); - operateViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "案卷核查中,请稍后..."); - } else if (loadState == LoadState.Success) { - DialogHelper.dismissLoadingDialog(); - finish(); - } else { - StringHub.show(context, "核查失败,请重试"); - DialogHelper.dismissLoadingDialog(); - } - } - }); - } - - @Override - public void onDestroy() { - viewBinding.audioPlayerView.release(); - super.onDestroy(); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - public void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CaseCheckedDetailActivity.java deleted file mode 100644 index 0ffce7d..0000000 --- a/app/src/main/java/com/casic/dcms/view/check/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,228 +0,0 @@ -package com.casic.dcms.view.check; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; - -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.databinding.ActivityCaseCheckedDetailBinding; -import com.casic.dcms.model.CaseDetailBean; -import com.casic.dcms.utils.DialogHelper; -import com.casic.dcms.utils.MapHelper; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.view.BigImageActivity; -import com.casic.dcms.view.CaseProcessActivity; -import com.casic.dcms.vm.CaseViewModel; -import com.gyf.immersionbar.ImmersionBar; -import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.hub.ContextHub; -import com.pengxh.androidx.lite.hub.StringHub; -import com.pengxh.androidx.lite.utils.Constant; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; -import com.pengxh.androidx.lite.vm.LoadState; - -import java.util.ArrayList; - -import cn.jzvd.Jzvd; - -public class CaseCheckedDetailActivity extends AndroidxBaseActivity { - - private final Context context = CaseCheckedDetailActivity.this; - private CaseViewModel caseViewModel; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - - viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - } - - @Override - protected void observeRequestState() { - - } - - @Override - protected void initData() { - String id = getIntent().getStringExtra(Constant.INTENT_PARAM); - caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); - caseViewModel.obtainCaseDetail(id); - } - - @Override - protected void initEvent() { - caseViewModel.caseDetailModel.observe(this, new Observer() { - @Override - public void onChanged(CaseDetailBean resultBean) { - if (resultBean.getCode() == 200) { - data = resultBean.getData().get(0); - viewBinding.caseNumberView.setText(data.getCaseid()); - viewBinding.caseTypeView.setText(data.getEorcName()); - viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); - viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); - viewBinding.caseCommunityView.setText(data.getCommunityName()); - viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); - viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.imageGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //处理图片 - 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)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - viewBinding.audioPlayerView.setVisibility(View.VISIBLE); - viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - viewBinding.videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - viewBinding.videoPlayerView.setUp( - videoUrl, - StringHub.filterSpaceOrEnter(data.getDescription()), - Jzvd.SCREEN_NORMAL - ); - //设置第一帧为封面 - Glide.with(context) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(viewBinding.videoPlayerView.posterImageView); - } - } - } - }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "获取数据中..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); - } - }); - - viewBinding.handleLayout.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - ContextHub.navigatePageTo(context, CaseProcessActivity.class, data.getProcessId()); - } - }); - } - - @Override - protected void onDestroy() { - viewBinding.audioPlayerView.release(); - super.onDestroy(); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java b/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java index 76e3203..2c76426 100644 --- a/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java @@ -2,7 +2,6 @@ import android.widget.LinearLayout; -import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; import com.casic.dcms.R; @@ -14,6 +13,7 @@ import com.casic.dcms.utils.LocaleConstant; import com.gyf.immersionbar.ImmersionBar; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.IntHub; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; import java.util.ArrayList; @@ -28,8 +28,8 @@ @Override protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); viewBinding.titleBarLayout.titleView.setText("案卷核查"); viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); @@ -46,10 +46,10 @@ fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), LocaleConstant.CASE_PAGE_TITLES, fragmentList); - viewBinding.checkViewPager.setAdapter(adapter); + viewBinding.viewPager.setAdapter(adapter); //绑定TabLayout - viewBinding.checkTabLayout.setupWithViewPager(viewBinding.checkViewPager); - LinearLayout linearLayout = (LinearLayout) viewBinding.checkTabLayout.getChildAt(0); + viewBinding.topTabLayout.setupWithViewPager(viewBinding.viewPager); + LinearLayout linearLayout = (LinearLayout) viewBinding.topTabLayout.getChildAt(0); LinearLayoutHelper.setDivider(this, linearLayout); } diff --git a/app/src/main/java/com/casic/dcms/view/check/CheckDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CheckDetailActivity.java new file mode 100644 index 0000000..b9aeeb7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/view/check/CheckDetailActivity.java @@ -0,0 +1,356 @@ +package com.casic.dcms.view.check; + +import android.content.Context; +import android.text.TextUtils; +import android.view.View; +import android.widget.AdapterView; + +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.databinding.ActivityCheckDetailBinding; +import com.casic.dcms.model.ActionResultBean; +import com.casic.dcms.model.CaseDetailBean; +import com.casic.dcms.model.CaseNextNodeBean; +import com.casic.dcms.utils.DialogHelper; +import com.casic.dcms.utils.MapHelper; +import com.casic.dcms.utils.PictureSelectorHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.ISelectorListener; +import com.casic.dcms.view.BigImageActivity; +import com.casic.dcms.vm.CaseOperateViewModel; +import com.casic.dcms.vm.CaseViewModel; +import com.casic.dcms.vm.NodeViewModel; +import com.casic.dcms.vm.UploadViewModel; +import com.gyf.immersionbar.ImmersionBar; +import com.luck.picture.lib.entity.LocalMedia; +import com.pengxh.androidx.lite.adapter.EditableImageAdapter; +import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; +import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.ContextHub; +import com.pengxh.androidx.lite.hub.IntHub; +import com.pengxh.androidx.lite.hub.StringHub; +import com.pengxh.androidx.lite.utils.Constant; +import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.vm.LoadState; +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import cn.jzvd.Jzvd; + +public class CheckDetailActivity extends AndroidxBaseActivity { + + private final Context context = CheckDetailActivity.this; + private final ArrayList realPaths = new ArrayList<>(); //真实图片路径 + private final ArrayList imageList = new ArrayList<>(); //上传到服务器的数据集 + private CaseViewModel caseViewModel; + private UploadViewModel uploadViewModel; + private NodeViewModel nodeViewModel; + private CaseOperateViewModel operateViewModel; + private String id; + private String changeState; + private EditableImageAdapter checkImageAdapter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + + @Override + protected void setupTopBarLayout() { + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); + + viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); + viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); + } + + @Override + protected void observeRequestState() { + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + + uploadViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + + operateViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "案卷核查中,请稍后..."); + } else if (loadState == LoadState.Success) { + DialogHelper.dismissLoadingDialog(); + finish(); + } else { + StringHub.show(context, "核查失败,请重试"); + DialogHelper.dismissLoadingDialog(); + } + } + }); + } + + @Override + protected void initData() { + id = getIntent().getStringExtra(Constant.INTENT_PARAM); + caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.obtainCaseDetail(id); + caseViewModel.caseDetailModel.observe(this, new Observer() { + @Override + public void onChanged(CaseDetailBean resultBean) { + if (resultBean.getCode() == 200) { + data = resultBean.getData().get(0); + viewBinding.caseNumberView.setText(data.getCaseid()); + viewBinding.caseTypeView.setText(data.getEorcName()); + viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); + viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); + viewBinding.caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); + viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); + viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); + viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); + viewBinding.caseStartTimeView.setText(data.getCreateTime()); + viewBinding.caseEndTimeView.setText(data.getNodeLimittime()); + /** + * 图片 + */ + //核实照片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.imageGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + viewBinding.audioPlayerView.setVisibility(View.VISIBLE); + viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(videoFile)) { + viewBinding.videoPlayerView.setVisibility(View.VISIBLE); + String videoUrl = StringHelper.appendCompleteURL(videoFile); + viewBinding.videoPlayerView.setUp( + videoUrl, + StringHub.filterSpaceOrEnter(data.getDescription()), + Jzvd.SCREEN_NORMAL + ); + //设置第一帧为封面 + Glide.with(context) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(viewBinding.videoPlayerView.posterImageView); + } + + //处理照片 + String processImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(processImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = processImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.handleGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + viewBinding.caseHandleResultView.setText(data.getProcessRemarks().equals("") ? "无处理意见" : data.getProcessRemarks()); + //TODO 服务器返回数据缺少此字段,暂时注掉 +// viewBinding.caseHandleTimeView.setText(); + } + } + }); + + uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); + uploadViewModel.imageModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + if (checkImageAdapter.getItemCount() <= 3) { + String url = resultBean.getData(); + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + checkImageAdapter.setupImage(realPaths); + } else { + StringHub.show(context, "最多只能上传3张图片"); + } + } + } + }); + + nodeViewModel = new ViewModelProvider(this).get(NodeViewModel.class); + nodeViewModel.nodeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseNextNodeBean resultBean) { + if (resultBean.getCode() == 200) { + List dataBeans = resultBean.getData(); + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(context); + sheetBuilder.setTitle("核实情况"); + for (CaseNextNodeBean.DataBean dataBean : dataBeans) { + sheetBuilder.addItem(dataBean.getNextOperation()); + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); + viewBinding.caseCheckOptView.setText(dataBean.getNextOperation()); + changeState = String.valueOf(dataBean.getNextState()); + } + }).build().show(); + } else { + StringHub.show(context, "该案卷无下级流转节点"); + } + } + }); + + operateViewModel = new ViewModelProvider(this).get(CaseOperateViewModel.class); + + checkImageAdapter = new EditableImageAdapter(this, 3, 13); + viewBinding.addImageRecyclerView.setAdapter(checkImageAdapter); + } + + @Override + protected void initEvent() { + viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); + } + }); + + //图片九宫格事件处理 + checkImageAdapter.setOnItemClickListener(new EditableImageAdapter.OnItemClickListener() { + @Override + public void onAddImageClick() { + PictureSelectorHelper.selectPicture(context, new ISelectorListener() { + @Override + public void onSuccess(ArrayList result) { + if (result.size() == 1) { + uploadViewModel.uploadImage(new File(result.get(0).getRealPath())); + } else { + for (LocalMedia localMedia : result) { + uploadViewModel.uploadImage(new File(localMedia.getRealPath())); + } + } + } + }); + } + + @Override + public void onItemClick(int position) { + if (realPaths.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, realPaths); + } + } + + @Override + public void onItemLongClick(View view, int position) { + imageList.remove(position); + checkImageAdapter.deleteImage(position); + } + }); + + + viewBinding.caseCheckLayout.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + nodeViewModel.obtainNextNode(String.valueOf(data.getCaseState())); + } + }); + + viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + //案卷提交 + String remarks = viewBinding.caseCheckOptView.getText().toString(); + if (TextUtils.isEmpty(remarks)) { + StringHub.show(context, "核查意见不能为空"); + return; + } + if (TextUtils.isEmpty(changeState)) { + StringHub.show(context, "核查情况还未选择"); + return; + } + operateViewModel.checkCase(data.getProcessId(), id, + String.valueOf(data.getCaseState()), changeState, remarks, + StringHelper.reformatURL(imageList) + ); + } + }); + } + + @Override + public void onDestroy() { + viewBinding.audioPlayerView.release(); + super.onDestroy(); + } + + @Override + public void onBackPressed() { + if (Jzvd.backPress()) { + return; + } + super.onBackPressed(); + } + + @Override + public void onPause() { + super.onPause(); + Jzvd.releaseAllVideos(); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CheckedDetailActivity.java new file mode 100644 index 0000000..14e554b --- /dev/null +++ b/app/src/main/java/com/casic/dcms/view/check/CheckedDetailActivity.java @@ -0,0 +1,226 @@ +package com.casic.dcms.view.check; + +import android.content.Context; +import android.text.TextUtils; +import android.view.View; +import android.widget.AdapterView; + +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.databinding.ActivityCheckedDetailBinding; +import com.casic.dcms.model.CaseDetailBean; +import com.casic.dcms.utils.DialogHelper; +import com.casic.dcms.utils.MapHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.BigImageActivity; +import com.casic.dcms.view.CaseProcessActivity; +import com.casic.dcms.vm.CaseViewModel; +import com.gyf.immersionbar.ImmersionBar; +import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; +import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.ContextHub; +import com.pengxh.androidx.lite.hub.IntHub; +import com.pengxh.androidx.lite.hub.StringHub; +import com.pengxh.androidx.lite.utils.Constant; +import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.vm.LoadState; + +import java.util.ArrayList; + +import cn.jzvd.Jzvd; + +public class CheckedDetailActivity extends AndroidxBaseActivity { + + private final Context context = CheckedDetailActivity.this; + private CaseViewModel caseViewModel; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + + @Override + protected void setupTopBarLayout() { + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); + + viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); + viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); + } + + @Override + protected void observeRequestState() { + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + } + + @Override + protected void initData() { + String id = getIntent().getStringExtra(Constant.INTENT_PARAM); + caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.obtainCaseDetail(id); + caseViewModel.caseDetailModel.observe(this, new Observer() { + @Override + public void onChanged(CaseDetailBean resultBean) { + if (resultBean.getCode() == 200) { + data = resultBean.getData().get(0); + viewBinding.caseNumberView.setText(data.getCaseid()); + viewBinding.caseTypeView.setText(data.getEorcName()); + viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); + viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); + viewBinding.caseCommunityView.setText(data.getCommunityName()); + viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); + viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); + viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); + + //核实图片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.imageGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //处理图片 + 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)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.handleGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //核查图片 + String checkImages = data.getFileIdCheck(); + if (!TextUtils.isEmpty(checkImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = checkImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.checkGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + viewBinding.audioPlayerView.setVisibility(View.VISIBLE); + viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(videoFile)) { + viewBinding.videoPlayerView.setVisibility(View.VISIBLE); + String videoUrl = StringHelper.appendCompleteURL(videoFile); + viewBinding.videoPlayerView.setUp( + videoUrl, + StringHub.filterSpaceOrEnter(data.getDescription()), + Jzvd.SCREEN_NORMAL + ); + //设置第一帧为封面 + Glide.with(context) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(viewBinding.videoPlayerView.posterImageView); + } + } + } + }); + } + + @Override + protected void initEvent() { + viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); + } + }); + + viewBinding.handleLayout.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + ContextHub.navigatePageTo(context, CaseProcessActivity.class, data.getProcessId()); + } + }); + } + + @Override + protected void onDestroy() { + viewBinding.audioPlayerView.release(); + super.onDestroy(); + } + + @Override + public void onBackPressed() { + if (Jzvd.backPress()) { + return; + } + super.onBackPressed(); + } + + @Override + protected void onPause() { + super.onPause(); + Jzvd.releaseAllVideos(); + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b6a8d08..c78d07c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -64,8 +64,8 @@ - - + + diff --git a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java deleted file mode 100644 index 254f0cd..0000000 --- a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.casic.dcms.adapter; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.text.TextUtils; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.model.check.CaseCheckModel; -import com.casic.dcms.utils.StringHelper; -import com.pengxh.androidx.lite.hub.StringHub; -import com.qmuiteam.qmui.widget.QMUIRadiusImageView; - -import java.util.List; - -public class CheckCaseListAdapter extends RecyclerView.Adapter { - - private final Context context; - private final List dataBeans; - private final LayoutInflater layoutInflater; - - public CheckCaseListAdapter(Context context, List dataRows) { - this.context = context; - this.dataBeans = dataRows; - this.layoutInflater = LayoutInflater.from(context); - } - - @NonNull - @Override - public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - return new ItemViewHolder(layoutInflater.inflate(R.layout.item_case_rv_l, parent, false)); - } - - @Override - public void onBindViewHolder(@NonNull ItemViewHolder holder, @SuppressLint("RecyclerView") int position) { - holder.bindView(dataBeans.get(position)); - if (clickListener != null) { - holder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - clickListener.onClick(position); - } - }); - } - } - - @Override - public int getItemCount() { - return dataBeans.size(); - } - - class ItemViewHolder extends RecyclerView.ViewHolder { - - private final QMUIRadiusImageView caseImageView; - private final TextView caseTitleView; - private final TextView casePlaceView; - private final TextView caseTimeView; - - ItemViewHolder(@NonNull View itemView) { - super(itemView); - caseImageView = itemView.findViewById(R.id.caseImageView); - caseTitleView = itemView.findViewById(R.id.caseTitleView); - casePlaceView = itemView.findViewById(R.id.casePlaceView); - caseTimeView = itemView.findViewById(R.id.caseTimeView); - } - - void bindView(CaseCheckModel.DataDTO.RowsDTO rowsBean) { - //处理图片 - String fileIdProcess = rowsBean.getFileIdProcess(); - if (!TextUtils.isEmpty(fileIdProcess)) { - String[] split = fileIdProcess.split(","); - String firstImage = split[0]; - if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { - Glide.with(context).load(StringHelper.appendCompleteURL(firstImage)).into(caseImageView); - } - } - caseTitleView.setText(StringHub.filterSpaceOrEnter(rowsBean.getDescription())); - casePlaceView.setText("发生地点:" + StringHub.filterSpaceOrEnter(rowsBean.getFieldintro())); - caseTimeView.setText("上报时间:" + rowsBean.getReportTime()); - } - } - - private OnItemClickListener clickListener; - - public interface OnItemClickListener { - void onClick(int position); - } - - public void setOnItemClickListener(OnItemClickListener onItemClickListener) { - this.clickListener = onItemClickListener; - } -} diff --git a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java index 85cebc6..667981d 100644 --- a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java @@ -1,19 +1,27 @@ package com.casic.dcms.fragment.check; +import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; + +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.casic.dcms.adapter.CheckCaseListAdapter; +import com.bumptech.glide.Glide; +import com.casic.dcms.R; import com.casic.dcms.databinding.FragmentCheckCaseBinding; -import com.casic.dcms.model.check.CaseCheckModel; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.view.check.CaseCheckDetailActivity; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.check.CheckDetailActivity; import com.casic.dcms.vm.CaseViewModel; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseFragment; import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.StringHub; @@ -24,14 +32,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class CaseCheckFragment extends AndroidxBaseFragment { private static final String TAG = "CaseCheckFragment"; private WeakReferenceHandler weakReferenceHandler; private CaseViewModel caseViewModel; - private CheckCaseListAdapter adapter; - private List dataBeans = new ArrayList<>(); + private NormalRecyclerAdapter adapter; + private List dataBeans = new ArrayList<>(); private int pageIndex = 1; private boolean isRefresh, isLoadMore = false; @@ -49,12 +58,37 @@ protected void initData() { weakReferenceHandler = new WeakReferenceHandler(callback); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.caseCheckModel.observe(this, new Observer() { + @Override + public void onChanged(CaseCheckModel resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(requireContext(), "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(202104251); + } + } + }); } @Override public void onResume() { - obtainCheckCaseList(); super.onResume(); + pageIndex = 1; + obtainCheckCaseList(); } private void obtainCheckCaseList() { @@ -80,31 +114,6 @@ obtainCheckCaseList(); } }); - - caseViewModel.caseCheckModel.observe(this, new Observer() { - @Override - public void onChanged(CaseCheckModel resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(requireContext(), "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(202104251); - } - } - }); } private final Handler.Callback callback = new Handler.Callback() { @@ -125,16 +134,42 @@ }); } else { viewBinding.emptyView.hide(); - adapter = new CheckCaseListAdapter(requireContext(), dataBeans); - viewBinding.caseRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new CheckCaseListAdapter.OnItemClickListener() { + adapter = new NormalRecyclerAdapter(R.layout.item_case_rv_l, dataBeans) { @Override - public void onClick(int position) { - ContextHub.navigatePageTo( - requireContext(), - CaseCheckDetailActivity.class, - dataBeans.get(position).getId() - ); + public void convertView(ViewHolder viewHolder, int position, CaseCheckModel.DataModel.RowsModel item) { + String fileIdProcess = item.getFileIdProcess(); + if (!TextUtils.isEmpty(fileIdProcess)) { + String[] split = fileIdProcess.split(","); + String firstImage = split[0]; + if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Drawable drawable = Glide.with(requireContext()).load(StringHelper.appendCompleteURL(firstImage)).submit().get(); + runOnUiThread(new Runnable() { + @Override + public void run() { + viewHolder.setImageResource(R.id.caseImageView, drawable); + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + } + } + viewHolder.setText(R.id.caseTitleView, StringHub.filterSpaceOrEnter(item.getDescription())) + .setText(R.id.casePlaceView, "发生地点:" + StringHub.filterSpaceOrEnter(item.getFieldintro())) + .setText(R.id.caseTimeView, "上报时间:" + item.getReportTime()); + } + }; + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, CaseCheckModel.DataModel.RowsModel rowsModel) { + ContextHub.navigatePageTo(requireContext(), CheckDetailActivity.class, rowsModel.getId()); } }); } diff --git a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java index 3e2d904..6775b65 100644 --- a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java @@ -1,19 +1,27 @@ package com.casic.dcms.fragment.check; +import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; + +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.casic.dcms.adapter.CheckCaseListAdapter; +import com.bumptech.glide.Glide; +import com.casic.dcms.R; import com.casic.dcms.databinding.FragmentCheckCaseBinding; -import com.casic.dcms.model.check.CaseCheckModel; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.view.check.CaseCheckedDetailActivity; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.check.CheckedDetailActivity; import com.casic.dcms.vm.CaseViewModel; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseFragment; import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.StringHub; @@ -24,14 +32,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class CaseCheckedFragment extends AndroidxBaseFragment { private static final String TAG = "CaseCheckedFragment"; private WeakReferenceHandler weakReferenceHandler; private CaseViewModel caseViewModel; - private CheckCaseListAdapter adapter; - private List dataBeans = new ArrayList<>(); + private NormalRecyclerAdapter adapter; + private List dataBeans = new ArrayList<>(); private int pageIndex = 1; private boolean isRefresh, isLoadMore = false; @@ -50,12 +59,37 @@ protected void initData() { weakReferenceHandler = new WeakReferenceHandler(callback); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.caseCheckModel.observe(this, new Observer() { + @Override + public void onChanged(CaseCheckModel resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(requireContext(), "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(202104252); + } + } + }); } @Override public void onResume() { - obtainCheckCaseList(); super.onResume(); + pageIndex = 1; + obtainCheckCaseList(); } private void obtainCheckCaseList() { @@ -81,32 +115,6 @@ obtainCheckCaseList(); } }); - - caseViewModel.caseCheckModel.observe(this, new Observer() { - - @Override - public void onChanged(CaseCheckModel resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(requireContext(), "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(202104252); - } - } - }); } private final Handler.Callback callback = new Handler.Callback() { @@ -127,16 +135,42 @@ }); } else { viewBinding.emptyView.hide(); - adapter = new CheckCaseListAdapter(requireContext(), dataBeans); - viewBinding.caseRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new CheckCaseListAdapter.OnItemClickListener() { + adapter = new NormalRecyclerAdapter(R.layout.item_case_rv_l, dataBeans) { @Override - public void onClick(int position) { - ContextHub.navigatePageTo( - requireContext(), - CaseCheckedDetailActivity.class, - dataBeans.get(position).getId() - ); + public void convertView(ViewHolder viewHolder, int position, CaseCheckModel.DataModel.RowsModel item) { + String fileIdProcess = item.getFileIdProcess(); + if (!TextUtils.isEmpty(fileIdProcess)) { + String[] split = fileIdProcess.split(","); + String firstImage = split[0]; + if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Drawable drawable = Glide.with(requireContext()).load(StringHelper.appendCompleteURL(firstImage)).submit().get(); + runOnUiThread(new Runnable() { + @Override + public void run() { + viewHolder.setImageResource(R.id.caseImageView, drawable); + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + } + } + viewHolder.setText(R.id.caseTitleView, StringHub.filterSpaceOrEnter(item.getDescription())) + .setText(R.id.casePlaceView, "发生地点:" + StringHub.filterSpaceOrEnter(item.getFieldintro())) + .setText(R.id.caseTimeView, "上报时间:" + item.getReportTime()); + } + }; + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, CaseCheckModel.DataModel.RowsModel rowsModel) { + ContextHub.navigatePageTo(requireContext(), CheckedDetailActivity.class, rowsModel.getId()); } }); } diff --git a/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java b/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java new file mode 100644 index 0000000..550a1fe --- /dev/null +++ b/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java @@ -0,0 +1,358 @@ +package com.casic.dcms.model; + +import java.util.List; + +/** + * 核查-已办/待办共用一个Model + */ +public class CaseCheckModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String isPostpone; + private String description; + private String source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private String caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String lng; + private String isOvertime; + private String currRoleName; + private String fileIdVerify; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String taskName; + private String sourceName; + private String fileIdProcess; + private String reportTime; + private String onedeptName; + + public String getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(String isPostpone) { + this.isPostpone = isPostpone; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getCaseState() { + return caseState; + } + + public void setCaseState(String caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getFileIdVerify() { + return fileIdVerify; + } + + public void setFileIdVerify(String fileIdVerify) { + this.fileIdVerify = fileIdVerify; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getTaskName() { + return taskName; + } + + public void setTaskName(String taskName) { + this.taskName = taskName; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getFileIdProcess() { + return fileIdProcess; + } + + public void setFileIdProcess(String fileIdProcess) { + this.fileIdProcess = fileIdProcess; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java b/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java deleted file mode 100644 index 854e2fe..0000000 --- a/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java +++ /dev/null @@ -1,358 +0,0 @@ -package com.casic.dcms.model.check; - -import java.util.List; - -/** - * 核查-已办/待办共用一个Bean - */ -public class CaseCheckModel { - - private int code; - private DataDTO data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataDTO getData() { - return data; - } - - public void setData(DataDTO data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataDTO { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsDTO { - private int isPostpone; - private String description; - private int source; - private String eorcName; - private String casetypeDetailName; - private String remainingTime; - private String casetypeName; - private String currUserId; - private String currUserName; - private String processId; - private int caseState; - private String id; - private String shopId; - private String fieldintro; - private String lat; - private String caseStateName; - private String lng; - private String isOvertime; - private String currRoleName; - private String fileIdVerify; - private String casetypeDetailCode; - private String onedeptid; - private String eorc; - private String currRoleId; - private String caseid; - private String casetypeCode; - private String nodeLimittime; - private String taskName; - private String sourceName; - private String fileIdProcess; - private String reportTime; - private String onedeptName; - - public int getIsPostpone() { - return isPostpone; - } - - public void setIsPostpone(int isPostpone) { - this.isPostpone = isPostpone; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public int getSource() { - return source; - } - - public void setSource(int source) { - this.source = source; - } - - public String getEorcName() { - return eorcName; - } - - public void setEorcName(String eorcName) { - this.eorcName = eorcName; - } - - public String getCasetypeDetailName() { - return casetypeDetailName; - } - - public void setCasetypeDetailName(String casetypeDetailName) { - this.casetypeDetailName = casetypeDetailName; - } - - public String getRemainingTime() { - return remainingTime; - } - - public void setRemainingTime(String remainingTime) { - this.remainingTime = remainingTime; - } - - public String getCasetypeName() { - return casetypeName; - } - - public void setCasetypeName(String casetypeName) { - this.casetypeName = casetypeName; - } - - public String getCurrUserId() { - return currUserId; - } - - public void setCurrUserId(String currUserId) { - this.currUserId = currUserId; - } - - public String getCurrUserName() { - return currUserName; - } - - public void setCurrUserName(String currUserName) { - this.currUserName = currUserName; - } - - public String getProcessId() { - return processId; - } - - public void setProcessId(String processId) { - this.processId = processId; - } - - public int getCaseState() { - return caseState; - } - - public void setCaseState(int caseState) { - this.caseState = caseState; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getShopId() { - return shopId; - } - - public void setShopId(String shopId) { - this.shopId = shopId; - } - - public String getFieldintro() { - return fieldintro; - } - - public void setFieldintro(String fieldintro) { - this.fieldintro = fieldintro; - } - - public String getLat() { - return lat; - } - - public void setLat(String lat) { - this.lat = lat; - } - - public String getCaseStateName() { - return caseStateName; - } - - public void setCaseStateName(String caseStateName) { - this.caseStateName = caseStateName; - } - - public String getLng() { - return lng; - } - - public void setLng(String lng) { - this.lng = lng; - } - - public String getIsOvertime() { - return isOvertime; - } - - public void setIsOvertime(String isOvertime) { - this.isOvertime = isOvertime; - } - - public String getCurrRoleName() { - return currRoleName; - } - - public void setCurrRoleName(String currRoleName) { - this.currRoleName = currRoleName; - } - - public String getFileIdVerify() { - return fileIdVerify; - } - - public void setFileIdVerify(String fileIdVerify) { - this.fileIdVerify = fileIdVerify; - } - - public String getCasetypeDetailCode() { - return casetypeDetailCode; - } - - public void setCasetypeDetailCode(String casetypeDetailCode) { - this.casetypeDetailCode = casetypeDetailCode; - } - - public String getOnedeptid() { - return onedeptid; - } - - public void setOnedeptid(String onedeptid) { - this.onedeptid = onedeptid; - } - - public String getEorc() { - return eorc; - } - - public void setEorc(String eorc) { - this.eorc = eorc; - } - - public String getCurrRoleId() { - return currRoleId; - } - - public void setCurrRoleId(String currRoleId) { - this.currRoleId = currRoleId; - } - - public String getCaseid() { - return caseid; - } - - public void setCaseid(String caseid) { - this.caseid = caseid; - } - - public String getCasetypeCode() { - return casetypeCode; - } - - public void setCasetypeCode(String casetypeCode) { - this.casetypeCode = casetypeCode; - } - - public String getNodeLimittime() { - return nodeLimittime; - } - - public void setNodeLimittime(String nodeLimittime) { - this.nodeLimittime = nodeLimittime; - } - - public String getTaskName() { - return taskName; - } - - public void setTaskName(String taskName) { - this.taskName = taskName; - } - - public String getSourceName() { - return sourceName; - } - - public void setSourceName(String sourceName) { - this.sourceName = sourceName; - } - - public String getFileIdProcess() { - return fileIdProcess; - } - - public void setFileIdProcess(String fileIdProcess) { - this.fileIdProcess = fileIdProcess; - } - - public String getReportTime() { - return reportTime; - } - - public void setReportTime(String reportTime) { - this.reportTime = reportTime; - } - - public String getOnedeptName() { - return onedeptName; - } - - public void setOnedeptName(String onedeptName) { - this.onedeptName = onedeptName; - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java b/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java index cd3e026..d0888bc 100644 --- a/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java @@ -14,10 +14,10 @@ import com.casic.dcms.R; public class NotificationHelper { - private Context mContext; + private final Context mContext; @SuppressLint("StaticFieldLeak") - private static NotificationHelper notificationHelper; - private NotificationManager notificationManager; + private static volatile NotificationHelper notificationHelper; + private final NotificationManager notificationManager; private NotificationHelper(Context context) { this.mContext = context; @@ -45,10 +45,8 @@ //创建渠道 String id = name + "_DefaultChannel"; NotificationChannel mChannel = new NotificationChannel(id, name, NotificationManager.IMPORTANCE_HIGH); -// mChannel.setSound(Uri.parse(""), Notification.AUDIO_ATTRIBUTES_DEFAULT); mChannel.setShowBadge(true); - mChannel.enableVibration(true); - mChannel.setVibrationPattern(new long[]{100, 200, 300}); + mChannel.enableVibration(false); mChannel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);//设置锁屏可见 notificationManager.createNotificationChannel(mChannel); builder = new Notification.Builder(mContext, id); diff --git a/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java index d7bf511..691dfd5 100644 --- a/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java +++ b/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java @@ -4,20 +4,22 @@ import android.graphics.Color; import android.view.View; -import androidx.core.content.ContextCompat; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; import com.casic.dcms.R; import com.casic.dcms.databinding.ActivityCaseProcessBinding; import com.casic.dcms.model.CaseProcessBean; +import com.casic.dcms.utils.DialogHelper; import com.casic.dcms.vm.CommonDataViewModel; import com.gyf.immersionbar.ImmersionBar; import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.IntHub; import com.pengxh.androidx.lite.utils.Constant; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.vm.LoadState; import java.util.ArrayList; import java.util.List; @@ -30,8 +32,8 @@ @Override protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); viewBinding.titleBarLayout.titleView.setText("处理记录"); viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); @@ -39,7 +41,16 @@ @Override protected void observeRequestState() { - + commonDataViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override @@ -47,10 +58,6 @@ String processId = getIntent().getStringExtra(Constant.INTENT_PARAM); commonDataViewModel = new ViewModelProvider(this).get(CommonDataViewModel.class); commonDataViewModel.obtainCaseProcess(processId); - } - - @Override - protected void initEvent() { commonDataViewModel.caseProcessModel.observe(this, new Observer() { @Override public void onChanged(CaseProcessBean resultBean) { @@ -91,4 +98,9 @@ } }); } + + @Override + protected void initEvent() { + + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java deleted file mode 100644 index 30585d5..0000000 --- a/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java +++ /dev/null @@ -1,353 +0,0 @@ -package com.casic.dcms.view.check; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; - -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.databinding.ActivityCaseCheckDetailBinding; -import com.casic.dcms.model.ActionResultBean; -import com.casic.dcms.model.CaseDetailBean; -import com.casic.dcms.model.CaseNextNodeBean; -import com.casic.dcms.utils.DialogHelper; -import com.casic.dcms.utils.MapHelper; -import com.casic.dcms.utils.PictureSelectorHelper; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.callback.ISelectorListener; -import com.casic.dcms.view.BigImageActivity; -import com.casic.dcms.vm.CaseOperateViewModel; -import com.casic.dcms.vm.CaseViewModel; -import com.casic.dcms.vm.NodeViewModel; -import com.casic.dcms.vm.UploadViewModel; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.entity.LocalMedia; -import com.pengxh.androidx.lite.adapter.EditableImageAdapter; -import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.hub.ContextHub; -import com.pengxh.androidx.lite.hub.StringHub; -import com.pengxh.androidx.lite.utils.Constant; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; -import com.pengxh.androidx.lite.vm.LoadState; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import cn.jzvd.Jzvd; - -public class CaseCheckDetailActivity extends AndroidxBaseActivity { - - private final Context context = CaseCheckDetailActivity.this; - private final ArrayList realPaths = new ArrayList<>(); //真实图片路径 - private final ArrayList imageList = new ArrayList<>(); //上传到服务器的数据集 - private CaseViewModel caseViewModel; - private UploadViewModel uploadViewModel; - private NodeViewModel nodeViewModel; - private CaseOperateViewModel operateViewModel; - private String id; - private String changeState; - private EditableImageAdapter checkImageAdapter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - - viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - } - - @Override - protected void observeRequestState() { - - } - - @Override - protected void initData() { - id = getIntent().getStringExtra(Constant.INTENT_PARAM); - caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); - caseViewModel.obtainCaseDetail(id); - - uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); - nodeViewModel = new ViewModelProvider(this).get(NodeViewModel.class); - operateViewModel = new ViewModelProvider(this).get(CaseOperateViewModel.class); - - checkImageAdapter = new EditableImageAdapter(this, 3, 13); - viewBinding.addImageRecyclerView.setAdapter(checkImageAdapter); - } - - @Override - protected void initEvent() { - caseViewModel.caseDetailModel.observe(this, new Observer() { - @Override - public void onChanged(CaseDetailBean resultBean) { - if (resultBean.getCode() == 200) { - data = resultBean.getData().get(0); - viewBinding.caseNumberView.setText(data.getCaseid()); - viewBinding.caseTypeView.setText(data.getEorcName()); - viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); - viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); - viewBinding.caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); - viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); - viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); - viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - viewBinding.caseStartTimeView.setText(data.getCreateTime()); - viewBinding.caseEndTimeView.setText(data.getNodeLimittime()); - /** - * 图片 - */ - //核实照片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.imageGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - viewBinding.audioPlayerView.setVisibility(View.VISIBLE); - viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - viewBinding.videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - viewBinding.videoPlayerView.setUp( - videoUrl, - StringHub.filterSpaceOrEnter(data.getDescription()), - Jzvd.SCREEN_NORMAL - ); - //设置第一帧为封面 - Glide.with(context) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(viewBinding.videoPlayerView.posterImageView); - } - - //处理照片 - String processImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(processImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = processImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - viewBinding.caseHandleResultView.setText(data.getProcessRemarks().equals("") ? "无处理意见" : data.getProcessRemarks()); - //TODO 服务器返回数据缺少此字段,暂时注掉 -// viewBinding.caseHandleTimeView.setText(); - } - } - }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "获取数据中..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); - } - }); - - //图片九宫格事件处理 - checkImageAdapter.setOnItemClickListener(new EditableImageAdapter.OnItemClickListener() { - @Override - public void onAddImageClick() { - PictureSelectorHelper.selectPicture(context, new ISelectorListener() { - @Override - public void onSuccess(ArrayList result) { - if (result.size() == 1) { - uploadViewModel.uploadImage(new File(result.get(0).getRealPath())); - } else { - for (LocalMedia localMedia : result) { - uploadViewModel.uploadImage(new File(localMedia.getRealPath())); - } - } - } - }); - } - - @Override - public void onItemClick(int position) { - if (realPaths.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, realPaths); - } - } - - @Override - public void onItemLongClick(View view, int position) { - imageList.remove(position); - checkImageAdapter.deleteImage(position); - } - }); - uploadViewModel.imageModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - if (checkImageAdapter.getItemCount() <= 3) { - String url = resultBean.getData(); - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - checkImageAdapter.setupImage(realPaths); - } else { - StringHub.show(context, "最多只能上传3张图片"); - } - } - } - }); - uploadViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.caseCheckLayout.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - nodeViewModel.obtainNextNode(String.valueOf(data.getCaseState())); - } - }); - nodeViewModel.nodeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseNextNodeBean resultBean) { - if (resultBean.getCode() == 200) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(context); - sheetBuilder.setTitle("核实情况"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - viewBinding.caseCheckOptView.setText(dataBean.getNextOperation()); - changeState = String.valueOf(dataBean.getNextState()); - } - }).build().show(); - } else { - StringHub.show(context, "该案卷无下级流转节点"); - } - } - }); - - viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - //案卷提交 - String remarks = viewBinding.caseCheckOptView.getText().toString(); - if (TextUtils.isEmpty(remarks)) { - StringHub.show(context, "核查意见不能为空"); - return; - } - if (TextUtils.isEmpty(changeState)) { - StringHub.show(context, "核查情况还未选择"); - return; - } - operateViewModel.checkCase(data.getProcessId(), id, - String.valueOf(data.getCaseState()), changeState, remarks, - StringHelper.reformatURL(imageList) - ); - } - }); - operateViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "案卷核查中,请稍后..."); - } else if (loadState == LoadState.Success) { - DialogHelper.dismissLoadingDialog(); - finish(); - } else { - StringHub.show(context, "核查失败,请重试"); - DialogHelper.dismissLoadingDialog(); - } - } - }); - } - - @Override - public void onDestroy() { - viewBinding.audioPlayerView.release(); - super.onDestroy(); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - public void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CaseCheckedDetailActivity.java deleted file mode 100644 index 0ffce7d..0000000 --- a/app/src/main/java/com/casic/dcms/view/check/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,228 +0,0 @@ -package com.casic.dcms.view.check; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; - -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.databinding.ActivityCaseCheckedDetailBinding; -import com.casic.dcms.model.CaseDetailBean; -import com.casic.dcms.utils.DialogHelper; -import com.casic.dcms.utils.MapHelper; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.view.BigImageActivity; -import com.casic.dcms.view.CaseProcessActivity; -import com.casic.dcms.vm.CaseViewModel; -import com.gyf.immersionbar.ImmersionBar; -import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.hub.ContextHub; -import com.pengxh.androidx.lite.hub.StringHub; -import com.pengxh.androidx.lite.utils.Constant; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; -import com.pengxh.androidx.lite.vm.LoadState; - -import java.util.ArrayList; - -import cn.jzvd.Jzvd; - -public class CaseCheckedDetailActivity extends AndroidxBaseActivity { - - private final Context context = CaseCheckedDetailActivity.this; - private CaseViewModel caseViewModel; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - - viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - } - - @Override - protected void observeRequestState() { - - } - - @Override - protected void initData() { - String id = getIntent().getStringExtra(Constant.INTENT_PARAM); - caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); - caseViewModel.obtainCaseDetail(id); - } - - @Override - protected void initEvent() { - caseViewModel.caseDetailModel.observe(this, new Observer() { - @Override - public void onChanged(CaseDetailBean resultBean) { - if (resultBean.getCode() == 200) { - data = resultBean.getData().get(0); - viewBinding.caseNumberView.setText(data.getCaseid()); - viewBinding.caseTypeView.setText(data.getEorcName()); - viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); - viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); - viewBinding.caseCommunityView.setText(data.getCommunityName()); - viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); - viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.imageGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //处理图片 - 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)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - viewBinding.audioPlayerView.setVisibility(View.VISIBLE); - viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - viewBinding.videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - viewBinding.videoPlayerView.setUp( - videoUrl, - StringHub.filterSpaceOrEnter(data.getDescription()), - Jzvd.SCREEN_NORMAL - ); - //设置第一帧为封面 - Glide.with(context) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(viewBinding.videoPlayerView.posterImageView); - } - } - } - }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "获取数据中..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); - } - }); - - viewBinding.handleLayout.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - ContextHub.navigatePageTo(context, CaseProcessActivity.class, data.getProcessId()); - } - }); - } - - @Override - protected void onDestroy() { - viewBinding.audioPlayerView.release(); - super.onDestroy(); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java b/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java index 76e3203..2c76426 100644 --- a/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java @@ -2,7 +2,6 @@ import android.widget.LinearLayout; -import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; import com.casic.dcms.R; @@ -14,6 +13,7 @@ import com.casic.dcms.utils.LocaleConstant; import com.gyf.immersionbar.ImmersionBar; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.IntHub; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; import java.util.ArrayList; @@ -28,8 +28,8 @@ @Override protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); viewBinding.titleBarLayout.titleView.setText("案卷核查"); viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); @@ -46,10 +46,10 @@ fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), LocaleConstant.CASE_PAGE_TITLES, fragmentList); - viewBinding.checkViewPager.setAdapter(adapter); + viewBinding.viewPager.setAdapter(adapter); //绑定TabLayout - viewBinding.checkTabLayout.setupWithViewPager(viewBinding.checkViewPager); - LinearLayout linearLayout = (LinearLayout) viewBinding.checkTabLayout.getChildAt(0); + viewBinding.topTabLayout.setupWithViewPager(viewBinding.viewPager); + LinearLayout linearLayout = (LinearLayout) viewBinding.topTabLayout.getChildAt(0); LinearLayoutHelper.setDivider(this, linearLayout); } diff --git a/app/src/main/java/com/casic/dcms/view/check/CheckDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CheckDetailActivity.java new file mode 100644 index 0000000..b9aeeb7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/view/check/CheckDetailActivity.java @@ -0,0 +1,356 @@ +package com.casic.dcms.view.check; + +import android.content.Context; +import android.text.TextUtils; +import android.view.View; +import android.widget.AdapterView; + +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.databinding.ActivityCheckDetailBinding; +import com.casic.dcms.model.ActionResultBean; +import com.casic.dcms.model.CaseDetailBean; +import com.casic.dcms.model.CaseNextNodeBean; +import com.casic.dcms.utils.DialogHelper; +import com.casic.dcms.utils.MapHelper; +import com.casic.dcms.utils.PictureSelectorHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.ISelectorListener; +import com.casic.dcms.view.BigImageActivity; +import com.casic.dcms.vm.CaseOperateViewModel; +import com.casic.dcms.vm.CaseViewModel; +import com.casic.dcms.vm.NodeViewModel; +import com.casic.dcms.vm.UploadViewModel; +import com.gyf.immersionbar.ImmersionBar; +import com.luck.picture.lib.entity.LocalMedia; +import com.pengxh.androidx.lite.adapter.EditableImageAdapter; +import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; +import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.ContextHub; +import com.pengxh.androidx.lite.hub.IntHub; +import com.pengxh.androidx.lite.hub.StringHub; +import com.pengxh.androidx.lite.utils.Constant; +import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.vm.LoadState; +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import cn.jzvd.Jzvd; + +public class CheckDetailActivity extends AndroidxBaseActivity { + + private final Context context = CheckDetailActivity.this; + private final ArrayList realPaths = new ArrayList<>(); //真实图片路径 + private final ArrayList imageList = new ArrayList<>(); //上传到服务器的数据集 + private CaseViewModel caseViewModel; + private UploadViewModel uploadViewModel; + private NodeViewModel nodeViewModel; + private CaseOperateViewModel operateViewModel; + private String id; + private String changeState; + private EditableImageAdapter checkImageAdapter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + + @Override + protected void setupTopBarLayout() { + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); + + viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); + viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); + } + + @Override + protected void observeRequestState() { + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + + uploadViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + + operateViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "案卷核查中,请稍后..."); + } else if (loadState == LoadState.Success) { + DialogHelper.dismissLoadingDialog(); + finish(); + } else { + StringHub.show(context, "核查失败,请重试"); + DialogHelper.dismissLoadingDialog(); + } + } + }); + } + + @Override + protected void initData() { + id = getIntent().getStringExtra(Constant.INTENT_PARAM); + caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.obtainCaseDetail(id); + caseViewModel.caseDetailModel.observe(this, new Observer() { + @Override + public void onChanged(CaseDetailBean resultBean) { + if (resultBean.getCode() == 200) { + data = resultBean.getData().get(0); + viewBinding.caseNumberView.setText(data.getCaseid()); + viewBinding.caseTypeView.setText(data.getEorcName()); + viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); + viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); + viewBinding.caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); + viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); + viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); + viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); + viewBinding.caseStartTimeView.setText(data.getCreateTime()); + viewBinding.caseEndTimeView.setText(data.getNodeLimittime()); + /** + * 图片 + */ + //核实照片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.imageGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + viewBinding.audioPlayerView.setVisibility(View.VISIBLE); + viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(videoFile)) { + viewBinding.videoPlayerView.setVisibility(View.VISIBLE); + String videoUrl = StringHelper.appendCompleteURL(videoFile); + viewBinding.videoPlayerView.setUp( + videoUrl, + StringHub.filterSpaceOrEnter(data.getDescription()), + Jzvd.SCREEN_NORMAL + ); + //设置第一帧为封面 + Glide.with(context) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(viewBinding.videoPlayerView.posterImageView); + } + + //处理照片 + String processImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(processImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = processImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.handleGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + viewBinding.caseHandleResultView.setText(data.getProcessRemarks().equals("") ? "无处理意见" : data.getProcessRemarks()); + //TODO 服务器返回数据缺少此字段,暂时注掉 +// viewBinding.caseHandleTimeView.setText(); + } + } + }); + + uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); + uploadViewModel.imageModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + if (checkImageAdapter.getItemCount() <= 3) { + String url = resultBean.getData(); + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + checkImageAdapter.setupImage(realPaths); + } else { + StringHub.show(context, "最多只能上传3张图片"); + } + } + } + }); + + nodeViewModel = new ViewModelProvider(this).get(NodeViewModel.class); + nodeViewModel.nodeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseNextNodeBean resultBean) { + if (resultBean.getCode() == 200) { + List dataBeans = resultBean.getData(); + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(context); + sheetBuilder.setTitle("核实情况"); + for (CaseNextNodeBean.DataBean dataBean : dataBeans) { + sheetBuilder.addItem(dataBean.getNextOperation()); + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); + viewBinding.caseCheckOptView.setText(dataBean.getNextOperation()); + changeState = String.valueOf(dataBean.getNextState()); + } + }).build().show(); + } else { + StringHub.show(context, "该案卷无下级流转节点"); + } + } + }); + + operateViewModel = new ViewModelProvider(this).get(CaseOperateViewModel.class); + + checkImageAdapter = new EditableImageAdapter(this, 3, 13); + viewBinding.addImageRecyclerView.setAdapter(checkImageAdapter); + } + + @Override + protected void initEvent() { + viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); + } + }); + + //图片九宫格事件处理 + checkImageAdapter.setOnItemClickListener(new EditableImageAdapter.OnItemClickListener() { + @Override + public void onAddImageClick() { + PictureSelectorHelper.selectPicture(context, new ISelectorListener() { + @Override + public void onSuccess(ArrayList result) { + if (result.size() == 1) { + uploadViewModel.uploadImage(new File(result.get(0).getRealPath())); + } else { + for (LocalMedia localMedia : result) { + uploadViewModel.uploadImage(new File(localMedia.getRealPath())); + } + } + } + }); + } + + @Override + public void onItemClick(int position) { + if (realPaths.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, realPaths); + } + } + + @Override + public void onItemLongClick(View view, int position) { + imageList.remove(position); + checkImageAdapter.deleteImage(position); + } + }); + + + viewBinding.caseCheckLayout.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + nodeViewModel.obtainNextNode(String.valueOf(data.getCaseState())); + } + }); + + viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + //案卷提交 + String remarks = viewBinding.caseCheckOptView.getText().toString(); + if (TextUtils.isEmpty(remarks)) { + StringHub.show(context, "核查意见不能为空"); + return; + } + if (TextUtils.isEmpty(changeState)) { + StringHub.show(context, "核查情况还未选择"); + return; + } + operateViewModel.checkCase(data.getProcessId(), id, + String.valueOf(data.getCaseState()), changeState, remarks, + StringHelper.reformatURL(imageList) + ); + } + }); + } + + @Override + public void onDestroy() { + viewBinding.audioPlayerView.release(); + super.onDestroy(); + } + + @Override + public void onBackPressed() { + if (Jzvd.backPress()) { + return; + } + super.onBackPressed(); + } + + @Override + public void onPause() { + super.onPause(); + Jzvd.releaseAllVideos(); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CheckedDetailActivity.java new file mode 100644 index 0000000..14e554b --- /dev/null +++ b/app/src/main/java/com/casic/dcms/view/check/CheckedDetailActivity.java @@ -0,0 +1,226 @@ +package com.casic.dcms.view.check; + +import android.content.Context; +import android.text.TextUtils; +import android.view.View; +import android.widget.AdapterView; + +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.databinding.ActivityCheckedDetailBinding; +import com.casic.dcms.model.CaseDetailBean; +import com.casic.dcms.utils.DialogHelper; +import com.casic.dcms.utils.MapHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.BigImageActivity; +import com.casic.dcms.view.CaseProcessActivity; +import com.casic.dcms.vm.CaseViewModel; +import com.gyf.immersionbar.ImmersionBar; +import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; +import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.ContextHub; +import com.pengxh.androidx.lite.hub.IntHub; +import com.pengxh.androidx.lite.hub.StringHub; +import com.pengxh.androidx.lite.utils.Constant; +import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.vm.LoadState; + +import java.util.ArrayList; + +import cn.jzvd.Jzvd; + +public class CheckedDetailActivity extends AndroidxBaseActivity { + + private final Context context = CheckedDetailActivity.this; + private CaseViewModel caseViewModel; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + + @Override + protected void setupTopBarLayout() { + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); + + viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); + viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); + } + + @Override + protected void observeRequestState() { + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + } + + @Override + protected void initData() { + String id = getIntent().getStringExtra(Constant.INTENT_PARAM); + caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.obtainCaseDetail(id); + caseViewModel.caseDetailModel.observe(this, new Observer() { + @Override + public void onChanged(CaseDetailBean resultBean) { + if (resultBean.getCode() == 200) { + data = resultBean.getData().get(0); + viewBinding.caseNumberView.setText(data.getCaseid()); + viewBinding.caseTypeView.setText(data.getEorcName()); + viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); + viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); + viewBinding.caseCommunityView.setText(data.getCommunityName()); + viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); + viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); + viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); + + //核实图片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.imageGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //处理图片 + 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)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.handleGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //核查图片 + String checkImages = data.getFileIdCheck(); + if (!TextUtils.isEmpty(checkImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = checkImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.checkGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + viewBinding.audioPlayerView.setVisibility(View.VISIBLE); + viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(videoFile)) { + viewBinding.videoPlayerView.setVisibility(View.VISIBLE); + String videoUrl = StringHelper.appendCompleteURL(videoFile); + viewBinding.videoPlayerView.setUp( + videoUrl, + StringHub.filterSpaceOrEnter(data.getDescription()), + Jzvd.SCREEN_NORMAL + ); + //设置第一帧为封面 + Glide.with(context) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(viewBinding.videoPlayerView.posterImageView); + } + } + } + }); + } + + @Override + protected void initEvent() { + viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); + } + }); + + viewBinding.handleLayout.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + ContextHub.navigatePageTo(context, CaseProcessActivity.class, data.getProcessId()); + } + }); + } + + @Override + protected void onDestroy() { + viewBinding.audioPlayerView.release(); + super.onDestroy(); + } + + @Override + public void onBackPressed() { + if (Jzvd.backPress()) { + return; + } + super.onBackPressed(); + } + + @Override + protected void onPause() { + super.onPause(); + Jzvd.releaseAllVideos(); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/map/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/view/map/CaseOnMapActivity.java index 5a85a88..c662347 100644 --- a/app/src/main/java/com/casic/dcms/view/map/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/view/map/CaseOnMapActivity.java @@ -18,10 +18,10 @@ import com.casic.dcms.R; import com.casic.dcms.databinding.ActivityMapCaseBinding; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.model.CaseHandleBean; import com.casic.dcms.model.PointDataBean; import com.casic.dcms.model.VerifyCaseModel; -import com.casic.dcms.model.check.CaseCheckModel; import com.casic.dcms.utils.ArcGisMapCreator; import com.casic.dcms.utils.LocaleConstant; import com.casic.dcms.view.CaseDetailActivity; @@ -116,11 +116,11 @@ public void onChanged(CaseCheckModel resultBean) { clearPictureMarker(); if (resultBean.isSuccess()) { - List rowsBeans = resultBean.getData().getRows(); + List rowsBeans = resultBean.getData().getRows(); if (rowsBeans.size() >= 1) { List list = new ArrayList<>(); List pointList = new ArrayList<>(); - for (CaseCheckModel.DataDTO.RowsDTO bean : rowsBeans) { + for (CaseCheckModel.DataModel.RowsModel bean : rowsBeans) { String lng = bean.getLng(); String lat = bean.getLat(); if (TextUtils.isEmpty(lng) || TextUtils.isEmpty(lat)) { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b6a8d08..c78d07c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -64,8 +64,8 @@ - - + + diff --git a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java deleted file mode 100644 index 254f0cd..0000000 --- a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.casic.dcms.adapter; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.text.TextUtils; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.model.check.CaseCheckModel; -import com.casic.dcms.utils.StringHelper; -import com.pengxh.androidx.lite.hub.StringHub; -import com.qmuiteam.qmui.widget.QMUIRadiusImageView; - -import java.util.List; - -public class CheckCaseListAdapter extends RecyclerView.Adapter { - - private final Context context; - private final List dataBeans; - private final LayoutInflater layoutInflater; - - public CheckCaseListAdapter(Context context, List dataRows) { - this.context = context; - this.dataBeans = dataRows; - this.layoutInflater = LayoutInflater.from(context); - } - - @NonNull - @Override - public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - return new ItemViewHolder(layoutInflater.inflate(R.layout.item_case_rv_l, parent, false)); - } - - @Override - public void onBindViewHolder(@NonNull ItemViewHolder holder, @SuppressLint("RecyclerView") int position) { - holder.bindView(dataBeans.get(position)); - if (clickListener != null) { - holder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - clickListener.onClick(position); - } - }); - } - } - - @Override - public int getItemCount() { - return dataBeans.size(); - } - - class ItemViewHolder extends RecyclerView.ViewHolder { - - private final QMUIRadiusImageView caseImageView; - private final TextView caseTitleView; - private final TextView casePlaceView; - private final TextView caseTimeView; - - ItemViewHolder(@NonNull View itemView) { - super(itemView); - caseImageView = itemView.findViewById(R.id.caseImageView); - caseTitleView = itemView.findViewById(R.id.caseTitleView); - casePlaceView = itemView.findViewById(R.id.casePlaceView); - caseTimeView = itemView.findViewById(R.id.caseTimeView); - } - - void bindView(CaseCheckModel.DataDTO.RowsDTO rowsBean) { - //处理图片 - String fileIdProcess = rowsBean.getFileIdProcess(); - if (!TextUtils.isEmpty(fileIdProcess)) { - String[] split = fileIdProcess.split(","); - String firstImage = split[0]; - if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { - Glide.with(context).load(StringHelper.appendCompleteURL(firstImage)).into(caseImageView); - } - } - caseTitleView.setText(StringHub.filterSpaceOrEnter(rowsBean.getDescription())); - casePlaceView.setText("发生地点:" + StringHub.filterSpaceOrEnter(rowsBean.getFieldintro())); - caseTimeView.setText("上报时间:" + rowsBean.getReportTime()); - } - } - - private OnItemClickListener clickListener; - - public interface OnItemClickListener { - void onClick(int position); - } - - public void setOnItemClickListener(OnItemClickListener onItemClickListener) { - this.clickListener = onItemClickListener; - } -} diff --git a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java index 85cebc6..667981d 100644 --- a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java @@ -1,19 +1,27 @@ package com.casic.dcms.fragment.check; +import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; + +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.casic.dcms.adapter.CheckCaseListAdapter; +import com.bumptech.glide.Glide; +import com.casic.dcms.R; import com.casic.dcms.databinding.FragmentCheckCaseBinding; -import com.casic.dcms.model.check.CaseCheckModel; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.view.check.CaseCheckDetailActivity; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.check.CheckDetailActivity; import com.casic.dcms.vm.CaseViewModel; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseFragment; import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.StringHub; @@ -24,14 +32,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class CaseCheckFragment extends AndroidxBaseFragment { private static final String TAG = "CaseCheckFragment"; private WeakReferenceHandler weakReferenceHandler; private CaseViewModel caseViewModel; - private CheckCaseListAdapter adapter; - private List dataBeans = new ArrayList<>(); + private NormalRecyclerAdapter adapter; + private List dataBeans = new ArrayList<>(); private int pageIndex = 1; private boolean isRefresh, isLoadMore = false; @@ -49,12 +58,37 @@ protected void initData() { weakReferenceHandler = new WeakReferenceHandler(callback); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.caseCheckModel.observe(this, new Observer() { + @Override + public void onChanged(CaseCheckModel resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(requireContext(), "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(202104251); + } + } + }); } @Override public void onResume() { - obtainCheckCaseList(); super.onResume(); + pageIndex = 1; + obtainCheckCaseList(); } private void obtainCheckCaseList() { @@ -80,31 +114,6 @@ obtainCheckCaseList(); } }); - - caseViewModel.caseCheckModel.observe(this, new Observer() { - @Override - public void onChanged(CaseCheckModel resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(requireContext(), "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(202104251); - } - } - }); } private final Handler.Callback callback = new Handler.Callback() { @@ -125,16 +134,42 @@ }); } else { viewBinding.emptyView.hide(); - adapter = new CheckCaseListAdapter(requireContext(), dataBeans); - viewBinding.caseRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new CheckCaseListAdapter.OnItemClickListener() { + adapter = new NormalRecyclerAdapter(R.layout.item_case_rv_l, dataBeans) { @Override - public void onClick(int position) { - ContextHub.navigatePageTo( - requireContext(), - CaseCheckDetailActivity.class, - dataBeans.get(position).getId() - ); + public void convertView(ViewHolder viewHolder, int position, CaseCheckModel.DataModel.RowsModel item) { + String fileIdProcess = item.getFileIdProcess(); + if (!TextUtils.isEmpty(fileIdProcess)) { + String[] split = fileIdProcess.split(","); + String firstImage = split[0]; + if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Drawable drawable = Glide.with(requireContext()).load(StringHelper.appendCompleteURL(firstImage)).submit().get(); + runOnUiThread(new Runnable() { + @Override + public void run() { + viewHolder.setImageResource(R.id.caseImageView, drawable); + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + } + } + viewHolder.setText(R.id.caseTitleView, StringHub.filterSpaceOrEnter(item.getDescription())) + .setText(R.id.casePlaceView, "发生地点:" + StringHub.filterSpaceOrEnter(item.getFieldintro())) + .setText(R.id.caseTimeView, "上报时间:" + item.getReportTime()); + } + }; + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, CaseCheckModel.DataModel.RowsModel rowsModel) { + ContextHub.navigatePageTo(requireContext(), CheckDetailActivity.class, rowsModel.getId()); } }); } diff --git a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java index 3e2d904..6775b65 100644 --- a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java @@ -1,19 +1,27 @@ package com.casic.dcms.fragment.check; +import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; + +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.casic.dcms.adapter.CheckCaseListAdapter; +import com.bumptech.glide.Glide; +import com.casic.dcms.R; import com.casic.dcms.databinding.FragmentCheckCaseBinding; -import com.casic.dcms.model.check.CaseCheckModel; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.view.check.CaseCheckedDetailActivity; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.check.CheckedDetailActivity; import com.casic.dcms.vm.CaseViewModel; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseFragment; import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.StringHub; @@ -24,14 +32,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class CaseCheckedFragment extends AndroidxBaseFragment { private static final String TAG = "CaseCheckedFragment"; private WeakReferenceHandler weakReferenceHandler; private CaseViewModel caseViewModel; - private CheckCaseListAdapter adapter; - private List dataBeans = new ArrayList<>(); + private NormalRecyclerAdapter adapter; + private List dataBeans = new ArrayList<>(); private int pageIndex = 1; private boolean isRefresh, isLoadMore = false; @@ -50,12 +59,37 @@ protected void initData() { weakReferenceHandler = new WeakReferenceHandler(callback); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.caseCheckModel.observe(this, new Observer() { + @Override + public void onChanged(CaseCheckModel resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(requireContext(), "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(202104252); + } + } + }); } @Override public void onResume() { - obtainCheckCaseList(); super.onResume(); + pageIndex = 1; + obtainCheckCaseList(); } private void obtainCheckCaseList() { @@ -81,32 +115,6 @@ obtainCheckCaseList(); } }); - - caseViewModel.caseCheckModel.observe(this, new Observer() { - - @Override - public void onChanged(CaseCheckModel resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(requireContext(), "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(202104252); - } - } - }); } private final Handler.Callback callback = new Handler.Callback() { @@ -127,16 +135,42 @@ }); } else { viewBinding.emptyView.hide(); - adapter = new CheckCaseListAdapter(requireContext(), dataBeans); - viewBinding.caseRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new CheckCaseListAdapter.OnItemClickListener() { + adapter = new NormalRecyclerAdapter(R.layout.item_case_rv_l, dataBeans) { @Override - public void onClick(int position) { - ContextHub.navigatePageTo( - requireContext(), - CaseCheckedDetailActivity.class, - dataBeans.get(position).getId() - ); + public void convertView(ViewHolder viewHolder, int position, CaseCheckModel.DataModel.RowsModel item) { + String fileIdProcess = item.getFileIdProcess(); + if (!TextUtils.isEmpty(fileIdProcess)) { + String[] split = fileIdProcess.split(","); + String firstImage = split[0]; + if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Drawable drawable = Glide.with(requireContext()).load(StringHelper.appendCompleteURL(firstImage)).submit().get(); + runOnUiThread(new Runnable() { + @Override + public void run() { + viewHolder.setImageResource(R.id.caseImageView, drawable); + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + } + } + viewHolder.setText(R.id.caseTitleView, StringHub.filterSpaceOrEnter(item.getDescription())) + .setText(R.id.casePlaceView, "发生地点:" + StringHub.filterSpaceOrEnter(item.getFieldintro())) + .setText(R.id.caseTimeView, "上报时间:" + item.getReportTime()); + } + }; + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, CaseCheckModel.DataModel.RowsModel rowsModel) { + ContextHub.navigatePageTo(requireContext(), CheckedDetailActivity.class, rowsModel.getId()); } }); } diff --git a/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java b/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java new file mode 100644 index 0000000..550a1fe --- /dev/null +++ b/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java @@ -0,0 +1,358 @@ +package com.casic.dcms.model; + +import java.util.List; + +/** + * 核查-已办/待办共用一个Model + */ +public class CaseCheckModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String isPostpone; + private String description; + private String source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private String caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String lng; + private String isOvertime; + private String currRoleName; + private String fileIdVerify; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String taskName; + private String sourceName; + private String fileIdProcess; + private String reportTime; + private String onedeptName; + + public String getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(String isPostpone) { + this.isPostpone = isPostpone; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getCaseState() { + return caseState; + } + + public void setCaseState(String caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getFileIdVerify() { + return fileIdVerify; + } + + public void setFileIdVerify(String fileIdVerify) { + this.fileIdVerify = fileIdVerify; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getTaskName() { + return taskName; + } + + public void setTaskName(String taskName) { + this.taskName = taskName; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getFileIdProcess() { + return fileIdProcess; + } + + public void setFileIdProcess(String fileIdProcess) { + this.fileIdProcess = fileIdProcess; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java b/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java deleted file mode 100644 index 854e2fe..0000000 --- a/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java +++ /dev/null @@ -1,358 +0,0 @@ -package com.casic.dcms.model.check; - -import java.util.List; - -/** - * 核查-已办/待办共用一个Bean - */ -public class CaseCheckModel { - - private int code; - private DataDTO data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataDTO getData() { - return data; - } - - public void setData(DataDTO data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataDTO { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsDTO { - private int isPostpone; - private String description; - private int source; - private String eorcName; - private String casetypeDetailName; - private String remainingTime; - private String casetypeName; - private String currUserId; - private String currUserName; - private String processId; - private int caseState; - private String id; - private String shopId; - private String fieldintro; - private String lat; - private String caseStateName; - private String lng; - private String isOvertime; - private String currRoleName; - private String fileIdVerify; - private String casetypeDetailCode; - private String onedeptid; - private String eorc; - private String currRoleId; - private String caseid; - private String casetypeCode; - private String nodeLimittime; - private String taskName; - private String sourceName; - private String fileIdProcess; - private String reportTime; - private String onedeptName; - - public int getIsPostpone() { - return isPostpone; - } - - public void setIsPostpone(int isPostpone) { - this.isPostpone = isPostpone; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public int getSource() { - return source; - } - - public void setSource(int source) { - this.source = source; - } - - public String getEorcName() { - return eorcName; - } - - public void setEorcName(String eorcName) { - this.eorcName = eorcName; - } - - public String getCasetypeDetailName() { - return casetypeDetailName; - } - - public void setCasetypeDetailName(String casetypeDetailName) { - this.casetypeDetailName = casetypeDetailName; - } - - public String getRemainingTime() { - return remainingTime; - } - - public void setRemainingTime(String remainingTime) { - this.remainingTime = remainingTime; - } - - public String getCasetypeName() { - return casetypeName; - } - - public void setCasetypeName(String casetypeName) { - this.casetypeName = casetypeName; - } - - public String getCurrUserId() { - return currUserId; - } - - public void setCurrUserId(String currUserId) { - this.currUserId = currUserId; - } - - public String getCurrUserName() { - return currUserName; - } - - public void setCurrUserName(String currUserName) { - this.currUserName = currUserName; - } - - public String getProcessId() { - return processId; - } - - public void setProcessId(String processId) { - this.processId = processId; - } - - public int getCaseState() { - return caseState; - } - - public void setCaseState(int caseState) { - this.caseState = caseState; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getShopId() { - return shopId; - } - - public void setShopId(String shopId) { - this.shopId = shopId; - } - - public String getFieldintro() { - return fieldintro; - } - - public void setFieldintro(String fieldintro) { - this.fieldintro = fieldintro; - } - - public String getLat() { - return lat; - } - - public void setLat(String lat) { - this.lat = lat; - } - - public String getCaseStateName() { - return caseStateName; - } - - public void setCaseStateName(String caseStateName) { - this.caseStateName = caseStateName; - } - - public String getLng() { - return lng; - } - - public void setLng(String lng) { - this.lng = lng; - } - - public String getIsOvertime() { - return isOvertime; - } - - public void setIsOvertime(String isOvertime) { - this.isOvertime = isOvertime; - } - - public String getCurrRoleName() { - return currRoleName; - } - - public void setCurrRoleName(String currRoleName) { - this.currRoleName = currRoleName; - } - - public String getFileIdVerify() { - return fileIdVerify; - } - - public void setFileIdVerify(String fileIdVerify) { - this.fileIdVerify = fileIdVerify; - } - - public String getCasetypeDetailCode() { - return casetypeDetailCode; - } - - public void setCasetypeDetailCode(String casetypeDetailCode) { - this.casetypeDetailCode = casetypeDetailCode; - } - - public String getOnedeptid() { - return onedeptid; - } - - public void setOnedeptid(String onedeptid) { - this.onedeptid = onedeptid; - } - - public String getEorc() { - return eorc; - } - - public void setEorc(String eorc) { - this.eorc = eorc; - } - - public String getCurrRoleId() { - return currRoleId; - } - - public void setCurrRoleId(String currRoleId) { - this.currRoleId = currRoleId; - } - - public String getCaseid() { - return caseid; - } - - public void setCaseid(String caseid) { - this.caseid = caseid; - } - - public String getCasetypeCode() { - return casetypeCode; - } - - public void setCasetypeCode(String casetypeCode) { - this.casetypeCode = casetypeCode; - } - - public String getNodeLimittime() { - return nodeLimittime; - } - - public void setNodeLimittime(String nodeLimittime) { - this.nodeLimittime = nodeLimittime; - } - - public String getTaskName() { - return taskName; - } - - public void setTaskName(String taskName) { - this.taskName = taskName; - } - - public String getSourceName() { - return sourceName; - } - - public void setSourceName(String sourceName) { - this.sourceName = sourceName; - } - - public String getFileIdProcess() { - return fileIdProcess; - } - - public void setFileIdProcess(String fileIdProcess) { - this.fileIdProcess = fileIdProcess; - } - - public String getReportTime() { - return reportTime; - } - - public void setReportTime(String reportTime) { - this.reportTime = reportTime; - } - - public String getOnedeptName() { - return onedeptName; - } - - public void setOnedeptName(String onedeptName) { - this.onedeptName = onedeptName; - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java b/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java index cd3e026..d0888bc 100644 --- a/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java @@ -14,10 +14,10 @@ import com.casic.dcms.R; public class NotificationHelper { - private Context mContext; + private final Context mContext; @SuppressLint("StaticFieldLeak") - private static NotificationHelper notificationHelper; - private NotificationManager notificationManager; + private static volatile NotificationHelper notificationHelper; + private final NotificationManager notificationManager; private NotificationHelper(Context context) { this.mContext = context; @@ -45,10 +45,8 @@ //创建渠道 String id = name + "_DefaultChannel"; NotificationChannel mChannel = new NotificationChannel(id, name, NotificationManager.IMPORTANCE_HIGH); -// mChannel.setSound(Uri.parse(""), Notification.AUDIO_ATTRIBUTES_DEFAULT); mChannel.setShowBadge(true); - mChannel.enableVibration(true); - mChannel.setVibrationPattern(new long[]{100, 200, 300}); + mChannel.enableVibration(false); mChannel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);//设置锁屏可见 notificationManager.createNotificationChannel(mChannel); builder = new Notification.Builder(mContext, id); diff --git a/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java index d7bf511..691dfd5 100644 --- a/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java +++ b/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java @@ -4,20 +4,22 @@ import android.graphics.Color; import android.view.View; -import androidx.core.content.ContextCompat; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; import com.casic.dcms.R; import com.casic.dcms.databinding.ActivityCaseProcessBinding; import com.casic.dcms.model.CaseProcessBean; +import com.casic.dcms.utils.DialogHelper; import com.casic.dcms.vm.CommonDataViewModel; import com.gyf.immersionbar.ImmersionBar; import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.IntHub; import com.pengxh.androidx.lite.utils.Constant; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.vm.LoadState; import java.util.ArrayList; import java.util.List; @@ -30,8 +32,8 @@ @Override protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); viewBinding.titleBarLayout.titleView.setText("处理记录"); viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); @@ -39,7 +41,16 @@ @Override protected void observeRequestState() { - + commonDataViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override @@ -47,10 +58,6 @@ String processId = getIntent().getStringExtra(Constant.INTENT_PARAM); commonDataViewModel = new ViewModelProvider(this).get(CommonDataViewModel.class); commonDataViewModel.obtainCaseProcess(processId); - } - - @Override - protected void initEvent() { commonDataViewModel.caseProcessModel.observe(this, new Observer() { @Override public void onChanged(CaseProcessBean resultBean) { @@ -91,4 +98,9 @@ } }); } + + @Override + protected void initEvent() { + + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java deleted file mode 100644 index 30585d5..0000000 --- a/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java +++ /dev/null @@ -1,353 +0,0 @@ -package com.casic.dcms.view.check; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; - -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.databinding.ActivityCaseCheckDetailBinding; -import com.casic.dcms.model.ActionResultBean; -import com.casic.dcms.model.CaseDetailBean; -import com.casic.dcms.model.CaseNextNodeBean; -import com.casic.dcms.utils.DialogHelper; -import com.casic.dcms.utils.MapHelper; -import com.casic.dcms.utils.PictureSelectorHelper; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.callback.ISelectorListener; -import com.casic.dcms.view.BigImageActivity; -import com.casic.dcms.vm.CaseOperateViewModel; -import com.casic.dcms.vm.CaseViewModel; -import com.casic.dcms.vm.NodeViewModel; -import com.casic.dcms.vm.UploadViewModel; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.entity.LocalMedia; -import com.pengxh.androidx.lite.adapter.EditableImageAdapter; -import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.hub.ContextHub; -import com.pengxh.androidx.lite.hub.StringHub; -import com.pengxh.androidx.lite.utils.Constant; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; -import com.pengxh.androidx.lite.vm.LoadState; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import cn.jzvd.Jzvd; - -public class CaseCheckDetailActivity extends AndroidxBaseActivity { - - private final Context context = CaseCheckDetailActivity.this; - private final ArrayList realPaths = new ArrayList<>(); //真实图片路径 - private final ArrayList imageList = new ArrayList<>(); //上传到服务器的数据集 - private CaseViewModel caseViewModel; - private UploadViewModel uploadViewModel; - private NodeViewModel nodeViewModel; - private CaseOperateViewModel operateViewModel; - private String id; - private String changeState; - private EditableImageAdapter checkImageAdapter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - - viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - } - - @Override - protected void observeRequestState() { - - } - - @Override - protected void initData() { - id = getIntent().getStringExtra(Constant.INTENT_PARAM); - caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); - caseViewModel.obtainCaseDetail(id); - - uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); - nodeViewModel = new ViewModelProvider(this).get(NodeViewModel.class); - operateViewModel = new ViewModelProvider(this).get(CaseOperateViewModel.class); - - checkImageAdapter = new EditableImageAdapter(this, 3, 13); - viewBinding.addImageRecyclerView.setAdapter(checkImageAdapter); - } - - @Override - protected void initEvent() { - caseViewModel.caseDetailModel.observe(this, new Observer() { - @Override - public void onChanged(CaseDetailBean resultBean) { - if (resultBean.getCode() == 200) { - data = resultBean.getData().get(0); - viewBinding.caseNumberView.setText(data.getCaseid()); - viewBinding.caseTypeView.setText(data.getEorcName()); - viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); - viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); - viewBinding.caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); - viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); - viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); - viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - viewBinding.caseStartTimeView.setText(data.getCreateTime()); - viewBinding.caseEndTimeView.setText(data.getNodeLimittime()); - /** - * 图片 - */ - //核实照片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.imageGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - viewBinding.audioPlayerView.setVisibility(View.VISIBLE); - viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - viewBinding.videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - viewBinding.videoPlayerView.setUp( - videoUrl, - StringHub.filterSpaceOrEnter(data.getDescription()), - Jzvd.SCREEN_NORMAL - ); - //设置第一帧为封面 - Glide.with(context) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(viewBinding.videoPlayerView.posterImageView); - } - - //处理照片 - String processImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(processImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = processImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - viewBinding.caseHandleResultView.setText(data.getProcessRemarks().equals("") ? "无处理意见" : data.getProcessRemarks()); - //TODO 服务器返回数据缺少此字段,暂时注掉 -// viewBinding.caseHandleTimeView.setText(); - } - } - }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "获取数据中..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); - } - }); - - //图片九宫格事件处理 - checkImageAdapter.setOnItemClickListener(new EditableImageAdapter.OnItemClickListener() { - @Override - public void onAddImageClick() { - PictureSelectorHelper.selectPicture(context, new ISelectorListener() { - @Override - public void onSuccess(ArrayList result) { - if (result.size() == 1) { - uploadViewModel.uploadImage(new File(result.get(0).getRealPath())); - } else { - for (LocalMedia localMedia : result) { - uploadViewModel.uploadImage(new File(localMedia.getRealPath())); - } - } - } - }); - } - - @Override - public void onItemClick(int position) { - if (realPaths.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, realPaths); - } - } - - @Override - public void onItemLongClick(View view, int position) { - imageList.remove(position); - checkImageAdapter.deleteImage(position); - } - }); - uploadViewModel.imageModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - if (checkImageAdapter.getItemCount() <= 3) { - String url = resultBean.getData(); - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - checkImageAdapter.setupImage(realPaths); - } else { - StringHub.show(context, "最多只能上传3张图片"); - } - } - } - }); - uploadViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.caseCheckLayout.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - nodeViewModel.obtainNextNode(String.valueOf(data.getCaseState())); - } - }); - nodeViewModel.nodeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseNextNodeBean resultBean) { - if (resultBean.getCode() == 200) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(context); - sheetBuilder.setTitle("核实情况"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - viewBinding.caseCheckOptView.setText(dataBean.getNextOperation()); - changeState = String.valueOf(dataBean.getNextState()); - } - }).build().show(); - } else { - StringHub.show(context, "该案卷无下级流转节点"); - } - } - }); - - viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - //案卷提交 - String remarks = viewBinding.caseCheckOptView.getText().toString(); - if (TextUtils.isEmpty(remarks)) { - StringHub.show(context, "核查意见不能为空"); - return; - } - if (TextUtils.isEmpty(changeState)) { - StringHub.show(context, "核查情况还未选择"); - return; - } - operateViewModel.checkCase(data.getProcessId(), id, - String.valueOf(data.getCaseState()), changeState, remarks, - StringHelper.reformatURL(imageList) - ); - } - }); - operateViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "案卷核查中,请稍后..."); - } else if (loadState == LoadState.Success) { - DialogHelper.dismissLoadingDialog(); - finish(); - } else { - StringHub.show(context, "核查失败,请重试"); - DialogHelper.dismissLoadingDialog(); - } - } - }); - } - - @Override - public void onDestroy() { - viewBinding.audioPlayerView.release(); - super.onDestroy(); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - public void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CaseCheckedDetailActivity.java deleted file mode 100644 index 0ffce7d..0000000 --- a/app/src/main/java/com/casic/dcms/view/check/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,228 +0,0 @@ -package com.casic.dcms.view.check; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; - -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.databinding.ActivityCaseCheckedDetailBinding; -import com.casic.dcms.model.CaseDetailBean; -import com.casic.dcms.utils.DialogHelper; -import com.casic.dcms.utils.MapHelper; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.view.BigImageActivity; -import com.casic.dcms.view.CaseProcessActivity; -import com.casic.dcms.vm.CaseViewModel; -import com.gyf.immersionbar.ImmersionBar; -import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.hub.ContextHub; -import com.pengxh.androidx.lite.hub.StringHub; -import com.pengxh.androidx.lite.utils.Constant; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; -import com.pengxh.androidx.lite.vm.LoadState; - -import java.util.ArrayList; - -import cn.jzvd.Jzvd; - -public class CaseCheckedDetailActivity extends AndroidxBaseActivity { - - private final Context context = CaseCheckedDetailActivity.this; - private CaseViewModel caseViewModel; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - - viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - } - - @Override - protected void observeRequestState() { - - } - - @Override - protected void initData() { - String id = getIntent().getStringExtra(Constant.INTENT_PARAM); - caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); - caseViewModel.obtainCaseDetail(id); - } - - @Override - protected void initEvent() { - caseViewModel.caseDetailModel.observe(this, new Observer() { - @Override - public void onChanged(CaseDetailBean resultBean) { - if (resultBean.getCode() == 200) { - data = resultBean.getData().get(0); - viewBinding.caseNumberView.setText(data.getCaseid()); - viewBinding.caseTypeView.setText(data.getEorcName()); - viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); - viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); - viewBinding.caseCommunityView.setText(data.getCommunityName()); - viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); - viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.imageGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //处理图片 - 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)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - viewBinding.audioPlayerView.setVisibility(View.VISIBLE); - viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - viewBinding.videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - viewBinding.videoPlayerView.setUp( - videoUrl, - StringHub.filterSpaceOrEnter(data.getDescription()), - Jzvd.SCREEN_NORMAL - ); - //设置第一帧为封面 - Glide.with(context) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(viewBinding.videoPlayerView.posterImageView); - } - } - } - }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "获取数据中..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); - } - }); - - viewBinding.handleLayout.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - ContextHub.navigatePageTo(context, CaseProcessActivity.class, data.getProcessId()); - } - }); - } - - @Override - protected void onDestroy() { - viewBinding.audioPlayerView.release(); - super.onDestroy(); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java b/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java index 76e3203..2c76426 100644 --- a/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java @@ -2,7 +2,6 @@ import android.widget.LinearLayout; -import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; import com.casic.dcms.R; @@ -14,6 +13,7 @@ import com.casic.dcms.utils.LocaleConstant; import com.gyf.immersionbar.ImmersionBar; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.IntHub; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; import java.util.ArrayList; @@ -28,8 +28,8 @@ @Override protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); viewBinding.titleBarLayout.titleView.setText("案卷核查"); viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); @@ -46,10 +46,10 @@ fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), LocaleConstant.CASE_PAGE_TITLES, fragmentList); - viewBinding.checkViewPager.setAdapter(adapter); + viewBinding.viewPager.setAdapter(adapter); //绑定TabLayout - viewBinding.checkTabLayout.setupWithViewPager(viewBinding.checkViewPager); - LinearLayout linearLayout = (LinearLayout) viewBinding.checkTabLayout.getChildAt(0); + viewBinding.topTabLayout.setupWithViewPager(viewBinding.viewPager); + LinearLayout linearLayout = (LinearLayout) viewBinding.topTabLayout.getChildAt(0); LinearLayoutHelper.setDivider(this, linearLayout); } diff --git a/app/src/main/java/com/casic/dcms/view/check/CheckDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CheckDetailActivity.java new file mode 100644 index 0000000..b9aeeb7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/view/check/CheckDetailActivity.java @@ -0,0 +1,356 @@ +package com.casic.dcms.view.check; + +import android.content.Context; +import android.text.TextUtils; +import android.view.View; +import android.widget.AdapterView; + +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.databinding.ActivityCheckDetailBinding; +import com.casic.dcms.model.ActionResultBean; +import com.casic.dcms.model.CaseDetailBean; +import com.casic.dcms.model.CaseNextNodeBean; +import com.casic.dcms.utils.DialogHelper; +import com.casic.dcms.utils.MapHelper; +import com.casic.dcms.utils.PictureSelectorHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.ISelectorListener; +import com.casic.dcms.view.BigImageActivity; +import com.casic.dcms.vm.CaseOperateViewModel; +import com.casic.dcms.vm.CaseViewModel; +import com.casic.dcms.vm.NodeViewModel; +import com.casic.dcms.vm.UploadViewModel; +import com.gyf.immersionbar.ImmersionBar; +import com.luck.picture.lib.entity.LocalMedia; +import com.pengxh.androidx.lite.adapter.EditableImageAdapter; +import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; +import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.ContextHub; +import com.pengxh.androidx.lite.hub.IntHub; +import com.pengxh.androidx.lite.hub.StringHub; +import com.pengxh.androidx.lite.utils.Constant; +import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.vm.LoadState; +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import cn.jzvd.Jzvd; + +public class CheckDetailActivity extends AndroidxBaseActivity { + + private final Context context = CheckDetailActivity.this; + private final ArrayList realPaths = new ArrayList<>(); //真实图片路径 + private final ArrayList imageList = new ArrayList<>(); //上传到服务器的数据集 + private CaseViewModel caseViewModel; + private UploadViewModel uploadViewModel; + private NodeViewModel nodeViewModel; + private CaseOperateViewModel operateViewModel; + private String id; + private String changeState; + private EditableImageAdapter checkImageAdapter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + + @Override + protected void setupTopBarLayout() { + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); + + viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); + viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); + } + + @Override + protected void observeRequestState() { + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + + uploadViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + + operateViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "案卷核查中,请稍后..."); + } else if (loadState == LoadState.Success) { + DialogHelper.dismissLoadingDialog(); + finish(); + } else { + StringHub.show(context, "核查失败,请重试"); + DialogHelper.dismissLoadingDialog(); + } + } + }); + } + + @Override + protected void initData() { + id = getIntent().getStringExtra(Constant.INTENT_PARAM); + caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.obtainCaseDetail(id); + caseViewModel.caseDetailModel.observe(this, new Observer() { + @Override + public void onChanged(CaseDetailBean resultBean) { + if (resultBean.getCode() == 200) { + data = resultBean.getData().get(0); + viewBinding.caseNumberView.setText(data.getCaseid()); + viewBinding.caseTypeView.setText(data.getEorcName()); + viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); + viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); + viewBinding.caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); + viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); + viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); + viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); + viewBinding.caseStartTimeView.setText(data.getCreateTime()); + viewBinding.caseEndTimeView.setText(data.getNodeLimittime()); + /** + * 图片 + */ + //核实照片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.imageGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + viewBinding.audioPlayerView.setVisibility(View.VISIBLE); + viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(videoFile)) { + viewBinding.videoPlayerView.setVisibility(View.VISIBLE); + String videoUrl = StringHelper.appendCompleteURL(videoFile); + viewBinding.videoPlayerView.setUp( + videoUrl, + StringHub.filterSpaceOrEnter(data.getDescription()), + Jzvd.SCREEN_NORMAL + ); + //设置第一帧为封面 + Glide.with(context) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(viewBinding.videoPlayerView.posterImageView); + } + + //处理照片 + String processImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(processImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = processImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.handleGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + viewBinding.caseHandleResultView.setText(data.getProcessRemarks().equals("") ? "无处理意见" : data.getProcessRemarks()); + //TODO 服务器返回数据缺少此字段,暂时注掉 +// viewBinding.caseHandleTimeView.setText(); + } + } + }); + + uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); + uploadViewModel.imageModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + if (checkImageAdapter.getItemCount() <= 3) { + String url = resultBean.getData(); + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + checkImageAdapter.setupImage(realPaths); + } else { + StringHub.show(context, "最多只能上传3张图片"); + } + } + } + }); + + nodeViewModel = new ViewModelProvider(this).get(NodeViewModel.class); + nodeViewModel.nodeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseNextNodeBean resultBean) { + if (resultBean.getCode() == 200) { + List dataBeans = resultBean.getData(); + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(context); + sheetBuilder.setTitle("核实情况"); + for (CaseNextNodeBean.DataBean dataBean : dataBeans) { + sheetBuilder.addItem(dataBean.getNextOperation()); + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); + viewBinding.caseCheckOptView.setText(dataBean.getNextOperation()); + changeState = String.valueOf(dataBean.getNextState()); + } + }).build().show(); + } else { + StringHub.show(context, "该案卷无下级流转节点"); + } + } + }); + + operateViewModel = new ViewModelProvider(this).get(CaseOperateViewModel.class); + + checkImageAdapter = new EditableImageAdapter(this, 3, 13); + viewBinding.addImageRecyclerView.setAdapter(checkImageAdapter); + } + + @Override + protected void initEvent() { + viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); + } + }); + + //图片九宫格事件处理 + checkImageAdapter.setOnItemClickListener(new EditableImageAdapter.OnItemClickListener() { + @Override + public void onAddImageClick() { + PictureSelectorHelper.selectPicture(context, new ISelectorListener() { + @Override + public void onSuccess(ArrayList result) { + if (result.size() == 1) { + uploadViewModel.uploadImage(new File(result.get(0).getRealPath())); + } else { + for (LocalMedia localMedia : result) { + uploadViewModel.uploadImage(new File(localMedia.getRealPath())); + } + } + } + }); + } + + @Override + public void onItemClick(int position) { + if (realPaths.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, realPaths); + } + } + + @Override + public void onItemLongClick(View view, int position) { + imageList.remove(position); + checkImageAdapter.deleteImage(position); + } + }); + + + viewBinding.caseCheckLayout.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + nodeViewModel.obtainNextNode(String.valueOf(data.getCaseState())); + } + }); + + viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + //案卷提交 + String remarks = viewBinding.caseCheckOptView.getText().toString(); + if (TextUtils.isEmpty(remarks)) { + StringHub.show(context, "核查意见不能为空"); + return; + } + if (TextUtils.isEmpty(changeState)) { + StringHub.show(context, "核查情况还未选择"); + return; + } + operateViewModel.checkCase(data.getProcessId(), id, + String.valueOf(data.getCaseState()), changeState, remarks, + StringHelper.reformatURL(imageList) + ); + } + }); + } + + @Override + public void onDestroy() { + viewBinding.audioPlayerView.release(); + super.onDestroy(); + } + + @Override + public void onBackPressed() { + if (Jzvd.backPress()) { + return; + } + super.onBackPressed(); + } + + @Override + public void onPause() { + super.onPause(); + Jzvd.releaseAllVideos(); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CheckedDetailActivity.java new file mode 100644 index 0000000..14e554b --- /dev/null +++ b/app/src/main/java/com/casic/dcms/view/check/CheckedDetailActivity.java @@ -0,0 +1,226 @@ +package com.casic.dcms.view.check; + +import android.content.Context; +import android.text.TextUtils; +import android.view.View; +import android.widget.AdapterView; + +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.databinding.ActivityCheckedDetailBinding; +import com.casic.dcms.model.CaseDetailBean; +import com.casic.dcms.utils.DialogHelper; +import com.casic.dcms.utils.MapHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.BigImageActivity; +import com.casic.dcms.view.CaseProcessActivity; +import com.casic.dcms.vm.CaseViewModel; +import com.gyf.immersionbar.ImmersionBar; +import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; +import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.ContextHub; +import com.pengxh.androidx.lite.hub.IntHub; +import com.pengxh.androidx.lite.hub.StringHub; +import com.pengxh.androidx.lite.utils.Constant; +import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.vm.LoadState; + +import java.util.ArrayList; + +import cn.jzvd.Jzvd; + +public class CheckedDetailActivity extends AndroidxBaseActivity { + + private final Context context = CheckedDetailActivity.this; + private CaseViewModel caseViewModel; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + + @Override + protected void setupTopBarLayout() { + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); + + viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); + viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); + } + + @Override + protected void observeRequestState() { + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + } + + @Override + protected void initData() { + String id = getIntent().getStringExtra(Constant.INTENT_PARAM); + caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.obtainCaseDetail(id); + caseViewModel.caseDetailModel.observe(this, new Observer() { + @Override + public void onChanged(CaseDetailBean resultBean) { + if (resultBean.getCode() == 200) { + data = resultBean.getData().get(0); + viewBinding.caseNumberView.setText(data.getCaseid()); + viewBinding.caseTypeView.setText(data.getEorcName()); + viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); + viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); + viewBinding.caseCommunityView.setText(data.getCommunityName()); + viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); + viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); + viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); + + //核实图片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.imageGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //处理图片 + 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)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.handleGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //核查图片 + String checkImages = data.getFileIdCheck(); + if (!TextUtils.isEmpty(checkImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = checkImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.checkGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + viewBinding.audioPlayerView.setVisibility(View.VISIBLE); + viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(videoFile)) { + viewBinding.videoPlayerView.setVisibility(View.VISIBLE); + String videoUrl = StringHelper.appendCompleteURL(videoFile); + viewBinding.videoPlayerView.setUp( + videoUrl, + StringHub.filterSpaceOrEnter(data.getDescription()), + Jzvd.SCREEN_NORMAL + ); + //设置第一帧为封面 + Glide.with(context) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(viewBinding.videoPlayerView.posterImageView); + } + } + } + }); + } + + @Override + protected void initEvent() { + viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); + } + }); + + viewBinding.handleLayout.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + ContextHub.navigatePageTo(context, CaseProcessActivity.class, data.getProcessId()); + } + }); + } + + @Override + protected void onDestroy() { + viewBinding.audioPlayerView.release(); + super.onDestroy(); + } + + @Override + public void onBackPressed() { + if (Jzvd.backPress()) { + return; + } + super.onBackPressed(); + } + + @Override + protected void onPause() { + super.onPause(); + Jzvd.releaseAllVideos(); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/map/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/view/map/CaseOnMapActivity.java index 5a85a88..c662347 100644 --- a/app/src/main/java/com/casic/dcms/view/map/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/view/map/CaseOnMapActivity.java @@ -18,10 +18,10 @@ import com.casic.dcms.R; import com.casic.dcms.databinding.ActivityMapCaseBinding; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.model.CaseHandleBean; import com.casic.dcms.model.PointDataBean; import com.casic.dcms.model.VerifyCaseModel; -import com.casic.dcms.model.check.CaseCheckModel; import com.casic.dcms.utils.ArcGisMapCreator; import com.casic.dcms.utils.LocaleConstant; import com.casic.dcms.view.CaseDetailActivity; @@ -116,11 +116,11 @@ public void onChanged(CaseCheckModel resultBean) { clearPictureMarker(); if (resultBean.isSuccess()) { - List rowsBeans = resultBean.getData().getRows(); + List rowsBeans = resultBean.getData().getRows(); if (rowsBeans.size() >= 1) { List list = new ArrayList<>(); List pointList = new ArrayList<>(); - for (CaseCheckModel.DataDTO.RowsDTO bean : rowsBeans) { + for (CaseCheckModel.DataModel.RowsModel bean : rowsBeans) { String lng = bean.getLng(); String lat = bean.getLat(); if (TextUtils.isEmpty(lng) || TextUtils.isEmpty(lat)) { diff --git a/app/src/main/java/com/casic/dcms/view/upload/BriefCaseActivity.java b/app/src/main/java/com/casic/dcms/view/upload/BriefCaseActivity.java index 2d2e8f6..794c651 100644 --- a/app/src/main/java/com/casic/dcms/view/upload/BriefCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/view/upload/BriefCaseActivity.java @@ -90,7 +90,31 @@ @Override protected void observeRequestState() { + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); + } else if (loadState == LoadState.Success) { + DialogHelper.dismissLoadingDialog(); + finish(); + } else { + StringHub.show(context, "提交失败,请重试"); + DialogHelper.dismissLoadingDialog(); + } + } + }); + uploadViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override @@ -99,8 +123,52 @@ smallTypeBeans = new ArrayList<>(); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + commonDataViewModel = new ViewModelProvider(this).get(CommonDataViewModel.class); + commonDataViewModel.largeTypeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseLargeTypeBean typeBean) { + if (typeBean.getCode() == 200) { + //设置大类数据 + largeTypeBeans = typeBean.getData(); + if (largeTypeBeans.size() != 0) { + viewBinding.caseLargeClassView.setText(largeTypeBeans.get(0).getTypeName());//默认选择第一个 + } + viewBinding.caseSmallClassView.setText("请选择"); + viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.darkGray)); + } + } + }); + commonDataViewModel.smallTypeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseSmallTypeBean typeBean) { + if (typeBean.getCode() == 200) { + //设置小类数据 + smallTypeBeans = typeBean.getData(); + if (smallTypeBeans.size() != 0) { + viewBinding.caseSmallClassView.setText(smallTypeBeans.get(0).getTypeDetailName());//默认选择第一个 + viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); + } + } + } + }); + uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); + uploadViewModel.imageModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + if (imageAdapter.getItemCount() <= 4) { + String url = resultBean.getData(); + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + imageAdapter.setupImage(realPaths); + } else { + StringHub.show(context, "最多只能上传3张图片"); + } + } + } + }); imageAdapter = new EditableImageAdapter(this, 3, 13); viewBinding.addImageRecyclerView.setAdapter(imageAdapter); @@ -132,20 +200,6 @@ }).build().show(); } }); - commonDataViewModel.largeTypeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseLargeTypeBean typeBean) { - if (typeBean.getCode() == 200) { - //设置大类数据 - largeTypeBeans = typeBean.getData(); - if (largeTypeBeans.size() != 0) { - viewBinding.caseLargeClassView.setText(largeTypeBeans.get(0).getTypeName());//默认选择第一个 - } - viewBinding.caseSmallClassView.setText("请选择"); - viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.darkGray)); - } - } - }); /** * 选择案卷大类 @@ -178,19 +232,6 @@ } } }); - commonDataViewModel.smallTypeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseSmallTypeBean typeBean) { - if (typeBean.getCode() == 200) { - //设置小类数据 - smallTypeBeans = typeBean.getData(); - if (smallTypeBeans.size() != 0) { - viewBinding.caseSmallClassView.setText(smallTypeBeans.get(0).getTypeDetailName());//默认选择第一个 - viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); - } - } - } - }); /** * 选择案卷小类 @@ -271,31 +312,6 @@ imageAdapter.deleteImage(position); } }); - uploadViewModel.imageModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - if (imageAdapter.getItemCount() <= 4) { - String url = resultBean.getData(); - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - imageAdapter.setupImage(realPaths); - } else { - StringHub.show(context, "最多只能上传3张图片"); - } - } - } - }); - uploadViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { @Override @@ -303,20 +319,6 @@ submitCase(); } }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); - } else if (loadState == LoadState.Success) { - DialogHelper.dismissLoadingDialog(); - finish(); - } else { - StringHub.show(context, "提交失败,请重试"); - DialogHelper.dismissLoadingDialog(); - } - } - }); } /** diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b6a8d08..c78d07c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -64,8 +64,8 @@ - - + + diff --git a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java deleted file mode 100644 index 254f0cd..0000000 --- a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.casic.dcms.adapter; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.text.TextUtils; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.model.check.CaseCheckModel; -import com.casic.dcms.utils.StringHelper; -import com.pengxh.androidx.lite.hub.StringHub; -import com.qmuiteam.qmui.widget.QMUIRadiusImageView; - -import java.util.List; - -public class CheckCaseListAdapter extends RecyclerView.Adapter { - - private final Context context; - private final List dataBeans; - private final LayoutInflater layoutInflater; - - public CheckCaseListAdapter(Context context, List dataRows) { - this.context = context; - this.dataBeans = dataRows; - this.layoutInflater = LayoutInflater.from(context); - } - - @NonNull - @Override - public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - return new ItemViewHolder(layoutInflater.inflate(R.layout.item_case_rv_l, parent, false)); - } - - @Override - public void onBindViewHolder(@NonNull ItemViewHolder holder, @SuppressLint("RecyclerView") int position) { - holder.bindView(dataBeans.get(position)); - if (clickListener != null) { - holder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - clickListener.onClick(position); - } - }); - } - } - - @Override - public int getItemCount() { - return dataBeans.size(); - } - - class ItemViewHolder extends RecyclerView.ViewHolder { - - private final QMUIRadiusImageView caseImageView; - private final TextView caseTitleView; - private final TextView casePlaceView; - private final TextView caseTimeView; - - ItemViewHolder(@NonNull View itemView) { - super(itemView); - caseImageView = itemView.findViewById(R.id.caseImageView); - caseTitleView = itemView.findViewById(R.id.caseTitleView); - casePlaceView = itemView.findViewById(R.id.casePlaceView); - caseTimeView = itemView.findViewById(R.id.caseTimeView); - } - - void bindView(CaseCheckModel.DataDTO.RowsDTO rowsBean) { - //处理图片 - String fileIdProcess = rowsBean.getFileIdProcess(); - if (!TextUtils.isEmpty(fileIdProcess)) { - String[] split = fileIdProcess.split(","); - String firstImage = split[0]; - if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { - Glide.with(context).load(StringHelper.appendCompleteURL(firstImage)).into(caseImageView); - } - } - caseTitleView.setText(StringHub.filterSpaceOrEnter(rowsBean.getDescription())); - casePlaceView.setText("发生地点:" + StringHub.filterSpaceOrEnter(rowsBean.getFieldintro())); - caseTimeView.setText("上报时间:" + rowsBean.getReportTime()); - } - } - - private OnItemClickListener clickListener; - - public interface OnItemClickListener { - void onClick(int position); - } - - public void setOnItemClickListener(OnItemClickListener onItemClickListener) { - this.clickListener = onItemClickListener; - } -} diff --git a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java index 85cebc6..667981d 100644 --- a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java @@ -1,19 +1,27 @@ package com.casic.dcms.fragment.check; +import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; + +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.casic.dcms.adapter.CheckCaseListAdapter; +import com.bumptech.glide.Glide; +import com.casic.dcms.R; import com.casic.dcms.databinding.FragmentCheckCaseBinding; -import com.casic.dcms.model.check.CaseCheckModel; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.view.check.CaseCheckDetailActivity; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.check.CheckDetailActivity; import com.casic.dcms.vm.CaseViewModel; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseFragment; import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.StringHub; @@ -24,14 +32,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class CaseCheckFragment extends AndroidxBaseFragment { private static final String TAG = "CaseCheckFragment"; private WeakReferenceHandler weakReferenceHandler; private CaseViewModel caseViewModel; - private CheckCaseListAdapter adapter; - private List dataBeans = new ArrayList<>(); + private NormalRecyclerAdapter adapter; + private List dataBeans = new ArrayList<>(); private int pageIndex = 1; private boolean isRefresh, isLoadMore = false; @@ -49,12 +58,37 @@ protected void initData() { weakReferenceHandler = new WeakReferenceHandler(callback); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.caseCheckModel.observe(this, new Observer() { + @Override + public void onChanged(CaseCheckModel resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(requireContext(), "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(202104251); + } + } + }); } @Override public void onResume() { - obtainCheckCaseList(); super.onResume(); + pageIndex = 1; + obtainCheckCaseList(); } private void obtainCheckCaseList() { @@ -80,31 +114,6 @@ obtainCheckCaseList(); } }); - - caseViewModel.caseCheckModel.observe(this, new Observer() { - @Override - public void onChanged(CaseCheckModel resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(requireContext(), "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(202104251); - } - } - }); } private final Handler.Callback callback = new Handler.Callback() { @@ -125,16 +134,42 @@ }); } else { viewBinding.emptyView.hide(); - adapter = new CheckCaseListAdapter(requireContext(), dataBeans); - viewBinding.caseRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new CheckCaseListAdapter.OnItemClickListener() { + adapter = new NormalRecyclerAdapter(R.layout.item_case_rv_l, dataBeans) { @Override - public void onClick(int position) { - ContextHub.navigatePageTo( - requireContext(), - CaseCheckDetailActivity.class, - dataBeans.get(position).getId() - ); + public void convertView(ViewHolder viewHolder, int position, CaseCheckModel.DataModel.RowsModel item) { + String fileIdProcess = item.getFileIdProcess(); + if (!TextUtils.isEmpty(fileIdProcess)) { + String[] split = fileIdProcess.split(","); + String firstImage = split[0]; + if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Drawable drawable = Glide.with(requireContext()).load(StringHelper.appendCompleteURL(firstImage)).submit().get(); + runOnUiThread(new Runnable() { + @Override + public void run() { + viewHolder.setImageResource(R.id.caseImageView, drawable); + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + } + } + viewHolder.setText(R.id.caseTitleView, StringHub.filterSpaceOrEnter(item.getDescription())) + .setText(R.id.casePlaceView, "发生地点:" + StringHub.filterSpaceOrEnter(item.getFieldintro())) + .setText(R.id.caseTimeView, "上报时间:" + item.getReportTime()); + } + }; + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, CaseCheckModel.DataModel.RowsModel rowsModel) { + ContextHub.navigatePageTo(requireContext(), CheckDetailActivity.class, rowsModel.getId()); } }); } diff --git a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java index 3e2d904..6775b65 100644 --- a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java @@ -1,19 +1,27 @@ package com.casic.dcms.fragment.check; +import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; + +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.casic.dcms.adapter.CheckCaseListAdapter; +import com.bumptech.glide.Glide; +import com.casic.dcms.R; import com.casic.dcms.databinding.FragmentCheckCaseBinding; -import com.casic.dcms.model.check.CaseCheckModel; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.view.check.CaseCheckedDetailActivity; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.check.CheckedDetailActivity; import com.casic.dcms.vm.CaseViewModel; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseFragment; import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.StringHub; @@ -24,14 +32,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class CaseCheckedFragment extends AndroidxBaseFragment { private static final String TAG = "CaseCheckedFragment"; private WeakReferenceHandler weakReferenceHandler; private CaseViewModel caseViewModel; - private CheckCaseListAdapter adapter; - private List dataBeans = new ArrayList<>(); + private NormalRecyclerAdapter adapter; + private List dataBeans = new ArrayList<>(); private int pageIndex = 1; private boolean isRefresh, isLoadMore = false; @@ -50,12 +59,37 @@ protected void initData() { weakReferenceHandler = new WeakReferenceHandler(callback); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.caseCheckModel.observe(this, new Observer() { + @Override + public void onChanged(CaseCheckModel resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(requireContext(), "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(202104252); + } + } + }); } @Override public void onResume() { - obtainCheckCaseList(); super.onResume(); + pageIndex = 1; + obtainCheckCaseList(); } private void obtainCheckCaseList() { @@ -81,32 +115,6 @@ obtainCheckCaseList(); } }); - - caseViewModel.caseCheckModel.observe(this, new Observer() { - - @Override - public void onChanged(CaseCheckModel resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(requireContext(), "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(202104252); - } - } - }); } private final Handler.Callback callback = new Handler.Callback() { @@ -127,16 +135,42 @@ }); } else { viewBinding.emptyView.hide(); - adapter = new CheckCaseListAdapter(requireContext(), dataBeans); - viewBinding.caseRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new CheckCaseListAdapter.OnItemClickListener() { + adapter = new NormalRecyclerAdapter(R.layout.item_case_rv_l, dataBeans) { @Override - public void onClick(int position) { - ContextHub.navigatePageTo( - requireContext(), - CaseCheckedDetailActivity.class, - dataBeans.get(position).getId() - ); + public void convertView(ViewHolder viewHolder, int position, CaseCheckModel.DataModel.RowsModel item) { + String fileIdProcess = item.getFileIdProcess(); + if (!TextUtils.isEmpty(fileIdProcess)) { + String[] split = fileIdProcess.split(","); + String firstImage = split[0]; + if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Drawable drawable = Glide.with(requireContext()).load(StringHelper.appendCompleteURL(firstImage)).submit().get(); + runOnUiThread(new Runnable() { + @Override + public void run() { + viewHolder.setImageResource(R.id.caseImageView, drawable); + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + } + } + viewHolder.setText(R.id.caseTitleView, StringHub.filterSpaceOrEnter(item.getDescription())) + .setText(R.id.casePlaceView, "发生地点:" + StringHub.filterSpaceOrEnter(item.getFieldintro())) + .setText(R.id.caseTimeView, "上报时间:" + item.getReportTime()); + } + }; + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, CaseCheckModel.DataModel.RowsModel rowsModel) { + ContextHub.navigatePageTo(requireContext(), CheckedDetailActivity.class, rowsModel.getId()); } }); } diff --git a/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java b/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java new file mode 100644 index 0000000..550a1fe --- /dev/null +++ b/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java @@ -0,0 +1,358 @@ +package com.casic.dcms.model; + +import java.util.List; + +/** + * 核查-已办/待办共用一个Model + */ +public class CaseCheckModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String isPostpone; + private String description; + private String source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private String caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String lng; + private String isOvertime; + private String currRoleName; + private String fileIdVerify; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String taskName; + private String sourceName; + private String fileIdProcess; + private String reportTime; + private String onedeptName; + + public String getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(String isPostpone) { + this.isPostpone = isPostpone; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getCaseState() { + return caseState; + } + + public void setCaseState(String caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getFileIdVerify() { + return fileIdVerify; + } + + public void setFileIdVerify(String fileIdVerify) { + this.fileIdVerify = fileIdVerify; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getTaskName() { + return taskName; + } + + public void setTaskName(String taskName) { + this.taskName = taskName; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getFileIdProcess() { + return fileIdProcess; + } + + public void setFileIdProcess(String fileIdProcess) { + this.fileIdProcess = fileIdProcess; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java b/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java deleted file mode 100644 index 854e2fe..0000000 --- a/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java +++ /dev/null @@ -1,358 +0,0 @@ -package com.casic.dcms.model.check; - -import java.util.List; - -/** - * 核查-已办/待办共用一个Bean - */ -public class CaseCheckModel { - - private int code; - private DataDTO data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataDTO getData() { - return data; - } - - public void setData(DataDTO data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataDTO { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsDTO { - private int isPostpone; - private String description; - private int source; - private String eorcName; - private String casetypeDetailName; - private String remainingTime; - private String casetypeName; - private String currUserId; - private String currUserName; - private String processId; - private int caseState; - private String id; - private String shopId; - private String fieldintro; - private String lat; - private String caseStateName; - private String lng; - private String isOvertime; - private String currRoleName; - private String fileIdVerify; - private String casetypeDetailCode; - private String onedeptid; - private String eorc; - private String currRoleId; - private String caseid; - private String casetypeCode; - private String nodeLimittime; - private String taskName; - private String sourceName; - private String fileIdProcess; - private String reportTime; - private String onedeptName; - - public int getIsPostpone() { - return isPostpone; - } - - public void setIsPostpone(int isPostpone) { - this.isPostpone = isPostpone; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public int getSource() { - return source; - } - - public void setSource(int source) { - this.source = source; - } - - public String getEorcName() { - return eorcName; - } - - public void setEorcName(String eorcName) { - this.eorcName = eorcName; - } - - public String getCasetypeDetailName() { - return casetypeDetailName; - } - - public void setCasetypeDetailName(String casetypeDetailName) { - this.casetypeDetailName = casetypeDetailName; - } - - public String getRemainingTime() { - return remainingTime; - } - - public void setRemainingTime(String remainingTime) { - this.remainingTime = remainingTime; - } - - public String getCasetypeName() { - return casetypeName; - } - - public void setCasetypeName(String casetypeName) { - this.casetypeName = casetypeName; - } - - public String getCurrUserId() { - return currUserId; - } - - public void setCurrUserId(String currUserId) { - this.currUserId = currUserId; - } - - public String getCurrUserName() { - return currUserName; - } - - public void setCurrUserName(String currUserName) { - this.currUserName = currUserName; - } - - public String getProcessId() { - return processId; - } - - public void setProcessId(String processId) { - this.processId = processId; - } - - public int getCaseState() { - return caseState; - } - - public void setCaseState(int caseState) { - this.caseState = caseState; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getShopId() { - return shopId; - } - - public void setShopId(String shopId) { - this.shopId = shopId; - } - - public String getFieldintro() { - return fieldintro; - } - - public void setFieldintro(String fieldintro) { - this.fieldintro = fieldintro; - } - - public String getLat() { - return lat; - } - - public void setLat(String lat) { - this.lat = lat; - } - - public String getCaseStateName() { - return caseStateName; - } - - public void setCaseStateName(String caseStateName) { - this.caseStateName = caseStateName; - } - - public String getLng() { - return lng; - } - - public void setLng(String lng) { - this.lng = lng; - } - - public String getIsOvertime() { - return isOvertime; - } - - public void setIsOvertime(String isOvertime) { - this.isOvertime = isOvertime; - } - - public String getCurrRoleName() { - return currRoleName; - } - - public void setCurrRoleName(String currRoleName) { - this.currRoleName = currRoleName; - } - - public String getFileIdVerify() { - return fileIdVerify; - } - - public void setFileIdVerify(String fileIdVerify) { - this.fileIdVerify = fileIdVerify; - } - - public String getCasetypeDetailCode() { - return casetypeDetailCode; - } - - public void setCasetypeDetailCode(String casetypeDetailCode) { - this.casetypeDetailCode = casetypeDetailCode; - } - - public String getOnedeptid() { - return onedeptid; - } - - public void setOnedeptid(String onedeptid) { - this.onedeptid = onedeptid; - } - - public String getEorc() { - return eorc; - } - - public void setEorc(String eorc) { - this.eorc = eorc; - } - - public String getCurrRoleId() { - return currRoleId; - } - - public void setCurrRoleId(String currRoleId) { - this.currRoleId = currRoleId; - } - - public String getCaseid() { - return caseid; - } - - public void setCaseid(String caseid) { - this.caseid = caseid; - } - - public String getCasetypeCode() { - return casetypeCode; - } - - public void setCasetypeCode(String casetypeCode) { - this.casetypeCode = casetypeCode; - } - - public String getNodeLimittime() { - return nodeLimittime; - } - - public void setNodeLimittime(String nodeLimittime) { - this.nodeLimittime = nodeLimittime; - } - - public String getTaskName() { - return taskName; - } - - public void setTaskName(String taskName) { - this.taskName = taskName; - } - - public String getSourceName() { - return sourceName; - } - - public void setSourceName(String sourceName) { - this.sourceName = sourceName; - } - - public String getFileIdProcess() { - return fileIdProcess; - } - - public void setFileIdProcess(String fileIdProcess) { - this.fileIdProcess = fileIdProcess; - } - - public String getReportTime() { - return reportTime; - } - - public void setReportTime(String reportTime) { - this.reportTime = reportTime; - } - - public String getOnedeptName() { - return onedeptName; - } - - public void setOnedeptName(String onedeptName) { - this.onedeptName = onedeptName; - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java b/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java index cd3e026..d0888bc 100644 --- a/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java @@ -14,10 +14,10 @@ import com.casic.dcms.R; public class NotificationHelper { - private Context mContext; + private final Context mContext; @SuppressLint("StaticFieldLeak") - private static NotificationHelper notificationHelper; - private NotificationManager notificationManager; + private static volatile NotificationHelper notificationHelper; + private final NotificationManager notificationManager; private NotificationHelper(Context context) { this.mContext = context; @@ -45,10 +45,8 @@ //创建渠道 String id = name + "_DefaultChannel"; NotificationChannel mChannel = new NotificationChannel(id, name, NotificationManager.IMPORTANCE_HIGH); -// mChannel.setSound(Uri.parse(""), Notification.AUDIO_ATTRIBUTES_DEFAULT); mChannel.setShowBadge(true); - mChannel.enableVibration(true); - mChannel.setVibrationPattern(new long[]{100, 200, 300}); + mChannel.enableVibration(false); mChannel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);//设置锁屏可见 notificationManager.createNotificationChannel(mChannel); builder = new Notification.Builder(mContext, id); diff --git a/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java index d7bf511..691dfd5 100644 --- a/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java +++ b/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java @@ -4,20 +4,22 @@ import android.graphics.Color; import android.view.View; -import androidx.core.content.ContextCompat; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; import com.casic.dcms.R; import com.casic.dcms.databinding.ActivityCaseProcessBinding; import com.casic.dcms.model.CaseProcessBean; +import com.casic.dcms.utils.DialogHelper; import com.casic.dcms.vm.CommonDataViewModel; import com.gyf.immersionbar.ImmersionBar; import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.IntHub; import com.pengxh.androidx.lite.utils.Constant; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.vm.LoadState; import java.util.ArrayList; import java.util.List; @@ -30,8 +32,8 @@ @Override protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); viewBinding.titleBarLayout.titleView.setText("处理记录"); viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); @@ -39,7 +41,16 @@ @Override protected void observeRequestState() { - + commonDataViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override @@ -47,10 +58,6 @@ String processId = getIntent().getStringExtra(Constant.INTENT_PARAM); commonDataViewModel = new ViewModelProvider(this).get(CommonDataViewModel.class); commonDataViewModel.obtainCaseProcess(processId); - } - - @Override - protected void initEvent() { commonDataViewModel.caseProcessModel.observe(this, new Observer() { @Override public void onChanged(CaseProcessBean resultBean) { @@ -91,4 +98,9 @@ } }); } + + @Override + protected void initEvent() { + + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java deleted file mode 100644 index 30585d5..0000000 --- a/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java +++ /dev/null @@ -1,353 +0,0 @@ -package com.casic.dcms.view.check; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; - -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.databinding.ActivityCaseCheckDetailBinding; -import com.casic.dcms.model.ActionResultBean; -import com.casic.dcms.model.CaseDetailBean; -import com.casic.dcms.model.CaseNextNodeBean; -import com.casic.dcms.utils.DialogHelper; -import com.casic.dcms.utils.MapHelper; -import com.casic.dcms.utils.PictureSelectorHelper; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.callback.ISelectorListener; -import com.casic.dcms.view.BigImageActivity; -import com.casic.dcms.vm.CaseOperateViewModel; -import com.casic.dcms.vm.CaseViewModel; -import com.casic.dcms.vm.NodeViewModel; -import com.casic.dcms.vm.UploadViewModel; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.entity.LocalMedia; -import com.pengxh.androidx.lite.adapter.EditableImageAdapter; -import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.hub.ContextHub; -import com.pengxh.androidx.lite.hub.StringHub; -import com.pengxh.androidx.lite.utils.Constant; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; -import com.pengxh.androidx.lite.vm.LoadState; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import cn.jzvd.Jzvd; - -public class CaseCheckDetailActivity extends AndroidxBaseActivity { - - private final Context context = CaseCheckDetailActivity.this; - private final ArrayList realPaths = new ArrayList<>(); //真实图片路径 - private final ArrayList imageList = new ArrayList<>(); //上传到服务器的数据集 - private CaseViewModel caseViewModel; - private UploadViewModel uploadViewModel; - private NodeViewModel nodeViewModel; - private CaseOperateViewModel operateViewModel; - private String id; - private String changeState; - private EditableImageAdapter checkImageAdapter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - - viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - } - - @Override - protected void observeRequestState() { - - } - - @Override - protected void initData() { - id = getIntent().getStringExtra(Constant.INTENT_PARAM); - caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); - caseViewModel.obtainCaseDetail(id); - - uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); - nodeViewModel = new ViewModelProvider(this).get(NodeViewModel.class); - operateViewModel = new ViewModelProvider(this).get(CaseOperateViewModel.class); - - checkImageAdapter = new EditableImageAdapter(this, 3, 13); - viewBinding.addImageRecyclerView.setAdapter(checkImageAdapter); - } - - @Override - protected void initEvent() { - caseViewModel.caseDetailModel.observe(this, new Observer() { - @Override - public void onChanged(CaseDetailBean resultBean) { - if (resultBean.getCode() == 200) { - data = resultBean.getData().get(0); - viewBinding.caseNumberView.setText(data.getCaseid()); - viewBinding.caseTypeView.setText(data.getEorcName()); - viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); - viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); - viewBinding.caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); - viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); - viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); - viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - viewBinding.caseStartTimeView.setText(data.getCreateTime()); - viewBinding.caseEndTimeView.setText(data.getNodeLimittime()); - /** - * 图片 - */ - //核实照片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.imageGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - viewBinding.audioPlayerView.setVisibility(View.VISIBLE); - viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - viewBinding.videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - viewBinding.videoPlayerView.setUp( - videoUrl, - StringHub.filterSpaceOrEnter(data.getDescription()), - Jzvd.SCREEN_NORMAL - ); - //设置第一帧为封面 - Glide.with(context) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(viewBinding.videoPlayerView.posterImageView); - } - - //处理照片 - String processImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(processImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = processImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - viewBinding.caseHandleResultView.setText(data.getProcessRemarks().equals("") ? "无处理意见" : data.getProcessRemarks()); - //TODO 服务器返回数据缺少此字段,暂时注掉 -// viewBinding.caseHandleTimeView.setText(); - } - } - }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "获取数据中..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); - } - }); - - //图片九宫格事件处理 - checkImageAdapter.setOnItemClickListener(new EditableImageAdapter.OnItemClickListener() { - @Override - public void onAddImageClick() { - PictureSelectorHelper.selectPicture(context, new ISelectorListener() { - @Override - public void onSuccess(ArrayList result) { - if (result.size() == 1) { - uploadViewModel.uploadImage(new File(result.get(0).getRealPath())); - } else { - for (LocalMedia localMedia : result) { - uploadViewModel.uploadImage(new File(localMedia.getRealPath())); - } - } - } - }); - } - - @Override - public void onItemClick(int position) { - if (realPaths.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, realPaths); - } - } - - @Override - public void onItemLongClick(View view, int position) { - imageList.remove(position); - checkImageAdapter.deleteImage(position); - } - }); - uploadViewModel.imageModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - if (checkImageAdapter.getItemCount() <= 3) { - String url = resultBean.getData(); - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - checkImageAdapter.setupImage(realPaths); - } else { - StringHub.show(context, "最多只能上传3张图片"); - } - } - } - }); - uploadViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.caseCheckLayout.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - nodeViewModel.obtainNextNode(String.valueOf(data.getCaseState())); - } - }); - nodeViewModel.nodeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseNextNodeBean resultBean) { - if (resultBean.getCode() == 200) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(context); - sheetBuilder.setTitle("核实情况"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - viewBinding.caseCheckOptView.setText(dataBean.getNextOperation()); - changeState = String.valueOf(dataBean.getNextState()); - } - }).build().show(); - } else { - StringHub.show(context, "该案卷无下级流转节点"); - } - } - }); - - viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - //案卷提交 - String remarks = viewBinding.caseCheckOptView.getText().toString(); - if (TextUtils.isEmpty(remarks)) { - StringHub.show(context, "核查意见不能为空"); - return; - } - if (TextUtils.isEmpty(changeState)) { - StringHub.show(context, "核查情况还未选择"); - return; - } - operateViewModel.checkCase(data.getProcessId(), id, - String.valueOf(data.getCaseState()), changeState, remarks, - StringHelper.reformatURL(imageList) - ); - } - }); - operateViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "案卷核查中,请稍后..."); - } else if (loadState == LoadState.Success) { - DialogHelper.dismissLoadingDialog(); - finish(); - } else { - StringHub.show(context, "核查失败,请重试"); - DialogHelper.dismissLoadingDialog(); - } - } - }); - } - - @Override - public void onDestroy() { - viewBinding.audioPlayerView.release(); - super.onDestroy(); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - public void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CaseCheckedDetailActivity.java deleted file mode 100644 index 0ffce7d..0000000 --- a/app/src/main/java/com/casic/dcms/view/check/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,228 +0,0 @@ -package com.casic.dcms.view.check; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; - -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.databinding.ActivityCaseCheckedDetailBinding; -import com.casic.dcms.model.CaseDetailBean; -import com.casic.dcms.utils.DialogHelper; -import com.casic.dcms.utils.MapHelper; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.view.BigImageActivity; -import com.casic.dcms.view.CaseProcessActivity; -import com.casic.dcms.vm.CaseViewModel; -import com.gyf.immersionbar.ImmersionBar; -import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.hub.ContextHub; -import com.pengxh.androidx.lite.hub.StringHub; -import com.pengxh.androidx.lite.utils.Constant; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; -import com.pengxh.androidx.lite.vm.LoadState; - -import java.util.ArrayList; - -import cn.jzvd.Jzvd; - -public class CaseCheckedDetailActivity extends AndroidxBaseActivity { - - private final Context context = CaseCheckedDetailActivity.this; - private CaseViewModel caseViewModel; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - - viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - } - - @Override - protected void observeRequestState() { - - } - - @Override - protected void initData() { - String id = getIntent().getStringExtra(Constant.INTENT_PARAM); - caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); - caseViewModel.obtainCaseDetail(id); - } - - @Override - protected void initEvent() { - caseViewModel.caseDetailModel.observe(this, new Observer() { - @Override - public void onChanged(CaseDetailBean resultBean) { - if (resultBean.getCode() == 200) { - data = resultBean.getData().get(0); - viewBinding.caseNumberView.setText(data.getCaseid()); - viewBinding.caseTypeView.setText(data.getEorcName()); - viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); - viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); - viewBinding.caseCommunityView.setText(data.getCommunityName()); - viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); - viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.imageGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //处理图片 - 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)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - viewBinding.audioPlayerView.setVisibility(View.VISIBLE); - viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - viewBinding.videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - viewBinding.videoPlayerView.setUp( - videoUrl, - StringHub.filterSpaceOrEnter(data.getDescription()), - Jzvd.SCREEN_NORMAL - ); - //设置第一帧为封面 - Glide.with(context) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(viewBinding.videoPlayerView.posterImageView); - } - } - } - }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "获取数据中..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); - } - }); - - viewBinding.handleLayout.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - ContextHub.navigatePageTo(context, CaseProcessActivity.class, data.getProcessId()); - } - }); - } - - @Override - protected void onDestroy() { - viewBinding.audioPlayerView.release(); - super.onDestroy(); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java b/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java index 76e3203..2c76426 100644 --- a/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java @@ -2,7 +2,6 @@ import android.widget.LinearLayout; -import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; import com.casic.dcms.R; @@ -14,6 +13,7 @@ import com.casic.dcms.utils.LocaleConstant; import com.gyf.immersionbar.ImmersionBar; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.IntHub; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; import java.util.ArrayList; @@ -28,8 +28,8 @@ @Override protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); viewBinding.titleBarLayout.titleView.setText("案卷核查"); viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); @@ -46,10 +46,10 @@ fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), LocaleConstant.CASE_PAGE_TITLES, fragmentList); - viewBinding.checkViewPager.setAdapter(adapter); + viewBinding.viewPager.setAdapter(adapter); //绑定TabLayout - viewBinding.checkTabLayout.setupWithViewPager(viewBinding.checkViewPager); - LinearLayout linearLayout = (LinearLayout) viewBinding.checkTabLayout.getChildAt(0); + viewBinding.topTabLayout.setupWithViewPager(viewBinding.viewPager); + LinearLayout linearLayout = (LinearLayout) viewBinding.topTabLayout.getChildAt(0); LinearLayoutHelper.setDivider(this, linearLayout); } diff --git a/app/src/main/java/com/casic/dcms/view/check/CheckDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CheckDetailActivity.java new file mode 100644 index 0000000..b9aeeb7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/view/check/CheckDetailActivity.java @@ -0,0 +1,356 @@ +package com.casic.dcms.view.check; + +import android.content.Context; +import android.text.TextUtils; +import android.view.View; +import android.widget.AdapterView; + +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.databinding.ActivityCheckDetailBinding; +import com.casic.dcms.model.ActionResultBean; +import com.casic.dcms.model.CaseDetailBean; +import com.casic.dcms.model.CaseNextNodeBean; +import com.casic.dcms.utils.DialogHelper; +import com.casic.dcms.utils.MapHelper; +import com.casic.dcms.utils.PictureSelectorHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.ISelectorListener; +import com.casic.dcms.view.BigImageActivity; +import com.casic.dcms.vm.CaseOperateViewModel; +import com.casic.dcms.vm.CaseViewModel; +import com.casic.dcms.vm.NodeViewModel; +import com.casic.dcms.vm.UploadViewModel; +import com.gyf.immersionbar.ImmersionBar; +import com.luck.picture.lib.entity.LocalMedia; +import com.pengxh.androidx.lite.adapter.EditableImageAdapter; +import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; +import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.ContextHub; +import com.pengxh.androidx.lite.hub.IntHub; +import com.pengxh.androidx.lite.hub.StringHub; +import com.pengxh.androidx.lite.utils.Constant; +import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.vm.LoadState; +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import cn.jzvd.Jzvd; + +public class CheckDetailActivity extends AndroidxBaseActivity { + + private final Context context = CheckDetailActivity.this; + private final ArrayList realPaths = new ArrayList<>(); //真实图片路径 + private final ArrayList imageList = new ArrayList<>(); //上传到服务器的数据集 + private CaseViewModel caseViewModel; + private UploadViewModel uploadViewModel; + private NodeViewModel nodeViewModel; + private CaseOperateViewModel operateViewModel; + private String id; + private String changeState; + private EditableImageAdapter checkImageAdapter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + + @Override + protected void setupTopBarLayout() { + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); + + viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); + viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); + } + + @Override + protected void observeRequestState() { + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + + uploadViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + + operateViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "案卷核查中,请稍后..."); + } else if (loadState == LoadState.Success) { + DialogHelper.dismissLoadingDialog(); + finish(); + } else { + StringHub.show(context, "核查失败,请重试"); + DialogHelper.dismissLoadingDialog(); + } + } + }); + } + + @Override + protected void initData() { + id = getIntent().getStringExtra(Constant.INTENT_PARAM); + caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.obtainCaseDetail(id); + caseViewModel.caseDetailModel.observe(this, new Observer() { + @Override + public void onChanged(CaseDetailBean resultBean) { + if (resultBean.getCode() == 200) { + data = resultBean.getData().get(0); + viewBinding.caseNumberView.setText(data.getCaseid()); + viewBinding.caseTypeView.setText(data.getEorcName()); + viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); + viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); + viewBinding.caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); + viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); + viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); + viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); + viewBinding.caseStartTimeView.setText(data.getCreateTime()); + viewBinding.caseEndTimeView.setText(data.getNodeLimittime()); + /** + * 图片 + */ + //核实照片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.imageGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + viewBinding.audioPlayerView.setVisibility(View.VISIBLE); + viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(videoFile)) { + viewBinding.videoPlayerView.setVisibility(View.VISIBLE); + String videoUrl = StringHelper.appendCompleteURL(videoFile); + viewBinding.videoPlayerView.setUp( + videoUrl, + StringHub.filterSpaceOrEnter(data.getDescription()), + Jzvd.SCREEN_NORMAL + ); + //设置第一帧为封面 + Glide.with(context) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(viewBinding.videoPlayerView.posterImageView); + } + + //处理照片 + String processImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(processImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = processImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.handleGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + viewBinding.caseHandleResultView.setText(data.getProcessRemarks().equals("") ? "无处理意见" : data.getProcessRemarks()); + //TODO 服务器返回数据缺少此字段,暂时注掉 +// viewBinding.caseHandleTimeView.setText(); + } + } + }); + + uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); + uploadViewModel.imageModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + if (checkImageAdapter.getItemCount() <= 3) { + String url = resultBean.getData(); + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + checkImageAdapter.setupImage(realPaths); + } else { + StringHub.show(context, "最多只能上传3张图片"); + } + } + } + }); + + nodeViewModel = new ViewModelProvider(this).get(NodeViewModel.class); + nodeViewModel.nodeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseNextNodeBean resultBean) { + if (resultBean.getCode() == 200) { + List dataBeans = resultBean.getData(); + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(context); + sheetBuilder.setTitle("核实情况"); + for (CaseNextNodeBean.DataBean dataBean : dataBeans) { + sheetBuilder.addItem(dataBean.getNextOperation()); + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); + viewBinding.caseCheckOptView.setText(dataBean.getNextOperation()); + changeState = String.valueOf(dataBean.getNextState()); + } + }).build().show(); + } else { + StringHub.show(context, "该案卷无下级流转节点"); + } + } + }); + + operateViewModel = new ViewModelProvider(this).get(CaseOperateViewModel.class); + + checkImageAdapter = new EditableImageAdapter(this, 3, 13); + viewBinding.addImageRecyclerView.setAdapter(checkImageAdapter); + } + + @Override + protected void initEvent() { + viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); + } + }); + + //图片九宫格事件处理 + checkImageAdapter.setOnItemClickListener(new EditableImageAdapter.OnItemClickListener() { + @Override + public void onAddImageClick() { + PictureSelectorHelper.selectPicture(context, new ISelectorListener() { + @Override + public void onSuccess(ArrayList result) { + if (result.size() == 1) { + uploadViewModel.uploadImage(new File(result.get(0).getRealPath())); + } else { + for (LocalMedia localMedia : result) { + uploadViewModel.uploadImage(new File(localMedia.getRealPath())); + } + } + } + }); + } + + @Override + public void onItemClick(int position) { + if (realPaths.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, realPaths); + } + } + + @Override + public void onItemLongClick(View view, int position) { + imageList.remove(position); + checkImageAdapter.deleteImage(position); + } + }); + + + viewBinding.caseCheckLayout.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + nodeViewModel.obtainNextNode(String.valueOf(data.getCaseState())); + } + }); + + viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + //案卷提交 + String remarks = viewBinding.caseCheckOptView.getText().toString(); + if (TextUtils.isEmpty(remarks)) { + StringHub.show(context, "核查意见不能为空"); + return; + } + if (TextUtils.isEmpty(changeState)) { + StringHub.show(context, "核查情况还未选择"); + return; + } + operateViewModel.checkCase(data.getProcessId(), id, + String.valueOf(data.getCaseState()), changeState, remarks, + StringHelper.reformatURL(imageList) + ); + } + }); + } + + @Override + public void onDestroy() { + viewBinding.audioPlayerView.release(); + super.onDestroy(); + } + + @Override + public void onBackPressed() { + if (Jzvd.backPress()) { + return; + } + super.onBackPressed(); + } + + @Override + public void onPause() { + super.onPause(); + Jzvd.releaseAllVideos(); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CheckedDetailActivity.java new file mode 100644 index 0000000..14e554b --- /dev/null +++ b/app/src/main/java/com/casic/dcms/view/check/CheckedDetailActivity.java @@ -0,0 +1,226 @@ +package com.casic.dcms.view.check; + +import android.content.Context; +import android.text.TextUtils; +import android.view.View; +import android.widget.AdapterView; + +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.databinding.ActivityCheckedDetailBinding; +import com.casic.dcms.model.CaseDetailBean; +import com.casic.dcms.utils.DialogHelper; +import com.casic.dcms.utils.MapHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.BigImageActivity; +import com.casic.dcms.view.CaseProcessActivity; +import com.casic.dcms.vm.CaseViewModel; +import com.gyf.immersionbar.ImmersionBar; +import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; +import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.ContextHub; +import com.pengxh.androidx.lite.hub.IntHub; +import com.pengxh.androidx.lite.hub.StringHub; +import com.pengxh.androidx.lite.utils.Constant; +import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.vm.LoadState; + +import java.util.ArrayList; + +import cn.jzvd.Jzvd; + +public class CheckedDetailActivity extends AndroidxBaseActivity { + + private final Context context = CheckedDetailActivity.this; + private CaseViewModel caseViewModel; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + + @Override + protected void setupTopBarLayout() { + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); + + viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); + viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); + } + + @Override + protected void observeRequestState() { + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + } + + @Override + protected void initData() { + String id = getIntent().getStringExtra(Constant.INTENT_PARAM); + caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.obtainCaseDetail(id); + caseViewModel.caseDetailModel.observe(this, new Observer() { + @Override + public void onChanged(CaseDetailBean resultBean) { + if (resultBean.getCode() == 200) { + data = resultBean.getData().get(0); + viewBinding.caseNumberView.setText(data.getCaseid()); + viewBinding.caseTypeView.setText(data.getEorcName()); + viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); + viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); + viewBinding.caseCommunityView.setText(data.getCommunityName()); + viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); + viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); + viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); + + //核实图片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.imageGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //处理图片 + 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)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.handleGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //核查图片 + String checkImages = data.getFileIdCheck(); + if (!TextUtils.isEmpty(checkImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = checkImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.checkGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + viewBinding.audioPlayerView.setVisibility(View.VISIBLE); + viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(videoFile)) { + viewBinding.videoPlayerView.setVisibility(View.VISIBLE); + String videoUrl = StringHelper.appendCompleteURL(videoFile); + viewBinding.videoPlayerView.setUp( + videoUrl, + StringHub.filterSpaceOrEnter(data.getDescription()), + Jzvd.SCREEN_NORMAL + ); + //设置第一帧为封面 + Glide.with(context) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(viewBinding.videoPlayerView.posterImageView); + } + } + } + }); + } + + @Override + protected void initEvent() { + viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); + } + }); + + viewBinding.handleLayout.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + ContextHub.navigatePageTo(context, CaseProcessActivity.class, data.getProcessId()); + } + }); + } + + @Override + protected void onDestroy() { + viewBinding.audioPlayerView.release(); + super.onDestroy(); + } + + @Override + public void onBackPressed() { + if (Jzvd.backPress()) { + return; + } + super.onBackPressed(); + } + + @Override + protected void onPause() { + super.onPause(); + Jzvd.releaseAllVideos(); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/map/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/view/map/CaseOnMapActivity.java index 5a85a88..c662347 100644 --- a/app/src/main/java/com/casic/dcms/view/map/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/view/map/CaseOnMapActivity.java @@ -18,10 +18,10 @@ import com.casic.dcms.R; import com.casic.dcms.databinding.ActivityMapCaseBinding; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.model.CaseHandleBean; import com.casic.dcms.model.PointDataBean; import com.casic.dcms.model.VerifyCaseModel; -import com.casic.dcms.model.check.CaseCheckModel; import com.casic.dcms.utils.ArcGisMapCreator; import com.casic.dcms.utils.LocaleConstant; import com.casic.dcms.view.CaseDetailActivity; @@ -116,11 +116,11 @@ public void onChanged(CaseCheckModel resultBean) { clearPictureMarker(); if (resultBean.isSuccess()) { - List rowsBeans = resultBean.getData().getRows(); + List rowsBeans = resultBean.getData().getRows(); if (rowsBeans.size() >= 1) { List list = new ArrayList<>(); List pointList = new ArrayList<>(); - for (CaseCheckModel.DataDTO.RowsDTO bean : rowsBeans) { + for (CaseCheckModel.DataModel.RowsModel bean : rowsBeans) { String lng = bean.getLng(); String lat = bean.getLat(); if (TextUtils.isEmpty(lng) || TextUtils.isEmpty(lat)) { diff --git a/app/src/main/java/com/casic/dcms/view/upload/BriefCaseActivity.java b/app/src/main/java/com/casic/dcms/view/upload/BriefCaseActivity.java index 2d2e8f6..794c651 100644 --- a/app/src/main/java/com/casic/dcms/view/upload/BriefCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/view/upload/BriefCaseActivity.java @@ -90,7 +90,31 @@ @Override protected void observeRequestState() { + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); + } else if (loadState == LoadState.Success) { + DialogHelper.dismissLoadingDialog(); + finish(); + } else { + StringHub.show(context, "提交失败,请重试"); + DialogHelper.dismissLoadingDialog(); + } + } + }); + uploadViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override @@ -99,8 +123,52 @@ smallTypeBeans = new ArrayList<>(); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + commonDataViewModel = new ViewModelProvider(this).get(CommonDataViewModel.class); + commonDataViewModel.largeTypeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseLargeTypeBean typeBean) { + if (typeBean.getCode() == 200) { + //设置大类数据 + largeTypeBeans = typeBean.getData(); + if (largeTypeBeans.size() != 0) { + viewBinding.caseLargeClassView.setText(largeTypeBeans.get(0).getTypeName());//默认选择第一个 + } + viewBinding.caseSmallClassView.setText("请选择"); + viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.darkGray)); + } + } + }); + commonDataViewModel.smallTypeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseSmallTypeBean typeBean) { + if (typeBean.getCode() == 200) { + //设置小类数据 + smallTypeBeans = typeBean.getData(); + if (smallTypeBeans.size() != 0) { + viewBinding.caseSmallClassView.setText(smallTypeBeans.get(0).getTypeDetailName());//默认选择第一个 + viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); + } + } + } + }); + uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); + uploadViewModel.imageModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + if (imageAdapter.getItemCount() <= 4) { + String url = resultBean.getData(); + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + imageAdapter.setupImage(realPaths); + } else { + StringHub.show(context, "最多只能上传3张图片"); + } + } + } + }); imageAdapter = new EditableImageAdapter(this, 3, 13); viewBinding.addImageRecyclerView.setAdapter(imageAdapter); @@ -132,20 +200,6 @@ }).build().show(); } }); - commonDataViewModel.largeTypeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseLargeTypeBean typeBean) { - if (typeBean.getCode() == 200) { - //设置大类数据 - largeTypeBeans = typeBean.getData(); - if (largeTypeBeans.size() != 0) { - viewBinding.caseLargeClassView.setText(largeTypeBeans.get(0).getTypeName());//默认选择第一个 - } - viewBinding.caseSmallClassView.setText("请选择"); - viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.darkGray)); - } - } - }); /** * 选择案卷大类 @@ -178,19 +232,6 @@ } } }); - commonDataViewModel.smallTypeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseSmallTypeBean typeBean) { - if (typeBean.getCode() == 200) { - //设置小类数据 - smallTypeBeans = typeBean.getData(); - if (smallTypeBeans.size() != 0) { - viewBinding.caseSmallClassView.setText(smallTypeBeans.get(0).getTypeDetailName());//默认选择第一个 - viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); - } - } - } - }); /** * 选择案卷小类 @@ -271,31 +312,6 @@ imageAdapter.deleteImage(position); } }); - uploadViewModel.imageModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - if (imageAdapter.getItemCount() <= 4) { - String url = resultBean.getData(); - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - imageAdapter.setupImage(realPaths); - } else { - StringHub.show(context, "最多只能上传3张图片"); - } - } - } - }); - uploadViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { @Override @@ -303,20 +319,6 @@ submitCase(); } }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); - } else if (loadState == LoadState.Success) { - DialogHelper.dismissLoadingDialog(); - finish(); - } else { - StringHub.show(context, "提交失败,请重试"); - DialogHelper.dismissLoadingDialog(); - } - } - }); } /** diff --git a/app/src/main/java/com/casic/dcms/view/upload/BusinessCaseActivity.java b/app/src/main/java/com/casic/dcms/view/upload/BusinessCaseActivity.java index 59b37b7..f6b6242 100644 --- a/app/src/main/java/com/casic/dcms/view/upload/BusinessCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/view/upload/BusinessCaseActivity.java @@ -84,12 +84,41 @@ @Override protected void observeRequestState() { - + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); + } else if (loadState == LoadState.Success) { + DialogHelper.dismissLoadingDialog(); + finish(); + } else { + StringHub.show(context, "提交失败,请重试"); + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override public void initData() { uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); + uploadViewModel.imageModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + if (imageAdapter.getItemCount() <= 4) { + String url = resultBean.getData(); + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + imageAdapter.setupImage(realPaths); + } else { + StringHub.show(context, "最多只能上传3张图片"); + } + } + } + }); + caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); imageAdapter = new EditableImageAdapter(this, 3, 13); @@ -142,21 +171,6 @@ imageAdapter.deleteImage(position); } }); - uploadViewModel.imageModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - if (imageAdapter.getItemCount() <= 4) { - String url = resultBean.getData(); - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - imageAdapter.setupImage(realPaths); - } else { - StringHub.show(context, "最多只能上传3张图片"); - } - } - } - }); viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { @Override @@ -164,20 +178,6 @@ submitCase(); } }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); - } else if (loadState == LoadState.Success) { - DialogHelper.dismissLoadingDialog(); - finish(); - } else { - StringHub.show(context, "提交失败,请重试"); - DialogHelper.dismissLoadingDialog(); - } - } - }); } /** diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b6a8d08..c78d07c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -64,8 +64,8 @@ - - + + diff --git a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java deleted file mode 100644 index 254f0cd..0000000 --- a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.casic.dcms.adapter; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.text.TextUtils; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.model.check.CaseCheckModel; -import com.casic.dcms.utils.StringHelper; -import com.pengxh.androidx.lite.hub.StringHub; -import com.qmuiteam.qmui.widget.QMUIRadiusImageView; - -import java.util.List; - -public class CheckCaseListAdapter extends RecyclerView.Adapter { - - private final Context context; - private final List dataBeans; - private final LayoutInflater layoutInflater; - - public CheckCaseListAdapter(Context context, List dataRows) { - this.context = context; - this.dataBeans = dataRows; - this.layoutInflater = LayoutInflater.from(context); - } - - @NonNull - @Override - public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - return new ItemViewHolder(layoutInflater.inflate(R.layout.item_case_rv_l, parent, false)); - } - - @Override - public void onBindViewHolder(@NonNull ItemViewHolder holder, @SuppressLint("RecyclerView") int position) { - holder.bindView(dataBeans.get(position)); - if (clickListener != null) { - holder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - clickListener.onClick(position); - } - }); - } - } - - @Override - public int getItemCount() { - return dataBeans.size(); - } - - class ItemViewHolder extends RecyclerView.ViewHolder { - - private final QMUIRadiusImageView caseImageView; - private final TextView caseTitleView; - private final TextView casePlaceView; - private final TextView caseTimeView; - - ItemViewHolder(@NonNull View itemView) { - super(itemView); - caseImageView = itemView.findViewById(R.id.caseImageView); - caseTitleView = itemView.findViewById(R.id.caseTitleView); - casePlaceView = itemView.findViewById(R.id.casePlaceView); - caseTimeView = itemView.findViewById(R.id.caseTimeView); - } - - void bindView(CaseCheckModel.DataDTO.RowsDTO rowsBean) { - //处理图片 - String fileIdProcess = rowsBean.getFileIdProcess(); - if (!TextUtils.isEmpty(fileIdProcess)) { - String[] split = fileIdProcess.split(","); - String firstImage = split[0]; - if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { - Glide.with(context).load(StringHelper.appendCompleteURL(firstImage)).into(caseImageView); - } - } - caseTitleView.setText(StringHub.filterSpaceOrEnter(rowsBean.getDescription())); - casePlaceView.setText("发生地点:" + StringHub.filterSpaceOrEnter(rowsBean.getFieldintro())); - caseTimeView.setText("上报时间:" + rowsBean.getReportTime()); - } - } - - private OnItemClickListener clickListener; - - public interface OnItemClickListener { - void onClick(int position); - } - - public void setOnItemClickListener(OnItemClickListener onItemClickListener) { - this.clickListener = onItemClickListener; - } -} diff --git a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java index 85cebc6..667981d 100644 --- a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java @@ -1,19 +1,27 @@ package com.casic.dcms.fragment.check; +import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; + +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.casic.dcms.adapter.CheckCaseListAdapter; +import com.bumptech.glide.Glide; +import com.casic.dcms.R; import com.casic.dcms.databinding.FragmentCheckCaseBinding; -import com.casic.dcms.model.check.CaseCheckModel; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.view.check.CaseCheckDetailActivity; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.check.CheckDetailActivity; import com.casic.dcms.vm.CaseViewModel; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseFragment; import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.StringHub; @@ -24,14 +32,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class CaseCheckFragment extends AndroidxBaseFragment { private static final String TAG = "CaseCheckFragment"; private WeakReferenceHandler weakReferenceHandler; private CaseViewModel caseViewModel; - private CheckCaseListAdapter adapter; - private List dataBeans = new ArrayList<>(); + private NormalRecyclerAdapter adapter; + private List dataBeans = new ArrayList<>(); private int pageIndex = 1; private boolean isRefresh, isLoadMore = false; @@ -49,12 +58,37 @@ protected void initData() { weakReferenceHandler = new WeakReferenceHandler(callback); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.caseCheckModel.observe(this, new Observer() { + @Override + public void onChanged(CaseCheckModel resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(requireContext(), "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(202104251); + } + } + }); } @Override public void onResume() { - obtainCheckCaseList(); super.onResume(); + pageIndex = 1; + obtainCheckCaseList(); } private void obtainCheckCaseList() { @@ -80,31 +114,6 @@ obtainCheckCaseList(); } }); - - caseViewModel.caseCheckModel.observe(this, new Observer() { - @Override - public void onChanged(CaseCheckModel resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(requireContext(), "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(202104251); - } - } - }); } private final Handler.Callback callback = new Handler.Callback() { @@ -125,16 +134,42 @@ }); } else { viewBinding.emptyView.hide(); - adapter = new CheckCaseListAdapter(requireContext(), dataBeans); - viewBinding.caseRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new CheckCaseListAdapter.OnItemClickListener() { + adapter = new NormalRecyclerAdapter(R.layout.item_case_rv_l, dataBeans) { @Override - public void onClick(int position) { - ContextHub.navigatePageTo( - requireContext(), - CaseCheckDetailActivity.class, - dataBeans.get(position).getId() - ); + public void convertView(ViewHolder viewHolder, int position, CaseCheckModel.DataModel.RowsModel item) { + String fileIdProcess = item.getFileIdProcess(); + if (!TextUtils.isEmpty(fileIdProcess)) { + String[] split = fileIdProcess.split(","); + String firstImage = split[0]; + if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Drawable drawable = Glide.with(requireContext()).load(StringHelper.appendCompleteURL(firstImage)).submit().get(); + runOnUiThread(new Runnable() { + @Override + public void run() { + viewHolder.setImageResource(R.id.caseImageView, drawable); + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + } + } + viewHolder.setText(R.id.caseTitleView, StringHub.filterSpaceOrEnter(item.getDescription())) + .setText(R.id.casePlaceView, "发生地点:" + StringHub.filterSpaceOrEnter(item.getFieldintro())) + .setText(R.id.caseTimeView, "上报时间:" + item.getReportTime()); + } + }; + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, CaseCheckModel.DataModel.RowsModel rowsModel) { + ContextHub.navigatePageTo(requireContext(), CheckDetailActivity.class, rowsModel.getId()); } }); } diff --git a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java index 3e2d904..6775b65 100644 --- a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java @@ -1,19 +1,27 @@ package com.casic.dcms.fragment.check; +import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; + +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.casic.dcms.adapter.CheckCaseListAdapter; +import com.bumptech.glide.Glide; +import com.casic.dcms.R; import com.casic.dcms.databinding.FragmentCheckCaseBinding; -import com.casic.dcms.model.check.CaseCheckModel; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.view.check.CaseCheckedDetailActivity; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.check.CheckedDetailActivity; import com.casic.dcms.vm.CaseViewModel; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseFragment; import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.StringHub; @@ -24,14 +32,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class CaseCheckedFragment extends AndroidxBaseFragment { private static final String TAG = "CaseCheckedFragment"; private WeakReferenceHandler weakReferenceHandler; private CaseViewModel caseViewModel; - private CheckCaseListAdapter adapter; - private List dataBeans = new ArrayList<>(); + private NormalRecyclerAdapter adapter; + private List dataBeans = new ArrayList<>(); private int pageIndex = 1; private boolean isRefresh, isLoadMore = false; @@ -50,12 +59,37 @@ protected void initData() { weakReferenceHandler = new WeakReferenceHandler(callback); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.caseCheckModel.observe(this, new Observer() { + @Override + public void onChanged(CaseCheckModel resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(requireContext(), "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(202104252); + } + } + }); } @Override public void onResume() { - obtainCheckCaseList(); super.onResume(); + pageIndex = 1; + obtainCheckCaseList(); } private void obtainCheckCaseList() { @@ -81,32 +115,6 @@ obtainCheckCaseList(); } }); - - caseViewModel.caseCheckModel.observe(this, new Observer() { - - @Override - public void onChanged(CaseCheckModel resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(requireContext(), "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(202104252); - } - } - }); } private final Handler.Callback callback = new Handler.Callback() { @@ -127,16 +135,42 @@ }); } else { viewBinding.emptyView.hide(); - adapter = new CheckCaseListAdapter(requireContext(), dataBeans); - viewBinding.caseRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new CheckCaseListAdapter.OnItemClickListener() { + adapter = new NormalRecyclerAdapter(R.layout.item_case_rv_l, dataBeans) { @Override - public void onClick(int position) { - ContextHub.navigatePageTo( - requireContext(), - CaseCheckedDetailActivity.class, - dataBeans.get(position).getId() - ); + public void convertView(ViewHolder viewHolder, int position, CaseCheckModel.DataModel.RowsModel item) { + String fileIdProcess = item.getFileIdProcess(); + if (!TextUtils.isEmpty(fileIdProcess)) { + String[] split = fileIdProcess.split(","); + String firstImage = split[0]; + if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Drawable drawable = Glide.with(requireContext()).load(StringHelper.appendCompleteURL(firstImage)).submit().get(); + runOnUiThread(new Runnable() { + @Override + public void run() { + viewHolder.setImageResource(R.id.caseImageView, drawable); + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + } + } + viewHolder.setText(R.id.caseTitleView, StringHub.filterSpaceOrEnter(item.getDescription())) + .setText(R.id.casePlaceView, "发生地点:" + StringHub.filterSpaceOrEnter(item.getFieldintro())) + .setText(R.id.caseTimeView, "上报时间:" + item.getReportTime()); + } + }; + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, CaseCheckModel.DataModel.RowsModel rowsModel) { + ContextHub.navigatePageTo(requireContext(), CheckedDetailActivity.class, rowsModel.getId()); } }); } diff --git a/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java b/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java new file mode 100644 index 0000000..550a1fe --- /dev/null +++ b/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java @@ -0,0 +1,358 @@ +package com.casic.dcms.model; + +import java.util.List; + +/** + * 核查-已办/待办共用一个Model + */ +public class CaseCheckModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String isPostpone; + private String description; + private String source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private String caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String lng; + private String isOvertime; + private String currRoleName; + private String fileIdVerify; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String taskName; + private String sourceName; + private String fileIdProcess; + private String reportTime; + private String onedeptName; + + public String getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(String isPostpone) { + this.isPostpone = isPostpone; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getCaseState() { + return caseState; + } + + public void setCaseState(String caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getFileIdVerify() { + return fileIdVerify; + } + + public void setFileIdVerify(String fileIdVerify) { + this.fileIdVerify = fileIdVerify; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getTaskName() { + return taskName; + } + + public void setTaskName(String taskName) { + this.taskName = taskName; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getFileIdProcess() { + return fileIdProcess; + } + + public void setFileIdProcess(String fileIdProcess) { + this.fileIdProcess = fileIdProcess; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java b/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java deleted file mode 100644 index 854e2fe..0000000 --- a/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java +++ /dev/null @@ -1,358 +0,0 @@ -package com.casic.dcms.model.check; - -import java.util.List; - -/** - * 核查-已办/待办共用一个Bean - */ -public class CaseCheckModel { - - private int code; - private DataDTO data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataDTO getData() { - return data; - } - - public void setData(DataDTO data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataDTO { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsDTO { - private int isPostpone; - private String description; - private int source; - private String eorcName; - private String casetypeDetailName; - private String remainingTime; - private String casetypeName; - private String currUserId; - private String currUserName; - private String processId; - private int caseState; - private String id; - private String shopId; - private String fieldintro; - private String lat; - private String caseStateName; - private String lng; - private String isOvertime; - private String currRoleName; - private String fileIdVerify; - private String casetypeDetailCode; - private String onedeptid; - private String eorc; - private String currRoleId; - private String caseid; - private String casetypeCode; - private String nodeLimittime; - private String taskName; - private String sourceName; - private String fileIdProcess; - private String reportTime; - private String onedeptName; - - public int getIsPostpone() { - return isPostpone; - } - - public void setIsPostpone(int isPostpone) { - this.isPostpone = isPostpone; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public int getSource() { - return source; - } - - public void setSource(int source) { - this.source = source; - } - - public String getEorcName() { - return eorcName; - } - - public void setEorcName(String eorcName) { - this.eorcName = eorcName; - } - - public String getCasetypeDetailName() { - return casetypeDetailName; - } - - public void setCasetypeDetailName(String casetypeDetailName) { - this.casetypeDetailName = casetypeDetailName; - } - - public String getRemainingTime() { - return remainingTime; - } - - public void setRemainingTime(String remainingTime) { - this.remainingTime = remainingTime; - } - - public String getCasetypeName() { - return casetypeName; - } - - public void setCasetypeName(String casetypeName) { - this.casetypeName = casetypeName; - } - - public String getCurrUserId() { - return currUserId; - } - - public void setCurrUserId(String currUserId) { - this.currUserId = currUserId; - } - - public String getCurrUserName() { - return currUserName; - } - - public void setCurrUserName(String currUserName) { - this.currUserName = currUserName; - } - - public String getProcessId() { - return processId; - } - - public void setProcessId(String processId) { - this.processId = processId; - } - - public int getCaseState() { - return caseState; - } - - public void setCaseState(int caseState) { - this.caseState = caseState; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getShopId() { - return shopId; - } - - public void setShopId(String shopId) { - this.shopId = shopId; - } - - public String getFieldintro() { - return fieldintro; - } - - public void setFieldintro(String fieldintro) { - this.fieldintro = fieldintro; - } - - public String getLat() { - return lat; - } - - public void setLat(String lat) { - this.lat = lat; - } - - public String getCaseStateName() { - return caseStateName; - } - - public void setCaseStateName(String caseStateName) { - this.caseStateName = caseStateName; - } - - public String getLng() { - return lng; - } - - public void setLng(String lng) { - this.lng = lng; - } - - public String getIsOvertime() { - return isOvertime; - } - - public void setIsOvertime(String isOvertime) { - this.isOvertime = isOvertime; - } - - public String getCurrRoleName() { - return currRoleName; - } - - public void setCurrRoleName(String currRoleName) { - this.currRoleName = currRoleName; - } - - public String getFileIdVerify() { - return fileIdVerify; - } - - public void setFileIdVerify(String fileIdVerify) { - this.fileIdVerify = fileIdVerify; - } - - public String getCasetypeDetailCode() { - return casetypeDetailCode; - } - - public void setCasetypeDetailCode(String casetypeDetailCode) { - this.casetypeDetailCode = casetypeDetailCode; - } - - public String getOnedeptid() { - return onedeptid; - } - - public void setOnedeptid(String onedeptid) { - this.onedeptid = onedeptid; - } - - public String getEorc() { - return eorc; - } - - public void setEorc(String eorc) { - this.eorc = eorc; - } - - public String getCurrRoleId() { - return currRoleId; - } - - public void setCurrRoleId(String currRoleId) { - this.currRoleId = currRoleId; - } - - public String getCaseid() { - return caseid; - } - - public void setCaseid(String caseid) { - this.caseid = caseid; - } - - public String getCasetypeCode() { - return casetypeCode; - } - - public void setCasetypeCode(String casetypeCode) { - this.casetypeCode = casetypeCode; - } - - public String getNodeLimittime() { - return nodeLimittime; - } - - public void setNodeLimittime(String nodeLimittime) { - this.nodeLimittime = nodeLimittime; - } - - public String getTaskName() { - return taskName; - } - - public void setTaskName(String taskName) { - this.taskName = taskName; - } - - public String getSourceName() { - return sourceName; - } - - public void setSourceName(String sourceName) { - this.sourceName = sourceName; - } - - public String getFileIdProcess() { - return fileIdProcess; - } - - public void setFileIdProcess(String fileIdProcess) { - this.fileIdProcess = fileIdProcess; - } - - public String getReportTime() { - return reportTime; - } - - public void setReportTime(String reportTime) { - this.reportTime = reportTime; - } - - public String getOnedeptName() { - return onedeptName; - } - - public void setOnedeptName(String onedeptName) { - this.onedeptName = onedeptName; - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java b/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java index cd3e026..d0888bc 100644 --- a/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java @@ -14,10 +14,10 @@ import com.casic.dcms.R; public class NotificationHelper { - private Context mContext; + private final Context mContext; @SuppressLint("StaticFieldLeak") - private static NotificationHelper notificationHelper; - private NotificationManager notificationManager; + private static volatile NotificationHelper notificationHelper; + private final NotificationManager notificationManager; private NotificationHelper(Context context) { this.mContext = context; @@ -45,10 +45,8 @@ //创建渠道 String id = name + "_DefaultChannel"; NotificationChannel mChannel = new NotificationChannel(id, name, NotificationManager.IMPORTANCE_HIGH); -// mChannel.setSound(Uri.parse(""), Notification.AUDIO_ATTRIBUTES_DEFAULT); mChannel.setShowBadge(true); - mChannel.enableVibration(true); - mChannel.setVibrationPattern(new long[]{100, 200, 300}); + mChannel.enableVibration(false); mChannel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);//设置锁屏可见 notificationManager.createNotificationChannel(mChannel); builder = new Notification.Builder(mContext, id); diff --git a/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java index d7bf511..691dfd5 100644 --- a/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java +++ b/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java @@ -4,20 +4,22 @@ import android.graphics.Color; import android.view.View; -import androidx.core.content.ContextCompat; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; import com.casic.dcms.R; import com.casic.dcms.databinding.ActivityCaseProcessBinding; import com.casic.dcms.model.CaseProcessBean; +import com.casic.dcms.utils.DialogHelper; import com.casic.dcms.vm.CommonDataViewModel; import com.gyf.immersionbar.ImmersionBar; import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.IntHub; import com.pengxh.androidx.lite.utils.Constant; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.vm.LoadState; import java.util.ArrayList; import java.util.List; @@ -30,8 +32,8 @@ @Override protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); viewBinding.titleBarLayout.titleView.setText("处理记录"); viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); @@ -39,7 +41,16 @@ @Override protected void observeRequestState() { - + commonDataViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override @@ -47,10 +58,6 @@ String processId = getIntent().getStringExtra(Constant.INTENT_PARAM); commonDataViewModel = new ViewModelProvider(this).get(CommonDataViewModel.class); commonDataViewModel.obtainCaseProcess(processId); - } - - @Override - protected void initEvent() { commonDataViewModel.caseProcessModel.observe(this, new Observer() { @Override public void onChanged(CaseProcessBean resultBean) { @@ -91,4 +98,9 @@ } }); } + + @Override + protected void initEvent() { + + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java deleted file mode 100644 index 30585d5..0000000 --- a/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java +++ /dev/null @@ -1,353 +0,0 @@ -package com.casic.dcms.view.check; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; - -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.databinding.ActivityCaseCheckDetailBinding; -import com.casic.dcms.model.ActionResultBean; -import com.casic.dcms.model.CaseDetailBean; -import com.casic.dcms.model.CaseNextNodeBean; -import com.casic.dcms.utils.DialogHelper; -import com.casic.dcms.utils.MapHelper; -import com.casic.dcms.utils.PictureSelectorHelper; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.callback.ISelectorListener; -import com.casic.dcms.view.BigImageActivity; -import com.casic.dcms.vm.CaseOperateViewModel; -import com.casic.dcms.vm.CaseViewModel; -import com.casic.dcms.vm.NodeViewModel; -import com.casic.dcms.vm.UploadViewModel; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.entity.LocalMedia; -import com.pengxh.androidx.lite.adapter.EditableImageAdapter; -import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.hub.ContextHub; -import com.pengxh.androidx.lite.hub.StringHub; -import com.pengxh.androidx.lite.utils.Constant; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; -import com.pengxh.androidx.lite.vm.LoadState; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import cn.jzvd.Jzvd; - -public class CaseCheckDetailActivity extends AndroidxBaseActivity { - - private final Context context = CaseCheckDetailActivity.this; - private final ArrayList realPaths = new ArrayList<>(); //真实图片路径 - private final ArrayList imageList = new ArrayList<>(); //上传到服务器的数据集 - private CaseViewModel caseViewModel; - private UploadViewModel uploadViewModel; - private NodeViewModel nodeViewModel; - private CaseOperateViewModel operateViewModel; - private String id; - private String changeState; - private EditableImageAdapter checkImageAdapter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - - viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - } - - @Override - protected void observeRequestState() { - - } - - @Override - protected void initData() { - id = getIntent().getStringExtra(Constant.INTENT_PARAM); - caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); - caseViewModel.obtainCaseDetail(id); - - uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); - nodeViewModel = new ViewModelProvider(this).get(NodeViewModel.class); - operateViewModel = new ViewModelProvider(this).get(CaseOperateViewModel.class); - - checkImageAdapter = new EditableImageAdapter(this, 3, 13); - viewBinding.addImageRecyclerView.setAdapter(checkImageAdapter); - } - - @Override - protected void initEvent() { - caseViewModel.caseDetailModel.observe(this, new Observer() { - @Override - public void onChanged(CaseDetailBean resultBean) { - if (resultBean.getCode() == 200) { - data = resultBean.getData().get(0); - viewBinding.caseNumberView.setText(data.getCaseid()); - viewBinding.caseTypeView.setText(data.getEorcName()); - viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); - viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); - viewBinding.caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); - viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); - viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); - viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - viewBinding.caseStartTimeView.setText(data.getCreateTime()); - viewBinding.caseEndTimeView.setText(data.getNodeLimittime()); - /** - * 图片 - */ - //核实照片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.imageGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - viewBinding.audioPlayerView.setVisibility(View.VISIBLE); - viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - viewBinding.videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - viewBinding.videoPlayerView.setUp( - videoUrl, - StringHub.filterSpaceOrEnter(data.getDescription()), - Jzvd.SCREEN_NORMAL - ); - //设置第一帧为封面 - Glide.with(context) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(viewBinding.videoPlayerView.posterImageView); - } - - //处理照片 - String processImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(processImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = processImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - viewBinding.caseHandleResultView.setText(data.getProcessRemarks().equals("") ? "无处理意见" : data.getProcessRemarks()); - //TODO 服务器返回数据缺少此字段,暂时注掉 -// viewBinding.caseHandleTimeView.setText(); - } - } - }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "获取数据中..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); - } - }); - - //图片九宫格事件处理 - checkImageAdapter.setOnItemClickListener(new EditableImageAdapter.OnItemClickListener() { - @Override - public void onAddImageClick() { - PictureSelectorHelper.selectPicture(context, new ISelectorListener() { - @Override - public void onSuccess(ArrayList result) { - if (result.size() == 1) { - uploadViewModel.uploadImage(new File(result.get(0).getRealPath())); - } else { - for (LocalMedia localMedia : result) { - uploadViewModel.uploadImage(new File(localMedia.getRealPath())); - } - } - } - }); - } - - @Override - public void onItemClick(int position) { - if (realPaths.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, realPaths); - } - } - - @Override - public void onItemLongClick(View view, int position) { - imageList.remove(position); - checkImageAdapter.deleteImage(position); - } - }); - uploadViewModel.imageModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - if (checkImageAdapter.getItemCount() <= 3) { - String url = resultBean.getData(); - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - checkImageAdapter.setupImage(realPaths); - } else { - StringHub.show(context, "最多只能上传3张图片"); - } - } - } - }); - uploadViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.caseCheckLayout.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - nodeViewModel.obtainNextNode(String.valueOf(data.getCaseState())); - } - }); - nodeViewModel.nodeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseNextNodeBean resultBean) { - if (resultBean.getCode() == 200) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(context); - sheetBuilder.setTitle("核实情况"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - viewBinding.caseCheckOptView.setText(dataBean.getNextOperation()); - changeState = String.valueOf(dataBean.getNextState()); - } - }).build().show(); - } else { - StringHub.show(context, "该案卷无下级流转节点"); - } - } - }); - - viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - //案卷提交 - String remarks = viewBinding.caseCheckOptView.getText().toString(); - if (TextUtils.isEmpty(remarks)) { - StringHub.show(context, "核查意见不能为空"); - return; - } - if (TextUtils.isEmpty(changeState)) { - StringHub.show(context, "核查情况还未选择"); - return; - } - operateViewModel.checkCase(data.getProcessId(), id, - String.valueOf(data.getCaseState()), changeState, remarks, - StringHelper.reformatURL(imageList) - ); - } - }); - operateViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "案卷核查中,请稍后..."); - } else if (loadState == LoadState.Success) { - DialogHelper.dismissLoadingDialog(); - finish(); - } else { - StringHub.show(context, "核查失败,请重试"); - DialogHelper.dismissLoadingDialog(); - } - } - }); - } - - @Override - public void onDestroy() { - viewBinding.audioPlayerView.release(); - super.onDestroy(); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - public void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CaseCheckedDetailActivity.java deleted file mode 100644 index 0ffce7d..0000000 --- a/app/src/main/java/com/casic/dcms/view/check/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,228 +0,0 @@ -package com.casic.dcms.view.check; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; - -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.databinding.ActivityCaseCheckedDetailBinding; -import com.casic.dcms.model.CaseDetailBean; -import com.casic.dcms.utils.DialogHelper; -import com.casic.dcms.utils.MapHelper; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.view.BigImageActivity; -import com.casic.dcms.view.CaseProcessActivity; -import com.casic.dcms.vm.CaseViewModel; -import com.gyf.immersionbar.ImmersionBar; -import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.hub.ContextHub; -import com.pengxh.androidx.lite.hub.StringHub; -import com.pengxh.androidx.lite.utils.Constant; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; -import com.pengxh.androidx.lite.vm.LoadState; - -import java.util.ArrayList; - -import cn.jzvd.Jzvd; - -public class CaseCheckedDetailActivity extends AndroidxBaseActivity { - - private final Context context = CaseCheckedDetailActivity.this; - private CaseViewModel caseViewModel; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - - viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - } - - @Override - protected void observeRequestState() { - - } - - @Override - protected void initData() { - String id = getIntent().getStringExtra(Constant.INTENT_PARAM); - caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); - caseViewModel.obtainCaseDetail(id); - } - - @Override - protected void initEvent() { - caseViewModel.caseDetailModel.observe(this, new Observer() { - @Override - public void onChanged(CaseDetailBean resultBean) { - if (resultBean.getCode() == 200) { - data = resultBean.getData().get(0); - viewBinding.caseNumberView.setText(data.getCaseid()); - viewBinding.caseTypeView.setText(data.getEorcName()); - viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); - viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); - viewBinding.caseCommunityView.setText(data.getCommunityName()); - viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); - viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.imageGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //处理图片 - 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)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - viewBinding.audioPlayerView.setVisibility(View.VISIBLE); - viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - viewBinding.videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - viewBinding.videoPlayerView.setUp( - videoUrl, - StringHub.filterSpaceOrEnter(data.getDescription()), - Jzvd.SCREEN_NORMAL - ); - //设置第一帧为封面 - Glide.with(context) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(viewBinding.videoPlayerView.posterImageView); - } - } - } - }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "获取数据中..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); - } - }); - - viewBinding.handleLayout.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - ContextHub.navigatePageTo(context, CaseProcessActivity.class, data.getProcessId()); - } - }); - } - - @Override - protected void onDestroy() { - viewBinding.audioPlayerView.release(); - super.onDestroy(); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java b/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java index 76e3203..2c76426 100644 --- a/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java @@ -2,7 +2,6 @@ import android.widget.LinearLayout; -import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; import com.casic.dcms.R; @@ -14,6 +13,7 @@ import com.casic.dcms.utils.LocaleConstant; import com.gyf.immersionbar.ImmersionBar; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.IntHub; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; import java.util.ArrayList; @@ -28,8 +28,8 @@ @Override protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); viewBinding.titleBarLayout.titleView.setText("案卷核查"); viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); @@ -46,10 +46,10 @@ fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), LocaleConstant.CASE_PAGE_TITLES, fragmentList); - viewBinding.checkViewPager.setAdapter(adapter); + viewBinding.viewPager.setAdapter(adapter); //绑定TabLayout - viewBinding.checkTabLayout.setupWithViewPager(viewBinding.checkViewPager); - LinearLayout linearLayout = (LinearLayout) viewBinding.checkTabLayout.getChildAt(0); + viewBinding.topTabLayout.setupWithViewPager(viewBinding.viewPager); + LinearLayout linearLayout = (LinearLayout) viewBinding.topTabLayout.getChildAt(0); LinearLayoutHelper.setDivider(this, linearLayout); } diff --git a/app/src/main/java/com/casic/dcms/view/check/CheckDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CheckDetailActivity.java new file mode 100644 index 0000000..b9aeeb7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/view/check/CheckDetailActivity.java @@ -0,0 +1,356 @@ +package com.casic.dcms.view.check; + +import android.content.Context; +import android.text.TextUtils; +import android.view.View; +import android.widget.AdapterView; + +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.databinding.ActivityCheckDetailBinding; +import com.casic.dcms.model.ActionResultBean; +import com.casic.dcms.model.CaseDetailBean; +import com.casic.dcms.model.CaseNextNodeBean; +import com.casic.dcms.utils.DialogHelper; +import com.casic.dcms.utils.MapHelper; +import com.casic.dcms.utils.PictureSelectorHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.ISelectorListener; +import com.casic.dcms.view.BigImageActivity; +import com.casic.dcms.vm.CaseOperateViewModel; +import com.casic.dcms.vm.CaseViewModel; +import com.casic.dcms.vm.NodeViewModel; +import com.casic.dcms.vm.UploadViewModel; +import com.gyf.immersionbar.ImmersionBar; +import com.luck.picture.lib.entity.LocalMedia; +import com.pengxh.androidx.lite.adapter.EditableImageAdapter; +import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; +import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.ContextHub; +import com.pengxh.androidx.lite.hub.IntHub; +import com.pengxh.androidx.lite.hub.StringHub; +import com.pengxh.androidx.lite.utils.Constant; +import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.vm.LoadState; +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import cn.jzvd.Jzvd; + +public class CheckDetailActivity extends AndroidxBaseActivity { + + private final Context context = CheckDetailActivity.this; + private final ArrayList realPaths = new ArrayList<>(); //真实图片路径 + private final ArrayList imageList = new ArrayList<>(); //上传到服务器的数据集 + private CaseViewModel caseViewModel; + private UploadViewModel uploadViewModel; + private NodeViewModel nodeViewModel; + private CaseOperateViewModel operateViewModel; + private String id; + private String changeState; + private EditableImageAdapter checkImageAdapter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + + @Override + protected void setupTopBarLayout() { + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); + + viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); + viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); + } + + @Override + protected void observeRequestState() { + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + + uploadViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + + operateViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "案卷核查中,请稍后..."); + } else if (loadState == LoadState.Success) { + DialogHelper.dismissLoadingDialog(); + finish(); + } else { + StringHub.show(context, "核查失败,请重试"); + DialogHelper.dismissLoadingDialog(); + } + } + }); + } + + @Override + protected void initData() { + id = getIntent().getStringExtra(Constant.INTENT_PARAM); + caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.obtainCaseDetail(id); + caseViewModel.caseDetailModel.observe(this, new Observer() { + @Override + public void onChanged(CaseDetailBean resultBean) { + if (resultBean.getCode() == 200) { + data = resultBean.getData().get(0); + viewBinding.caseNumberView.setText(data.getCaseid()); + viewBinding.caseTypeView.setText(data.getEorcName()); + viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); + viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); + viewBinding.caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); + viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); + viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); + viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); + viewBinding.caseStartTimeView.setText(data.getCreateTime()); + viewBinding.caseEndTimeView.setText(data.getNodeLimittime()); + /** + * 图片 + */ + //核实照片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.imageGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + viewBinding.audioPlayerView.setVisibility(View.VISIBLE); + viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(videoFile)) { + viewBinding.videoPlayerView.setVisibility(View.VISIBLE); + String videoUrl = StringHelper.appendCompleteURL(videoFile); + viewBinding.videoPlayerView.setUp( + videoUrl, + StringHub.filterSpaceOrEnter(data.getDescription()), + Jzvd.SCREEN_NORMAL + ); + //设置第一帧为封面 + Glide.with(context) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(viewBinding.videoPlayerView.posterImageView); + } + + //处理照片 + String processImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(processImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = processImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.handleGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + viewBinding.caseHandleResultView.setText(data.getProcessRemarks().equals("") ? "无处理意见" : data.getProcessRemarks()); + //TODO 服务器返回数据缺少此字段,暂时注掉 +// viewBinding.caseHandleTimeView.setText(); + } + } + }); + + uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); + uploadViewModel.imageModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + if (checkImageAdapter.getItemCount() <= 3) { + String url = resultBean.getData(); + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + checkImageAdapter.setupImage(realPaths); + } else { + StringHub.show(context, "最多只能上传3张图片"); + } + } + } + }); + + nodeViewModel = new ViewModelProvider(this).get(NodeViewModel.class); + nodeViewModel.nodeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseNextNodeBean resultBean) { + if (resultBean.getCode() == 200) { + List dataBeans = resultBean.getData(); + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(context); + sheetBuilder.setTitle("核实情况"); + for (CaseNextNodeBean.DataBean dataBean : dataBeans) { + sheetBuilder.addItem(dataBean.getNextOperation()); + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); + viewBinding.caseCheckOptView.setText(dataBean.getNextOperation()); + changeState = String.valueOf(dataBean.getNextState()); + } + }).build().show(); + } else { + StringHub.show(context, "该案卷无下级流转节点"); + } + } + }); + + operateViewModel = new ViewModelProvider(this).get(CaseOperateViewModel.class); + + checkImageAdapter = new EditableImageAdapter(this, 3, 13); + viewBinding.addImageRecyclerView.setAdapter(checkImageAdapter); + } + + @Override + protected void initEvent() { + viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); + } + }); + + //图片九宫格事件处理 + checkImageAdapter.setOnItemClickListener(new EditableImageAdapter.OnItemClickListener() { + @Override + public void onAddImageClick() { + PictureSelectorHelper.selectPicture(context, new ISelectorListener() { + @Override + public void onSuccess(ArrayList result) { + if (result.size() == 1) { + uploadViewModel.uploadImage(new File(result.get(0).getRealPath())); + } else { + for (LocalMedia localMedia : result) { + uploadViewModel.uploadImage(new File(localMedia.getRealPath())); + } + } + } + }); + } + + @Override + public void onItemClick(int position) { + if (realPaths.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, realPaths); + } + } + + @Override + public void onItemLongClick(View view, int position) { + imageList.remove(position); + checkImageAdapter.deleteImage(position); + } + }); + + + viewBinding.caseCheckLayout.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + nodeViewModel.obtainNextNode(String.valueOf(data.getCaseState())); + } + }); + + viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + //案卷提交 + String remarks = viewBinding.caseCheckOptView.getText().toString(); + if (TextUtils.isEmpty(remarks)) { + StringHub.show(context, "核查意见不能为空"); + return; + } + if (TextUtils.isEmpty(changeState)) { + StringHub.show(context, "核查情况还未选择"); + return; + } + operateViewModel.checkCase(data.getProcessId(), id, + String.valueOf(data.getCaseState()), changeState, remarks, + StringHelper.reformatURL(imageList) + ); + } + }); + } + + @Override + public void onDestroy() { + viewBinding.audioPlayerView.release(); + super.onDestroy(); + } + + @Override + public void onBackPressed() { + if (Jzvd.backPress()) { + return; + } + super.onBackPressed(); + } + + @Override + public void onPause() { + super.onPause(); + Jzvd.releaseAllVideos(); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CheckedDetailActivity.java new file mode 100644 index 0000000..14e554b --- /dev/null +++ b/app/src/main/java/com/casic/dcms/view/check/CheckedDetailActivity.java @@ -0,0 +1,226 @@ +package com.casic.dcms.view.check; + +import android.content.Context; +import android.text.TextUtils; +import android.view.View; +import android.widget.AdapterView; + +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.databinding.ActivityCheckedDetailBinding; +import com.casic.dcms.model.CaseDetailBean; +import com.casic.dcms.utils.DialogHelper; +import com.casic.dcms.utils.MapHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.BigImageActivity; +import com.casic.dcms.view.CaseProcessActivity; +import com.casic.dcms.vm.CaseViewModel; +import com.gyf.immersionbar.ImmersionBar; +import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; +import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.ContextHub; +import com.pengxh.androidx.lite.hub.IntHub; +import com.pengxh.androidx.lite.hub.StringHub; +import com.pengxh.androidx.lite.utils.Constant; +import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.vm.LoadState; + +import java.util.ArrayList; + +import cn.jzvd.Jzvd; + +public class CheckedDetailActivity extends AndroidxBaseActivity { + + private final Context context = CheckedDetailActivity.this; + private CaseViewModel caseViewModel; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + + @Override + protected void setupTopBarLayout() { + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); + + viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); + viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); + } + + @Override + protected void observeRequestState() { + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + } + + @Override + protected void initData() { + String id = getIntent().getStringExtra(Constant.INTENT_PARAM); + caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.obtainCaseDetail(id); + caseViewModel.caseDetailModel.observe(this, new Observer() { + @Override + public void onChanged(CaseDetailBean resultBean) { + if (resultBean.getCode() == 200) { + data = resultBean.getData().get(0); + viewBinding.caseNumberView.setText(data.getCaseid()); + viewBinding.caseTypeView.setText(data.getEorcName()); + viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); + viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); + viewBinding.caseCommunityView.setText(data.getCommunityName()); + viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); + viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); + viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); + + //核实图片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.imageGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //处理图片 + 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)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.handleGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //核查图片 + String checkImages = data.getFileIdCheck(); + if (!TextUtils.isEmpty(checkImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = checkImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.checkGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + viewBinding.audioPlayerView.setVisibility(View.VISIBLE); + viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(videoFile)) { + viewBinding.videoPlayerView.setVisibility(View.VISIBLE); + String videoUrl = StringHelper.appendCompleteURL(videoFile); + viewBinding.videoPlayerView.setUp( + videoUrl, + StringHub.filterSpaceOrEnter(data.getDescription()), + Jzvd.SCREEN_NORMAL + ); + //设置第一帧为封面 + Glide.with(context) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(viewBinding.videoPlayerView.posterImageView); + } + } + } + }); + } + + @Override + protected void initEvent() { + viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); + } + }); + + viewBinding.handleLayout.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + ContextHub.navigatePageTo(context, CaseProcessActivity.class, data.getProcessId()); + } + }); + } + + @Override + protected void onDestroy() { + viewBinding.audioPlayerView.release(); + super.onDestroy(); + } + + @Override + public void onBackPressed() { + if (Jzvd.backPress()) { + return; + } + super.onBackPressed(); + } + + @Override + protected void onPause() { + super.onPause(); + Jzvd.releaseAllVideos(); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/map/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/view/map/CaseOnMapActivity.java index 5a85a88..c662347 100644 --- a/app/src/main/java/com/casic/dcms/view/map/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/view/map/CaseOnMapActivity.java @@ -18,10 +18,10 @@ import com.casic.dcms.R; import com.casic.dcms.databinding.ActivityMapCaseBinding; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.model.CaseHandleBean; import com.casic.dcms.model.PointDataBean; import com.casic.dcms.model.VerifyCaseModel; -import com.casic.dcms.model.check.CaseCheckModel; import com.casic.dcms.utils.ArcGisMapCreator; import com.casic.dcms.utils.LocaleConstant; import com.casic.dcms.view.CaseDetailActivity; @@ -116,11 +116,11 @@ public void onChanged(CaseCheckModel resultBean) { clearPictureMarker(); if (resultBean.isSuccess()) { - List rowsBeans = resultBean.getData().getRows(); + List rowsBeans = resultBean.getData().getRows(); if (rowsBeans.size() >= 1) { List list = new ArrayList<>(); List pointList = new ArrayList<>(); - for (CaseCheckModel.DataDTO.RowsDTO bean : rowsBeans) { + for (CaseCheckModel.DataModel.RowsModel bean : rowsBeans) { String lng = bean.getLng(); String lat = bean.getLat(); if (TextUtils.isEmpty(lng) || TextUtils.isEmpty(lat)) { diff --git a/app/src/main/java/com/casic/dcms/view/upload/BriefCaseActivity.java b/app/src/main/java/com/casic/dcms/view/upload/BriefCaseActivity.java index 2d2e8f6..794c651 100644 --- a/app/src/main/java/com/casic/dcms/view/upload/BriefCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/view/upload/BriefCaseActivity.java @@ -90,7 +90,31 @@ @Override protected void observeRequestState() { + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); + } else if (loadState == LoadState.Success) { + DialogHelper.dismissLoadingDialog(); + finish(); + } else { + StringHub.show(context, "提交失败,请重试"); + DialogHelper.dismissLoadingDialog(); + } + } + }); + uploadViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override @@ -99,8 +123,52 @@ smallTypeBeans = new ArrayList<>(); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + commonDataViewModel = new ViewModelProvider(this).get(CommonDataViewModel.class); + commonDataViewModel.largeTypeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseLargeTypeBean typeBean) { + if (typeBean.getCode() == 200) { + //设置大类数据 + largeTypeBeans = typeBean.getData(); + if (largeTypeBeans.size() != 0) { + viewBinding.caseLargeClassView.setText(largeTypeBeans.get(0).getTypeName());//默认选择第一个 + } + viewBinding.caseSmallClassView.setText("请选择"); + viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.darkGray)); + } + } + }); + commonDataViewModel.smallTypeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseSmallTypeBean typeBean) { + if (typeBean.getCode() == 200) { + //设置小类数据 + smallTypeBeans = typeBean.getData(); + if (smallTypeBeans.size() != 0) { + viewBinding.caseSmallClassView.setText(smallTypeBeans.get(0).getTypeDetailName());//默认选择第一个 + viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); + } + } + } + }); + uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); + uploadViewModel.imageModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + if (imageAdapter.getItemCount() <= 4) { + String url = resultBean.getData(); + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + imageAdapter.setupImage(realPaths); + } else { + StringHub.show(context, "最多只能上传3张图片"); + } + } + } + }); imageAdapter = new EditableImageAdapter(this, 3, 13); viewBinding.addImageRecyclerView.setAdapter(imageAdapter); @@ -132,20 +200,6 @@ }).build().show(); } }); - commonDataViewModel.largeTypeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseLargeTypeBean typeBean) { - if (typeBean.getCode() == 200) { - //设置大类数据 - largeTypeBeans = typeBean.getData(); - if (largeTypeBeans.size() != 0) { - viewBinding.caseLargeClassView.setText(largeTypeBeans.get(0).getTypeName());//默认选择第一个 - } - viewBinding.caseSmallClassView.setText("请选择"); - viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.darkGray)); - } - } - }); /** * 选择案卷大类 @@ -178,19 +232,6 @@ } } }); - commonDataViewModel.smallTypeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseSmallTypeBean typeBean) { - if (typeBean.getCode() == 200) { - //设置小类数据 - smallTypeBeans = typeBean.getData(); - if (smallTypeBeans.size() != 0) { - viewBinding.caseSmallClassView.setText(smallTypeBeans.get(0).getTypeDetailName());//默认选择第一个 - viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); - } - } - } - }); /** * 选择案卷小类 @@ -271,31 +312,6 @@ imageAdapter.deleteImage(position); } }); - uploadViewModel.imageModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - if (imageAdapter.getItemCount() <= 4) { - String url = resultBean.getData(); - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - imageAdapter.setupImage(realPaths); - } else { - StringHub.show(context, "最多只能上传3张图片"); - } - } - } - }); - uploadViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { @Override @@ -303,20 +319,6 @@ submitCase(); } }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); - } else if (loadState == LoadState.Success) { - DialogHelper.dismissLoadingDialog(); - finish(); - } else { - StringHub.show(context, "提交失败,请重试"); - DialogHelper.dismissLoadingDialog(); - } - } - }); } /** diff --git a/app/src/main/java/com/casic/dcms/view/upload/BusinessCaseActivity.java b/app/src/main/java/com/casic/dcms/view/upload/BusinessCaseActivity.java index 59b37b7..f6b6242 100644 --- a/app/src/main/java/com/casic/dcms/view/upload/BusinessCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/view/upload/BusinessCaseActivity.java @@ -84,12 +84,41 @@ @Override protected void observeRequestState() { - + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); + } else if (loadState == LoadState.Success) { + DialogHelper.dismissLoadingDialog(); + finish(); + } else { + StringHub.show(context, "提交失败,请重试"); + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override public void initData() { uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); + uploadViewModel.imageModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + if (imageAdapter.getItemCount() <= 4) { + String url = resultBean.getData(); + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + imageAdapter.setupImage(realPaths); + } else { + StringHub.show(context, "最多只能上传3张图片"); + } + } + } + }); + caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); imageAdapter = new EditableImageAdapter(this, 3, 13); @@ -142,21 +171,6 @@ imageAdapter.deleteImage(position); } }); - uploadViewModel.imageModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - if (imageAdapter.getItemCount() <= 4) { - String url = resultBean.getData(); - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - imageAdapter.setupImage(realPaths); - } else { - StringHub.show(context, "最多只能上传3张图片"); - } - } - } - }); viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { @Override @@ -164,20 +178,6 @@ submitCase(); } }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); - } else if (loadState == LoadState.Success) { - DialogHelper.dismissLoadingDialog(); - finish(); - } else { - StringHub.show(context, "提交失败,请重试"); - DialogHelper.dismissLoadingDialog(); - } - } - }); } /** diff --git a/app/src/main/java/com/casic/dcms/view/upload/CommonCaseActivity.java b/app/src/main/java/com/casic/dcms/view/upload/CommonCaseActivity.java index c2a889b..1eea805 100644 --- a/app/src/main/java/com/casic/dcms/view/upload/CommonCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/view/upload/CommonCaseActivity.java @@ -121,7 +121,31 @@ @Override protected void observeRequestState() { + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); + } else if (loadState == LoadState.Success) { + DialogHelper.dismissLoadingDialog(); + finish(); + } else { + StringHub.show(context, "提交失败,请重试"); + DialogHelper.dismissLoadingDialog(); + } + } + }); + uploadViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override @@ -130,8 +154,85 @@ smallTypeBeans = new ArrayList<>(); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + commonDataViewModel = new ViewModelProvider(this).get(CommonDataViewModel.class); + commonDataViewModel.largeTypeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseLargeTypeBean typeBean) { + if (typeBean.getCode() == 200) { + //设置大类数据 + largeTypeBeans = typeBean.getData(); + if (largeTypeBeans.size() != 0) { + viewBinding.caseLargeClassView.setText(largeTypeBeans.get(0).getTypeName());//默认选择第一个 + } + viewBinding.caseSmallClassView.setText("请选择"); + viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.darkGray)); + } + } + }); + commonDataViewModel.smallTypeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseSmallTypeBean typeBean) { + if (typeBean.getCode() == 200) { + //设置小类数据 + smallTypeBeans = typeBean.getData(); + if (smallTypeBeans.size() != 0) { + viewBinding.caseSmallClassView.setText(smallTypeBeans.get(0).getTypeDetailName());//默认选择第一个 + viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); + } + } + } + }); + uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); + uploadViewModel.imageModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + if (imageAdapter.getItemCount() <= 4) { + String url = resultBean.getData(); + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + imageAdapter.setupImage(realPaths); + } else { + StringHub.show(context, "最多只能上传3张图片"); + } + } + } + }); + uploadViewModel.audioModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + audioUrl = resultBean.getData(); + /** + * http://111.198.10.15:11409/static/2021-04/8fb86dae39ad4f949e934e25465d7382.m4a + * */ + if (!TextUtils.isEmpty(audioUrl)) { + viewBinding.audioPlayerView.setVisibility(View.VISIBLE); + viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioUrl)); + } + } + } + }); + uploadViewModel.videoModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + //2021-04\\9d89df21173043cfb4188e68613e3e0e.mp4 + viewBinding.addVideoView.setVisibility(View.GONE); + viewBinding.videoPlayerView.setVisibility(View.VISIBLE); + videoUrl = resultBean.getData(); + String completeURL = StringHelper.appendCompleteURL(videoUrl); + viewBinding.videoPlayerView.setUp(completeURL, "", Jzvd.SCREEN_NORMAL); + //设置第一帧为封面 + Glide.with(context) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(completeURL) + .into(viewBinding.videoPlayerView.posterImageView); + } + } + }); progressDialog = new ProgressDialog(this); progressDialog.setMessage("视频压缩中..."); @@ -188,20 +289,6 @@ }).build().show(); } }); - commonDataViewModel.largeTypeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseLargeTypeBean typeBean) { - if (typeBean.getCode() == 200) { - //设置大类数据 - largeTypeBeans = typeBean.getData(); - if (largeTypeBeans.size() != 0) { - viewBinding.caseLargeClassView.setText(largeTypeBeans.get(0).getTypeName());//默认选择第一个 - } - viewBinding.caseSmallClassView.setText("请选择"); - viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.darkGray)); - } - } - }); /** * 选择案卷大类 @@ -234,19 +321,6 @@ } } }); - commonDataViewModel.smallTypeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseSmallTypeBean typeBean) { - if (typeBean.getCode() == 200) { - //设置小类数据 - smallTypeBeans = typeBean.getData(); - if (smallTypeBeans.size() != 0) { - viewBinding.caseSmallClassView.setText(smallTypeBeans.get(0).getTypeDetailName());//默认选择第一个 - viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); - } - } - } - }); /** * 选择案卷小类 @@ -430,64 +504,6 @@ imageAdapter.deleteImage(position); } }); - uploadViewModel.imageModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - if (imageAdapter.getItemCount() <= 4) { - String url = resultBean.getData(); - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - imageAdapter.setupImage(realPaths); - } else { - StringHub.show(context, "最多只能上传3张图片"); - } - } - } - }); - uploadViewModel.audioModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - audioUrl = resultBean.getData(); - /** - * http://111.198.10.15:11409/static/2021-04/8fb86dae39ad4f949e934e25465d7382.m4a - * */ - if (!TextUtils.isEmpty(audioUrl)) { - viewBinding.audioPlayerView.setVisibility(View.VISIBLE); - viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioUrl)); - } - } - } - }); - uploadViewModel.videoModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - //2021-04\\9d89df21173043cfb4188e68613e3e0e.mp4 - viewBinding.addVideoView.setVisibility(View.GONE); - viewBinding.videoPlayerView.setVisibility(View.VISIBLE); - videoUrl = resultBean.getData(); - String completeURL = StringHelper.appendCompleteURL(videoUrl); - viewBinding.videoPlayerView.setUp(completeURL, "", Jzvd.SCREEN_NORMAL); - //设置第一帧为封面 - Glide.with(context) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(completeURL) - .into(viewBinding.videoPlayerView.posterImageView); - } - } - }); - uploadViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { @Override @@ -495,20 +511,6 @@ submitCase(); } }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); - } else if (loadState == LoadState.Success) { - DialogHelper.dismissLoadingDialog(); - finish(); - } else { - StringHub.show(context, "提交失败,请重试"); - DialogHelper.dismissLoadingDialog(); - } - } - }); } /** diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b6a8d08..c78d07c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -64,8 +64,8 @@ - - + + diff --git a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java deleted file mode 100644 index 254f0cd..0000000 --- a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.casic.dcms.adapter; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.text.TextUtils; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.model.check.CaseCheckModel; -import com.casic.dcms.utils.StringHelper; -import com.pengxh.androidx.lite.hub.StringHub; -import com.qmuiteam.qmui.widget.QMUIRadiusImageView; - -import java.util.List; - -public class CheckCaseListAdapter extends RecyclerView.Adapter { - - private final Context context; - private final List dataBeans; - private final LayoutInflater layoutInflater; - - public CheckCaseListAdapter(Context context, List dataRows) { - this.context = context; - this.dataBeans = dataRows; - this.layoutInflater = LayoutInflater.from(context); - } - - @NonNull - @Override - public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - return new ItemViewHolder(layoutInflater.inflate(R.layout.item_case_rv_l, parent, false)); - } - - @Override - public void onBindViewHolder(@NonNull ItemViewHolder holder, @SuppressLint("RecyclerView") int position) { - holder.bindView(dataBeans.get(position)); - if (clickListener != null) { - holder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - clickListener.onClick(position); - } - }); - } - } - - @Override - public int getItemCount() { - return dataBeans.size(); - } - - class ItemViewHolder extends RecyclerView.ViewHolder { - - private final QMUIRadiusImageView caseImageView; - private final TextView caseTitleView; - private final TextView casePlaceView; - private final TextView caseTimeView; - - ItemViewHolder(@NonNull View itemView) { - super(itemView); - caseImageView = itemView.findViewById(R.id.caseImageView); - caseTitleView = itemView.findViewById(R.id.caseTitleView); - casePlaceView = itemView.findViewById(R.id.casePlaceView); - caseTimeView = itemView.findViewById(R.id.caseTimeView); - } - - void bindView(CaseCheckModel.DataDTO.RowsDTO rowsBean) { - //处理图片 - String fileIdProcess = rowsBean.getFileIdProcess(); - if (!TextUtils.isEmpty(fileIdProcess)) { - String[] split = fileIdProcess.split(","); - String firstImage = split[0]; - if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { - Glide.with(context).load(StringHelper.appendCompleteURL(firstImage)).into(caseImageView); - } - } - caseTitleView.setText(StringHub.filterSpaceOrEnter(rowsBean.getDescription())); - casePlaceView.setText("发生地点:" + StringHub.filterSpaceOrEnter(rowsBean.getFieldintro())); - caseTimeView.setText("上报时间:" + rowsBean.getReportTime()); - } - } - - private OnItemClickListener clickListener; - - public interface OnItemClickListener { - void onClick(int position); - } - - public void setOnItemClickListener(OnItemClickListener onItemClickListener) { - this.clickListener = onItemClickListener; - } -} diff --git a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java index 85cebc6..667981d 100644 --- a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java @@ -1,19 +1,27 @@ package com.casic.dcms.fragment.check; +import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; + +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.casic.dcms.adapter.CheckCaseListAdapter; +import com.bumptech.glide.Glide; +import com.casic.dcms.R; import com.casic.dcms.databinding.FragmentCheckCaseBinding; -import com.casic.dcms.model.check.CaseCheckModel; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.view.check.CaseCheckDetailActivity; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.check.CheckDetailActivity; import com.casic.dcms.vm.CaseViewModel; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseFragment; import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.StringHub; @@ -24,14 +32,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class CaseCheckFragment extends AndroidxBaseFragment { private static final String TAG = "CaseCheckFragment"; private WeakReferenceHandler weakReferenceHandler; private CaseViewModel caseViewModel; - private CheckCaseListAdapter adapter; - private List dataBeans = new ArrayList<>(); + private NormalRecyclerAdapter adapter; + private List dataBeans = new ArrayList<>(); private int pageIndex = 1; private boolean isRefresh, isLoadMore = false; @@ -49,12 +58,37 @@ protected void initData() { weakReferenceHandler = new WeakReferenceHandler(callback); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.caseCheckModel.observe(this, new Observer() { + @Override + public void onChanged(CaseCheckModel resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(requireContext(), "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(202104251); + } + } + }); } @Override public void onResume() { - obtainCheckCaseList(); super.onResume(); + pageIndex = 1; + obtainCheckCaseList(); } private void obtainCheckCaseList() { @@ -80,31 +114,6 @@ obtainCheckCaseList(); } }); - - caseViewModel.caseCheckModel.observe(this, new Observer() { - @Override - public void onChanged(CaseCheckModel resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(requireContext(), "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(202104251); - } - } - }); } private final Handler.Callback callback = new Handler.Callback() { @@ -125,16 +134,42 @@ }); } else { viewBinding.emptyView.hide(); - adapter = new CheckCaseListAdapter(requireContext(), dataBeans); - viewBinding.caseRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new CheckCaseListAdapter.OnItemClickListener() { + adapter = new NormalRecyclerAdapter(R.layout.item_case_rv_l, dataBeans) { @Override - public void onClick(int position) { - ContextHub.navigatePageTo( - requireContext(), - CaseCheckDetailActivity.class, - dataBeans.get(position).getId() - ); + public void convertView(ViewHolder viewHolder, int position, CaseCheckModel.DataModel.RowsModel item) { + String fileIdProcess = item.getFileIdProcess(); + if (!TextUtils.isEmpty(fileIdProcess)) { + String[] split = fileIdProcess.split(","); + String firstImage = split[0]; + if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Drawable drawable = Glide.with(requireContext()).load(StringHelper.appendCompleteURL(firstImage)).submit().get(); + runOnUiThread(new Runnable() { + @Override + public void run() { + viewHolder.setImageResource(R.id.caseImageView, drawable); + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + } + } + viewHolder.setText(R.id.caseTitleView, StringHub.filterSpaceOrEnter(item.getDescription())) + .setText(R.id.casePlaceView, "发生地点:" + StringHub.filterSpaceOrEnter(item.getFieldintro())) + .setText(R.id.caseTimeView, "上报时间:" + item.getReportTime()); + } + }; + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, CaseCheckModel.DataModel.RowsModel rowsModel) { + ContextHub.navigatePageTo(requireContext(), CheckDetailActivity.class, rowsModel.getId()); } }); } diff --git a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java index 3e2d904..6775b65 100644 --- a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java @@ -1,19 +1,27 @@ package com.casic.dcms.fragment.check; +import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; + +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.casic.dcms.adapter.CheckCaseListAdapter; +import com.bumptech.glide.Glide; +import com.casic.dcms.R; import com.casic.dcms.databinding.FragmentCheckCaseBinding; -import com.casic.dcms.model.check.CaseCheckModel; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.view.check.CaseCheckedDetailActivity; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.check.CheckedDetailActivity; import com.casic.dcms.vm.CaseViewModel; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseFragment; import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.StringHub; @@ -24,14 +32,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class CaseCheckedFragment extends AndroidxBaseFragment { private static final String TAG = "CaseCheckedFragment"; private WeakReferenceHandler weakReferenceHandler; private CaseViewModel caseViewModel; - private CheckCaseListAdapter adapter; - private List dataBeans = new ArrayList<>(); + private NormalRecyclerAdapter adapter; + private List dataBeans = new ArrayList<>(); private int pageIndex = 1; private boolean isRefresh, isLoadMore = false; @@ -50,12 +59,37 @@ protected void initData() { weakReferenceHandler = new WeakReferenceHandler(callback); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.caseCheckModel.observe(this, new Observer() { + @Override + public void onChanged(CaseCheckModel resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(requireContext(), "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(202104252); + } + } + }); } @Override public void onResume() { - obtainCheckCaseList(); super.onResume(); + pageIndex = 1; + obtainCheckCaseList(); } private void obtainCheckCaseList() { @@ -81,32 +115,6 @@ obtainCheckCaseList(); } }); - - caseViewModel.caseCheckModel.observe(this, new Observer() { - - @Override - public void onChanged(CaseCheckModel resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(requireContext(), "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(202104252); - } - } - }); } private final Handler.Callback callback = new Handler.Callback() { @@ -127,16 +135,42 @@ }); } else { viewBinding.emptyView.hide(); - adapter = new CheckCaseListAdapter(requireContext(), dataBeans); - viewBinding.caseRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new CheckCaseListAdapter.OnItemClickListener() { + adapter = new NormalRecyclerAdapter(R.layout.item_case_rv_l, dataBeans) { @Override - public void onClick(int position) { - ContextHub.navigatePageTo( - requireContext(), - CaseCheckedDetailActivity.class, - dataBeans.get(position).getId() - ); + public void convertView(ViewHolder viewHolder, int position, CaseCheckModel.DataModel.RowsModel item) { + String fileIdProcess = item.getFileIdProcess(); + if (!TextUtils.isEmpty(fileIdProcess)) { + String[] split = fileIdProcess.split(","); + String firstImage = split[0]; + if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Drawable drawable = Glide.with(requireContext()).load(StringHelper.appendCompleteURL(firstImage)).submit().get(); + runOnUiThread(new Runnable() { + @Override + public void run() { + viewHolder.setImageResource(R.id.caseImageView, drawable); + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + } + } + viewHolder.setText(R.id.caseTitleView, StringHub.filterSpaceOrEnter(item.getDescription())) + .setText(R.id.casePlaceView, "发生地点:" + StringHub.filterSpaceOrEnter(item.getFieldintro())) + .setText(R.id.caseTimeView, "上报时间:" + item.getReportTime()); + } + }; + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, CaseCheckModel.DataModel.RowsModel rowsModel) { + ContextHub.navigatePageTo(requireContext(), CheckedDetailActivity.class, rowsModel.getId()); } }); } diff --git a/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java b/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java new file mode 100644 index 0000000..550a1fe --- /dev/null +++ b/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java @@ -0,0 +1,358 @@ +package com.casic.dcms.model; + +import java.util.List; + +/** + * 核查-已办/待办共用一个Model + */ +public class CaseCheckModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String isPostpone; + private String description; + private String source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private String caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String lng; + private String isOvertime; + private String currRoleName; + private String fileIdVerify; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String taskName; + private String sourceName; + private String fileIdProcess; + private String reportTime; + private String onedeptName; + + public String getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(String isPostpone) { + this.isPostpone = isPostpone; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getCaseState() { + return caseState; + } + + public void setCaseState(String caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getFileIdVerify() { + return fileIdVerify; + } + + public void setFileIdVerify(String fileIdVerify) { + this.fileIdVerify = fileIdVerify; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getTaskName() { + return taskName; + } + + public void setTaskName(String taskName) { + this.taskName = taskName; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getFileIdProcess() { + return fileIdProcess; + } + + public void setFileIdProcess(String fileIdProcess) { + this.fileIdProcess = fileIdProcess; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java b/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java deleted file mode 100644 index 854e2fe..0000000 --- a/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java +++ /dev/null @@ -1,358 +0,0 @@ -package com.casic.dcms.model.check; - -import java.util.List; - -/** - * 核查-已办/待办共用一个Bean - */ -public class CaseCheckModel { - - private int code; - private DataDTO data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataDTO getData() { - return data; - } - - public void setData(DataDTO data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataDTO { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsDTO { - private int isPostpone; - private String description; - private int source; - private String eorcName; - private String casetypeDetailName; - private String remainingTime; - private String casetypeName; - private String currUserId; - private String currUserName; - private String processId; - private int caseState; - private String id; - private String shopId; - private String fieldintro; - private String lat; - private String caseStateName; - private String lng; - private String isOvertime; - private String currRoleName; - private String fileIdVerify; - private String casetypeDetailCode; - private String onedeptid; - private String eorc; - private String currRoleId; - private String caseid; - private String casetypeCode; - private String nodeLimittime; - private String taskName; - private String sourceName; - private String fileIdProcess; - private String reportTime; - private String onedeptName; - - public int getIsPostpone() { - return isPostpone; - } - - public void setIsPostpone(int isPostpone) { - this.isPostpone = isPostpone; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public int getSource() { - return source; - } - - public void setSource(int source) { - this.source = source; - } - - public String getEorcName() { - return eorcName; - } - - public void setEorcName(String eorcName) { - this.eorcName = eorcName; - } - - public String getCasetypeDetailName() { - return casetypeDetailName; - } - - public void setCasetypeDetailName(String casetypeDetailName) { - this.casetypeDetailName = casetypeDetailName; - } - - public String getRemainingTime() { - return remainingTime; - } - - public void setRemainingTime(String remainingTime) { - this.remainingTime = remainingTime; - } - - public String getCasetypeName() { - return casetypeName; - } - - public void setCasetypeName(String casetypeName) { - this.casetypeName = casetypeName; - } - - public String getCurrUserId() { - return currUserId; - } - - public void setCurrUserId(String currUserId) { - this.currUserId = currUserId; - } - - public String getCurrUserName() { - return currUserName; - } - - public void setCurrUserName(String currUserName) { - this.currUserName = currUserName; - } - - public String getProcessId() { - return processId; - } - - public void setProcessId(String processId) { - this.processId = processId; - } - - public int getCaseState() { - return caseState; - } - - public void setCaseState(int caseState) { - this.caseState = caseState; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getShopId() { - return shopId; - } - - public void setShopId(String shopId) { - this.shopId = shopId; - } - - public String getFieldintro() { - return fieldintro; - } - - public void setFieldintro(String fieldintro) { - this.fieldintro = fieldintro; - } - - public String getLat() { - return lat; - } - - public void setLat(String lat) { - this.lat = lat; - } - - public String getCaseStateName() { - return caseStateName; - } - - public void setCaseStateName(String caseStateName) { - this.caseStateName = caseStateName; - } - - public String getLng() { - return lng; - } - - public void setLng(String lng) { - this.lng = lng; - } - - public String getIsOvertime() { - return isOvertime; - } - - public void setIsOvertime(String isOvertime) { - this.isOvertime = isOvertime; - } - - public String getCurrRoleName() { - return currRoleName; - } - - public void setCurrRoleName(String currRoleName) { - this.currRoleName = currRoleName; - } - - public String getFileIdVerify() { - return fileIdVerify; - } - - public void setFileIdVerify(String fileIdVerify) { - this.fileIdVerify = fileIdVerify; - } - - public String getCasetypeDetailCode() { - return casetypeDetailCode; - } - - public void setCasetypeDetailCode(String casetypeDetailCode) { - this.casetypeDetailCode = casetypeDetailCode; - } - - public String getOnedeptid() { - return onedeptid; - } - - public void setOnedeptid(String onedeptid) { - this.onedeptid = onedeptid; - } - - public String getEorc() { - return eorc; - } - - public void setEorc(String eorc) { - this.eorc = eorc; - } - - public String getCurrRoleId() { - return currRoleId; - } - - public void setCurrRoleId(String currRoleId) { - this.currRoleId = currRoleId; - } - - public String getCaseid() { - return caseid; - } - - public void setCaseid(String caseid) { - this.caseid = caseid; - } - - public String getCasetypeCode() { - return casetypeCode; - } - - public void setCasetypeCode(String casetypeCode) { - this.casetypeCode = casetypeCode; - } - - public String getNodeLimittime() { - return nodeLimittime; - } - - public void setNodeLimittime(String nodeLimittime) { - this.nodeLimittime = nodeLimittime; - } - - public String getTaskName() { - return taskName; - } - - public void setTaskName(String taskName) { - this.taskName = taskName; - } - - public String getSourceName() { - return sourceName; - } - - public void setSourceName(String sourceName) { - this.sourceName = sourceName; - } - - public String getFileIdProcess() { - return fileIdProcess; - } - - public void setFileIdProcess(String fileIdProcess) { - this.fileIdProcess = fileIdProcess; - } - - public String getReportTime() { - return reportTime; - } - - public void setReportTime(String reportTime) { - this.reportTime = reportTime; - } - - public String getOnedeptName() { - return onedeptName; - } - - public void setOnedeptName(String onedeptName) { - this.onedeptName = onedeptName; - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java b/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java index cd3e026..d0888bc 100644 --- a/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java @@ -14,10 +14,10 @@ import com.casic.dcms.R; public class NotificationHelper { - private Context mContext; + private final Context mContext; @SuppressLint("StaticFieldLeak") - private static NotificationHelper notificationHelper; - private NotificationManager notificationManager; + private static volatile NotificationHelper notificationHelper; + private final NotificationManager notificationManager; private NotificationHelper(Context context) { this.mContext = context; @@ -45,10 +45,8 @@ //创建渠道 String id = name + "_DefaultChannel"; NotificationChannel mChannel = new NotificationChannel(id, name, NotificationManager.IMPORTANCE_HIGH); -// mChannel.setSound(Uri.parse(""), Notification.AUDIO_ATTRIBUTES_DEFAULT); mChannel.setShowBadge(true); - mChannel.enableVibration(true); - mChannel.setVibrationPattern(new long[]{100, 200, 300}); + mChannel.enableVibration(false); mChannel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);//设置锁屏可见 notificationManager.createNotificationChannel(mChannel); builder = new Notification.Builder(mContext, id); diff --git a/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java index d7bf511..691dfd5 100644 --- a/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java +++ b/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java @@ -4,20 +4,22 @@ import android.graphics.Color; import android.view.View; -import androidx.core.content.ContextCompat; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; import com.casic.dcms.R; import com.casic.dcms.databinding.ActivityCaseProcessBinding; import com.casic.dcms.model.CaseProcessBean; +import com.casic.dcms.utils.DialogHelper; import com.casic.dcms.vm.CommonDataViewModel; import com.gyf.immersionbar.ImmersionBar; import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.IntHub; import com.pengxh.androidx.lite.utils.Constant; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.vm.LoadState; import java.util.ArrayList; import java.util.List; @@ -30,8 +32,8 @@ @Override protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); viewBinding.titleBarLayout.titleView.setText("处理记录"); viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); @@ -39,7 +41,16 @@ @Override protected void observeRequestState() { - + commonDataViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override @@ -47,10 +58,6 @@ String processId = getIntent().getStringExtra(Constant.INTENT_PARAM); commonDataViewModel = new ViewModelProvider(this).get(CommonDataViewModel.class); commonDataViewModel.obtainCaseProcess(processId); - } - - @Override - protected void initEvent() { commonDataViewModel.caseProcessModel.observe(this, new Observer() { @Override public void onChanged(CaseProcessBean resultBean) { @@ -91,4 +98,9 @@ } }); } + + @Override + protected void initEvent() { + + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java deleted file mode 100644 index 30585d5..0000000 --- a/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java +++ /dev/null @@ -1,353 +0,0 @@ -package com.casic.dcms.view.check; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; - -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.databinding.ActivityCaseCheckDetailBinding; -import com.casic.dcms.model.ActionResultBean; -import com.casic.dcms.model.CaseDetailBean; -import com.casic.dcms.model.CaseNextNodeBean; -import com.casic.dcms.utils.DialogHelper; -import com.casic.dcms.utils.MapHelper; -import com.casic.dcms.utils.PictureSelectorHelper; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.callback.ISelectorListener; -import com.casic.dcms.view.BigImageActivity; -import com.casic.dcms.vm.CaseOperateViewModel; -import com.casic.dcms.vm.CaseViewModel; -import com.casic.dcms.vm.NodeViewModel; -import com.casic.dcms.vm.UploadViewModel; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.entity.LocalMedia; -import com.pengxh.androidx.lite.adapter.EditableImageAdapter; -import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.hub.ContextHub; -import com.pengxh.androidx.lite.hub.StringHub; -import com.pengxh.androidx.lite.utils.Constant; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; -import com.pengxh.androidx.lite.vm.LoadState; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import cn.jzvd.Jzvd; - -public class CaseCheckDetailActivity extends AndroidxBaseActivity { - - private final Context context = CaseCheckDetailActivity.this; - private final ArrayList realPaths = new ArrayList<>(); //真实图片路径 - private final ArrayList imageList = new ArrayList<>(); //上传到服务器的数据集 - private CaseViewModel caseViewModel; - private UploadViewModel uploadViewModel; - private NodeViewModel nodeViewModel; - private CaseOperateViewModel operateViewModel; - private String id; - private String changeState; - private EditableImageAdapter checkImageAdapter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - - viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - } - - @Override - protected void observeRequestState() { - - } - - @Override - protected void initData() { - id = getIntent().getStringExtra(Constant.INTENT_PARAM); - caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); - caseViewModel.obtainCaseDetail(id); - - uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); - nodeViewModel = new ViewModelProvider(this).get(NodeViewModel.class); - operateViewModel = new ViewModelProvider(this).get(CaseOperateViewModel.class); - - checkImageAdapter = new EditableImageAdapter(this, 3, 13); - viewBinding.addImageRecyclerView.setAdapter(checkImageAdapter); - } - - @Override - protected void initEvent() { - caseViewModel.caseDetailModel.observe(this, new Observer() { - @Override - public void onChanged(CaseDetailBean resultBean) { - if (resultBean.getCode() == 200) { - data = resultBean.getData().get(0); - viewBinding.caseNumberView.setText(data.getCaseid()); - viewBinding.caseTypeView.setText(data.getEorcName()); - viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); - viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); - viewBinding.caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); - viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); - viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); - viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - viewBinding.caseStartTimeView.setText(data.getCreateTime()); - viewBinding.caseEndTimeView.setText(data.getNodeLimittime()); - /** - * 图片 - */ - //核实照片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.imageGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - viewBinding.audioPlayerView.setVisibility(View.VISIBLE); - viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - viewBinding.videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - viewBinding.videoPlayerView.setUp( - videoUrl, - StringHub.filterSpaceOrEnter(data.getDescription()), - Jzvd.SCREEN_NORMAL - ); - //设置第一帧为封面 - Glide.with(context) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(viewBinding.videoPlayerView.posterImageView); - } - - //处理照片 - String processImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(processImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = processImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - viewBinding.caseHandleResultView.setText(data.getProcessRemarks().equals("") ? "无处理意见" : data.getProcessRemarks()); - //TODO 服务器返回数据缺少此字段,暂时注掉 -// viewBinding.caseHandleTimeView.setText(); - } - } - }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "获取数据中..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); - } - }); - - //图片九宫格事件处理 - checkImageAdapter.setOnItemClickListener(new EditableImageAdapter.OnItemClickListener() { - @Override - public void onAddImageClick() { - PictureSelectorHelper.selectPicture(context, new ISelectorListener() { - @Override - public void onSuccess(ArrayList result) { - if (result.size() == 1) { - uploadViewModel.uploadImage(new File(result.get(0).getRealPath())); - } else { - for (LocalMedia localMedia : result) { - uploadViewModel.uploadImage(new File(localMedia.getRealPath())); - } - } - } - }); - } - - @Override - public void onItemClick(int position) { - if (realPaths.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, realPaths); - } - } - - @Override - public void onItemLongClick(View view, int position) { - imageList.remove(position); - checkImageAdapter.deleteImage(position); - } - }); - uploadViewModel.imageModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - if (checkImageAdapter.getItemCount() <= 3) { - String url = resultBean.getData(); - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - checkImageAdapter.setupImage(realPaths); - } else { - StringHub.show(context, "最多只能上传3张图片"); - } - } - } - }); - uploadViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.caseCheckLayout.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - nodeViewModel.obtainNextNode(String.valueOf(data.getCaseState())); - } - }); - nodeViewModel.nodeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseNextNodeBean resultBean) { - if (resultBean.getCode() == 200) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(context); - sheetBuilder.setTitle("核实情况"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - viewBinding.caseCheckOptView.setText(dataBean.getNextOperation()); - changeState = String.valueOf(dataBean.getNextState()); - } - }).build().show(); - } else { - StringHub.show(context, "该案卷无下级流转节点"); - } - } - }); - - viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - //案卷提交 - String remarks = viewBinding.caseCheckOptView.getText().toString(); - if (TextUtils.isEmpty(remarks)) { - StringHub.show(context, "核查意见不能为空"); - return; - } - if (TextUtils.isEmpty(changeState)) { - StringHub.show(context, "核查情况还未选择"); - return; - } - operateViewModel.checkCase(data.getProcessId(), id, - String.valueOf(data.getCaseState()), changeState, remarks, - StringHelper.reformatURL(imageList) - ); - } - }); - operateViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "案卷核查中,请稍后..."); - } else if (loadState == LoadState.Success) { - DialogHelper.dismissLoadingDialog(); - finish(); - } else { - StringHub.show(context, "核查失败,请重试"); - DialogHelper.dismissLoadingDialog(); - } - } - }); - } - - @Override - public void onDestroy() { - viewBinding.audioPlayerView.release(); - super.onDestroy(); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - public void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CaseCheckedDetailActivity.java deleted file mode 100644 index 0ffce7d..0000000 --- a/app/src/main/java/com/casic/dcms/view/check/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,228 +0,0 @@ -package com.casic.dcms.view.check; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; - -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.databinding.ActivityCaseCheckedDetailBinding; -import com.casic.dcms.model.CaseDetailBean; -import com.casic.dcms.utils.DialogHelper; -import com.casic.dcms.utils.MapHelper; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.view.BigImageActivity; -import com.casic.dcms.view.CaseProcessActivity; -import com.casic.dcms.vm.CaseViewModel; -import com.gyf.immersionbar.ImmersionBar; -import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.hub.ContextHub; -import com.pengxh.androidx.lite.hub.StringHub; -import com.pengxh.androidx.lite.utils.Constant; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; -import com.pengxh.androidx.lite.vm.LoadState; - -import java.util.ArrayList; - -import cn.jzvd.Jzvd; - -public class CaseCheckedDetailActivity extends AndroidxBaseActivity { - - private final Context context = CaseCheckedDetailActivity.this; - private CaseViewModel caseViewModel; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - - viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - } - - @Override - protected void observeRequestState() { - - } - - @Override - protected void initData() { - String id = getIntent().getStringExtra(Constant.INTENT_PARAM); - caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); - caseViewModel.obtainCaseDetail(id); - } - - @Override - protected void initEvent() { - caseViewModel.caseDetailModel.observe(this, new Observer() { - @Override - public void onChanged(CaseDetailBean resultBean) { - if (resultBean.getCode() == 200) { - data = resultBean.getData().get(0); - viewBinding.caseNumberView.setText(data.getCaseid()); - viewBinding.caseTypeView.setText(data.getEorcName()); - viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); - viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); - viewBinding.caseCommunityView.setText(data.getCommunityName()); - viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); - viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.imageGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //处理图片 - 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)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - viewBinding.audioPlayerView.setVisibility(View.VISIBLE); - viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - viewBinding.videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - viewBinding.videoPlayerView.setUp( - videoUrl, - StringHub.filterSpaceOrEnter(data.getDescription()), - Jzvd.SCREEN_NORMAL - ); - //设置第一帧为封面 - Glide.with(context) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(viewBinding.videoPlayerView.posterImageView); - } - } - } - }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "获取数据中..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); - } - }); - - viewBinding.handleLayout.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - ContextHub.navigatePageTo(context, CaseProcessActivity.class, data.getProcessId()); - } - }); - } - - @Override - protected void onDestroy() { - viewBinding.audioPlayerView.release(); - super.onDestroy(); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java b/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java index 76e3203..2c76426 100644 --- a/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java @@ -2,7 +2,6 @@ import android.widget.LinearLayout; -import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; import com.casic.dcms.R; @@ -14,6 +13,7 @@ import com.casic.dcms.utils.LocaleConstant; import com.gyf.immersionbar.ImmersionBar; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.IntHub; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; import java.util.ArrayList; @@ -28,8 +28,8 @@ @Override protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); viewBinding.titleBarLayout.titleView.setText("案卷核查"); viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); @@ -46,10 +46,10 @@ fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), LocaleConstant.CASE_PAGE_TITLES, fragmentList); - viewBinding.checkViewPager.setAdapter(adapter); + viewBinding.viewPager.setAdapter(adapter); //绑定TabLayout - viewBinding.checkTabLayout.setupWithViewPager(viewBinding.checkViewPager); - LinearLayout linearLayout = (LinearLayout) viewBinding.checkTabLayout.getChildAt(0); + viewBinding.topTabLayout.setupWithViewPager(viewBinding.viewPager); + LinearLayout linearLayout = (LinearLayout) viewBinding.topTabLayout.getChildAt(0); LinearLayoutHelper.setDivider(this, linearLayout); } diff --git a/app/src/main/java/com/casic/dcms/view/check/CheckDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CheckDetailActivity.java new file mode 100644 index 0000000..b9aeeb7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/view/check/CheckDetailActivity.java @@ -0,0 +1,356 @@ +package com.casic.dcms.view.check; + +import android.content.Context; +import android.text.TextUtils; +import android.view.View; +import android.widget.AdapterView; + +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.databinding.ActivityCheckDetailBinding; +import com.casic.dcms.model.ActionResultBean; +import com.casic.dcms.model.CaseDetailBean; +import com.casic.dcms.model.CaseNextNodeBean; +import com.casic.dcms.utils.DialogHelper; +import com.casic.dcms.utils.MapHelper; +import com.casic.dcms.utils.PictureSelectorHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.ISelectorListener; +import com.casic.dcms.view.BigImageActivity; +import com.casic.dcms.vm.CaseOperateViewModel; +import com.casic.dcms.vm.CaseViewModel; +import com.casic.dcms.vm.NodeViewModel; +import com.casic.dcms.vm.UploadViewModel; +import com.gyf.immersionbar.ImmersionBar; +import com.luck.picture.lib.entity.LocalMedia; +import com.pengxh.androidx.lite.adapter.EditableImageAdapter; +import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; +import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.ContextHub; +import com.pengxh.androidx.lite.hub.IntHub; +import com.pengxh.androidx.lite.hub.StringHub; +import com.pengxh.androidx.lite.utils.Constant; +import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.vm.LoadState; +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import cn.jzvd.Jzvd; + +public class CheckDetailActivity extends AndroidxBaseActivity { + + private final Context context = CheckDetailActivity.this; + private final ArrayList realPaths = new ArrayList<>(); //真实图片路径 + private final ArrayList imageList = new ArrayList<>(); //上传到服务器的数据集 + private CaseViewModel caseViewModel; + private UploadViewModel uploadViewModel; + private NodeViewModel nodeViewModel; + private CaseOperateViewModel operateViewModel; + private String id; + private String changeState; + private EditableImageAdapter checkImageAdapter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + + @Override + protected void setupTopBarLayout() { + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); + + viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); + viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); + } + + @Override + protected void observeRequestState() { + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + + uploadViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + + operateViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "案卷核查中,请稍后..."); + } else if (loadState == LoadState.Success) { + DialogHelper.dismissLoadingDialog(); + finish(); + } else { + StringHub.show(context, "核查失败,请重试"); + DialogHelper.dismissLoadingDialog(); + } + } + }); + } + + @Override + protected void initData() { + id = getIntent().getStringExtra(Constant.INTENT_PARAM); + caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.obtainCaseDetail(id); + caseViewModel.caseDetailModel.observe(this, new Observer() { + @Override + public void onChanged(CaseDetailBean resultBean) { + if (resultBean.getCode() == 200) { + data = resultBean.getData().get(0); + viewBinding.caseNumberView.setText(data.getCaseid()); + viewBinding.caseTypeView.setText(data.getEorcName()); + viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); + viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); + viewBinding.caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); + viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); + viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); + viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); + viewBinding.caseStartTimeView.setText(data.getCreateTime()); + viewBinding.caseEndTimeView.setText(data.getNodeLimittime()); + /** + * 图片 + */ + //核实照片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.imageGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + viewBinding.audioPlayerView.setVisibility(View.VISIBLE); + viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(videoFile)) { + viewBinding.videoPlayerView.setVisibility(View.VISIBLE); + String videoUrl = StringHelper.appendCompleteURL(videoFile); + viewBinding.videoPlayerView.setUp( + videoUrl, + StringHub.filterSpaceOrEnter(data.getDescription()), + Jzvd.SCREEN_NORMAL + ); + //设置第一帧为封面 + Glide.with(context) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(viewBinding.videoPlayerView.posterImageView); + } + + //处理照片 + String processImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(processImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = processImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.handleGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + viewBinding.caseHandleResultView.setText(data.getProcessRemarks().equals("") ? "无处理意见" : data.getProcessRemarks()); + //TODO 服务器返回数据缺少此字段,暂时注掉 +// viewBinding.caseHandleTimeView.setText(); + } + } + }); + + uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); + uploadViewModel.imageModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + if (checkImageAdapter.getItemCount() <= 3) { + String url = resultBean.getData(); + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + checkImageAdapter.setupImage(realPaths); + } else { + StringHub.show(context, "最多只能上传3张图片"); + } + } + } + }); + + nodeViewModel = new ViewModelProvider(this).get(NodeViewModel.class); + nodeViewModel.nodeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseNextNodeBean resultBean) { + if (resultBean.getCode() == 200) { + List dataBeans = resultBean.getData(); + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(context); + sheetBuilder.setTitle("核实情况"); + for (CaseNextNodeBean.DataBean dataBean : dataBeans) { + sheetBuilder.addItem(dataBean.getNextOperation()); + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); + viewBinding.caseCheckOptView.setText(dataBean.getNextOperation()); + changeState = String.valueOf(dataBean.getNextState()); + } + }).build().show(); + } else { + StringHub.show(context, "该案卷无下级流转节点"); + } + } + }); + + operateViewModel = new ViewModelProvider(this).get(CaseOperateViewModel.class); + + checkImageAdapter = new EditableImageAdapter(this, 3, 13); + viewBinding.addImageRecyclerView.setAdapter(checkImageAdapter); + } + + @Override + protected void initEvent() { + viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); + } + }); + + //图片九宫格事件处理 + checkImageAdapter.setOnItemClickListener(new EditableImageAdapter.OnItemClickListener() { + @Override + public void onAddImageClick() { + PictureSelectorHelper.selectPicture(context, new ISelectorListener() { + @Override + public void onSuccess(ArrayList result) { + if (result.size() == 1) { + uploadViewModel.uploadImage(new File(result.get(0).getRealPath())); + } else { + for (LocalMedia localMedia : result) { + uploadViewModel.uploadImage(new File(localMedia.getRealPath())); + } + } + } + }); + } + + @Override + public void onItemClick(int position) { + if (realPaths.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, realPaths); + } + } + + @Override + public void onItemLongClick(View view, int position) { + imageList.remove(position); + checkImageAdapter.deleteImage(position); + } + }); + + + viewBinding.caseCheckLayout.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + nodeViewModel.obtainNextNode(String.valueOf(data.getCaseState())); + } + }); + + viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + //案卷提交 + String remarks = viewBinding.caseCheckOptView.getText().toString(); + if (TextUtils.isEmpty(remarks)) { + StringHub.show(context, "核查意见不能为空"); + return; + } + if (TextUtils.isEmpty(changeState)) { + StringHub.show(context, "核查情况还未选择"); + return; + } + operateViewModel.checkCase(data.getProcessId(), id, + String.valueOf(data.getCaseState()), changeState, remarks, + StringHelper.reformatURL(imageList) + ); + } + }); + } + + @Override + public void onDestroy() { + viewBinding.audioPlayerView.release(); + super.onDestroy(); + } + + @Override + public void onBackPressed() { + if (Jzvd.backPress()) { + return; + } + super.onBackPressed(); + } + + @Override + public void onPause() { + super.onPause(); + Jzvd.releaseAllVideos(); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CheckedDetailActivity.java new file mode 100644 index 0000000..14e554b --- /dev/null +++ b/app/src/main/java/com/casic/dcms/view/check/CheckedDetailActivity.java @@ -0,0 +1,226 @@ +package com.casic.dcms.view.check; + +import android.content.Context; +import android.text.TextUtils; +import android.view.View; +import android.widget.AdapterView; + +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.databinding.ActivityCheckedDetailBinding; +import com.casic.dcms.model.CaseDetailBean; +import com.casic.dcms.utils.DialogHelper; +import com.casic.dcms.utils.MapHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.BigImageActivity; +import com.casic.dcms.view.CaseProcessActivity; +import com.casic.dcms.vm.CaseViewModel; +import com.gyf.immersionbar.ImmersionBar; +import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; +import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.ContextHub; +import com.pengxh.androidx.lite.hub.IntHub; +import com.pengxh.androidx.lite.hub.StringHub; +import com.pengxh.androidx.lite.utils.Constant; +import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.vm.LoadState; + +import java.util.ArrayList; + +import cn.jzvd.Jzvd; + +public class CheckedDetailActivity extends AndroidxBaseActivity { + + private final Context context = CheckedDetailActivity.this; + private CaseViewModel caseViewModel; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + + @Override + protected void setupTopBarLayout() { + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); + + viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); + viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); + } + + @Override + protected void observeRequestState() { + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + } + + @Override + protected void initData() { + String id = getIntent().getStringExtra(Constant.INTENT_PARAM); + caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.obtainCaseDetail(id); + caseViewModel.caseDetailModel.observe(this, new Observer() { + @Override + public void onChanged(CaseDetailBean resultBean) { + if (resultBean.getCode() == 200) { + data = resultBean.getData().get(0); + viewBinding.caseNumberView.setText(data.getCaseid()); + viewBinding.caseTypeView.setText(data.getEorcName()); + viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); + viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); + viewBinding.caseCommunityView.setText(data.getCommunityName()); + viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); + viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); + viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); + + //核实图片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.imageGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //处理图片 + 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)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.handleGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //核查图片 + String checkImages = data.getFileIdCheck(); + if (!TextUtils.isEmpty(checkImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = checkImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.checkGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + viewBinding.audioPlayerView.setVisibility(View.VISIBLE); + viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(videoFile)) { + viewBinding.videoPlayerView.setVisibility(View.VISIBLE); + String videoUrl = StringHelper.appendCompleteURL(videoFile); + viewBinding.videoPlayerView.setUp( + videoUrl, + StringHub.filterSpaceOrEnter(data.getDescription()), + Jzvd.SCREEN_NORMAL + ); + //设置第一帧为封面 + Glide.with(context) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(viewBinding.videoPlayerView.posterImageView); + } + } + } + }); + } + + @Override + protected void initEvent() { + viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); + } + }); + + viewBinding.handleLayout.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + ContextHub.navigatePageTo(context, CaseProcessActivity.class, data.getProcessId()); + } + }); + } + + @Override + protected void onDestroy() { + viewBinding.audioPlayerView.release(); + super.onDestroy(); + } + + @Override + public void onBackPressed() { + if (Jzvd.backPress()) { + return; + } + super.onBackPressed(); + } + + @Override + protected void onPause() { + super.onPause(); + Jzvd.releaseAllVideos(); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/map/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/view/map/CaseOnMapActivity.java index 5a85a88..c662347 100644 --- a/app/src/main/java/com/casic/dcms/view/map/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/view/map/CaseOnMapActivity.java @@ -18,10 +18,10 @@ import com.casic.dcms.R; import com.casic.dcms.databinding.ActivityMapCaseBinding; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.model.CaseHandleBean; import com.casic.dcms.model.PointDataBean; import com.casic.dcms.model.VerifyCaseModel; -import com.casic.dcms.model.check.CaseCheckModel; import com.casic.dcms.utils.ArcGisMapCreator; import com.casic.dcms.utils.LocaleConstant; import com.casic.dcms.view.CaseDetailActivity; @@ -116,11 +116,11 @@ public void onChanged(CaseCheckModel resultBean) { clearPictureMarker(); if (resultBean.isSuccess()) { - List rowsBeans = resultBean.getData().getRows(); + List rowsBeans = resultBean.getData().getRows(); if (rowsBeans.size() >= 1) { List list = new ArrayList<>(); List pointList = new ArrayList<>(); - for (CaseCheckModel.DataDTO.RowsDTO bean : rowsBeans) { + for (CaseCheckModel.DataModel.RowsModel bean : rowsBeans) { String lng = bean.getLng(); String lat = bean.getLat(); if (TextUtils.isEmpty(lng) || TextUtils.isEmpty(lat)) { diff --git a/app/src/main/java/com/casic/dcms/view/upload/BriefCaseActivity.java b/app/src/main/java/com/casic/dcms/view/upload/BriefCaseActivity.java index 2d2e8f6..794c651 100644 --- a/app/src/main/java/com/casic/dcms/view/upload/BriefCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/view/upload/BriefCaseActivity.java @@ -90,7 +90,31 @@ @Override protected void observeRequestState() { + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); + } else if (loadState == LoadState.Success) { + DialogHelper.dismissLoadingDialog(); + finish(); + } else { + StringHub.show(context, "提交失败,请重试"); + DialogHelper.dismissLoadingDialog(); + } + } + }); + uploadViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override @@ -99,8 +123,52 @@ smallTypeBeans = new ArrayList<>(); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + commonDataViewModel = new ViewModelProvider(this).get(CommonDataViewModel.class); + commonDataViewModel.largeTypeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseLargeTypeBean typeBean) { + if (typeBean.getCode() == 200) { + //设置大类数据 + largeTypeBeans = typeBean.getData(); + if (largeTypeBeans.size() != 0) { + viewBinding.caseLargeClassView.setText(largeTypeBeans.get(0).getTypeName());//默认选择第一个 + } + viewBinding.caseSmallClassView.setText("请选择"); + viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.darkGray)); + } + } + }); + commonDataViewModel.smallTypeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseSmallTypeBean typeBean) { + if (typeBean.getCode() == 200) { + //设置小类数据 + smallTypeBeans = typeBean.getData(); + if (smallTypeBeans.size() != 0) { + viewBinding.caseSmallClassView.setText(smallTypeBeans.get(0).getTypeDetailName());//默认选择第一个 + viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); + } + } + } + }); + uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); + uploadViewModel.imageModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + if (imageAdapter.getItemCount() <= 4) { + String url = resultBean.getData(); + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + imageAdapter.setupImage(realPaths); + } else { + StringHub.show(context, "最多只能上传3张图片"); + } + } + } + }); imageAdapter = new EditableImageAdapter(this, 3, 13); viewBinding.addImageRecyclerView.setAdapter(imageAdapter); @@ -132,20 +200,6 @@ }).build().show(); } }); - commonDataViewModel.largeTypeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseLargeTypeBean typeBean) { - if (typeBean.getCode() == 200) { - //设置大类数据 - largeTypeBeans = typeBean.getData(); - if (largeTypeBeans.size() != 0) { - viewBinding.caseLargeClassView.setText(largeTypeBeans.get(0).getTypeName());//默认选择第一个 - } - viewBinding.caseSmallClassView.setText("请选择"); - viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.darkGray)); - } - } - }); /** * 选择案卷大类 @@ -178,19 +232,6 @@ } } }); - commonDataViewModel.smallTypeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseSmallTypeBean typeBean) { - if (typeBean.getCode() == 200) { - //设置小类数据 - smallTypeBeans = typeBean.getData(); - if (smallTypeBeans.size() != 0) { - viewBinding.caseSmallClassView.setText(smallTypeBeans.get(0).getTypeDetailName());//默认选择第一个 - viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); - } - } - } - }); /** * 选择案卷小类 @@ -271,31 +312,6 @@ imageAdapter.deleteImage(position); } }); - uploadViewModel.imageModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - if (imageAdapter.getItemCount() <= 4) { - String url = resultBean.getData(); - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - imageAdapter.setupImage(realPaths); - } else { - StringHub.show(context, "最多只能上传3张图片"); - } - } - } - }); - uploadViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { @Override @@ -303,20 +319,6 @@ submitCase(); } }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); - } else if (loadState == LoadState.Success) { - DialogHelper.dismissLoadingDialog(); - finish(); - } else { - StringHub.show(context, "提交失败,请重试"); - DialogHelper.dismissLoadingDialog(); - } - } - }); } /** diff --git a/app/src/main/java/com/casic/dcms/view/upload/BusinessCaseActivity.java b/app/src/main/java/com/casic/dcms/view/upload/BusinessCaseActivity.java index 59b37b7..f6b6242 100644 --- a/app/src/main/java/com/casic/dcms/view/upload/BusinessCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/view/upload/BusinessCaseActivity.java @@ -84,12 +84,41 @@ @Override protected void observeRequestState() { - + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); + } else if (loadState == LoadState.Success) { + DialogHelper.dismissLoadingDialog(); + finish(); + } else { + StringHub.show(context, "提交失败,请重试"); + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override public void initData() { uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); + uploadViewModel.imageModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + if (imageAdapter.getItemCount() <= 4) { + String url = resultBean.getData(); + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + imageAdapter.setupImage(realPaths); + } else { + StringHub.show(context, "最多只能上传3张图片"); + } + } + } + }); + caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); imageAdapter = new EditableImageAdapter(this, 3, 13); @@ -142,21 +171,6 @@ imageAdapter.deleteImage(position); } }); - uploadViewModel.imageModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - if (imageAdapter.getItemCount() <= 4) { - String url = resultBean.getData(); - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - imageAdapter.setupImage(realPaths); - } else { - StringHub.show(context, "最多只能上传3张图片"); - } - } - } - }); viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { @Override @@ -164,20 +178,6 @@ submitCase(); } }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); - } else if (loadState == LoadState.Success) { - DialogHelper.dismissLoadingDialog(); - finish(); - } else { - StringHub.show(context, "提交失败,请重试"); - DialogHelper.dismissLoadingDialog(); - } - } - }); } /** diff --git a/app/src/main/java/com/casic/dcms/view/upload/CommonCaseActivity.java b/app/src/main/java/com/casic/dcms/view/upload/CommonCaseActivity.java index c2a889b..1eea805 100644 --- a/app/src/main/java/com/casic/dcms/view/upload/CommonCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/view/upload/CommonCaseActivity.java @@ -121,7 +121,31 @@ @Override protected void observeRequestState() { + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); + } else if (loadState == LoadState.Success) { + DialogHelper.dismissLoadingDialog(); + finish(); + } else { + StringHub.show(context, "提交失败,请重试"); + DialogHelper.dismissLoadingDialog(); + } + } + }); + uploadViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override @@ -130,8 +154,85 @@ smallTypeBeans = new ArrayList<>(); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + commonDataViewModel = new ViewModelProvider(this).get(CommonDataViewModel.class); + commonDataViewModel.largeTypeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseLargeTypeBean typeBean) { + if (typeBean.getCode() == 200) { + //设置大类数据 + largeTypeBeans = typeBean.getData(); + if (largeTypeBeans.size() != 0) { + viewBinding.caseLargeClassView.setText(largeTypeBeans.get(0).getTypeName());//默认选择第一个 + } + viewBinding.caseSmallClassView.setText("请选择"); + viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.darkGray)); + } + } + }); + commonDataViewModel.smallTypeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseSmallTypeBean typeBean) { + if (typeBean.getCode() == 200) { + //设置小类数据 + smallTypeBeans = typeBean.getData(); + if (smallTypeBeans.size() != 0) { + viewBinding.caseSmallClassView.setText(smallTypeBeans.get(0).getTypeDetailName());//默认选择第一个 + viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); + } + } + } + }); + uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); + uploadViewModel.imageModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + if (imageAdapter.getItemCount() <= 4) { + String url = resultBean.getData(); + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + imageAdapter.setupImage(realPaths); + } else { + StringHub.show(context, "最多只能上传3张图片"); + } + } + } + }); + uploadViewModel.audioModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + audioUrl = resultBean.getData(); + /** + * http://111.198.10.15:11409/static/2021-04/8fb86dae39ad4f949e934e25465d7382.m4a + * */ + if (!TextUtils.isEmpty(audioUrl)) { + viewBinding.audioPlayerView.setVisibility(View.VISIBLE); + viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioUrl)); + } + } + } + }); + uploadViewModel.videoModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + //2021-04\\9d89df21173043cfb4188e68613e3e0e.mp4 + viewBinding.addVideoView.setVisibility(View.GONE); + viewBinding.videoPlayerView.setVisibility(View.VISIBLE); + videoUrl = resultBean.getData(); + String completeURL = StringHelper.appendCompleteURL(videoUrl); + viewBinding.videoPlayerView.setUp(completeURL, "", Jzvd.SCREEN_NORMAL); + //设置第一帧为封面 + Glide.with(context) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(completeURL) + .into(viewBinding.videoPlayerView.posterImageView); + } + } + }); progressDialog = new ProgressDialog(this); progressDialog.setMessage("视频压缩中..."); @@ -188,20 +289,6 @@ }).build().show(); } }); - commonDataViewModel.largeTypeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseLargeTypeBean typeBean) { - if (typeBean.getCode() == 200) { - //设置大类数据 - largeTypeBeans = typeBean.getData(); - if (largeTypeBeans.size() != 0) { - viewBinding.caseLargeClassView.setText(largeTypeBeans.get(0).getTypeName());//默认选择第一个 - } - viewBinding.caseSmallClassView.setText("请选择"); - viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.darkGray)); - } - } - }); /** * 选择案卷大类 @@ -234,19 +321,6 @@ } } }); - commonDataViewModel.smallTypeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseSmallTypeBean typeBean) { - if (typeBean.getCode() == 200) { - //设置小类数据 - smallTypeBeans = typeBean.getData(); - if (smallTypeBeans.size() != 0) { - viewBinding.caseSmallClassView.setText(smallTypeBeans.get(0).getTypeDetailName());//默认选择第一个 - viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); - } - } - } - }); /** * 选择案卷小类 @@ -430,64 +504,6 @@ imageAdapter.deleteImage(position); } }); - uploadViewModel.imageModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - if (imageAdapter.getItemCount() <= 4) { - String url = resultBean.getData(); - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - imageAdapter.setupImage(realPaths); - } else { - StringHub.show(context, "最多只能上传3张图片"); - } - } - } - }); - uploadViewModel.audioModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - audioUrl = resultBean.getData(); - /** - * http://111.198.10.15:11409/static/2021-04/8fb86dae39ad4f949e934e25465d7382.m4a - * */ - if (!TextUtils.isEmpty(audioUrl)) { - viewBinding.audioPlayerView.setVisibility(View.VISIBLE); - viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioUrl)); - } - } - } - }); - uploadViewModel.videoModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - //2021-04\\9d89df21173043cfb4188e68613e3e0e.mp4 - viewBinding.addVideoView.setVisibility(View.GONE); - viewBinding.videoPlayerView.setVisibility(View.VISIBLE); - videoUrl = resultBean.getData(); - String completeURL = StringHelper.appendCompleteURL(videoUrl); - viewBinding.videoPlayerView.setUp(completeURL, "", Jzvd.SCREEN_NORMAL); - //设置第一帧为封面 - Glide.with(context) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(completeURL) - .into(viewBinding.videoPlayerView.posterImageView); - } - } - }); - uploadViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { @Override @@ -495,20 +511,6 @@ submitCase(); } }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); - } else if (loadState == LoadState.Success) { - DialogHelper.dismissLoadingDialog(); - finish(); - } else { - StringHub.show(context, "提交失败,请重试"); - DialogHelper.dismissLoadingDialog(); - } - } - }); } /** diff --git a/app/src/main/java/com/casic/dcms/view/verify/VerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/view/verify/VerifiedDetailActivity.java index eec22e6..2e1469d 100644 --- a/app/src/main/java/com/casic/dcms/view/verify/VerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/view/verify/VerifiedDetailActivity.java @@ -5,7 +5,6 @@ import android.view.View; import android.widget.AdapterView; -import androidx.core.content.ContextCompat; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; @@ -23,6 +22,7 @@ import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; import com.pengxh.androidx.lite.hub.ContextHub; +import com.pengxh.androidx.lite.hub.IntHub; import com.pengxh.androidx.lite.hub.StringHub; import com.pengxh.androidx.lite.utils.Constant; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; @@ -40,8 +40,8 @@ @Override protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); viewBinding.titleBarLayout.titleView.setText("案卷详情"); viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b6a8d08..c78d07c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -64,8 +64,8 @@ - - + + diff --git a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java deleted file mode 100644 index 254f0cd..0000000 --- a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.casic.dcms.adapter; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.text.TextUtils; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.model.check.CaseCheckModel; -import com.casic.dcms.utils.StringHelper; -import com.pengxh.androidx.lite.hub.StringHub; -import com.qmuiteam.qmui.widget.QMUIRadiusImageView; - -import java.util.List; - -public class CheckCaseListAdapter extends RecyclerView.Adapter { - - private final Context context; - private final List dataBeans; - private final LayoutInflater layoutInflater; - - public CheckCaseListAdapter(Context context, List dataRows) { - this.context = context; - this.dataBeans = dataRows; - this.layoutInflater = LayoutInflater.from(context); - } - - @NonNull - @Override - public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - return new ItemViewHolder(layoutInflater.inflate(R.layout.item_case_rv_l, parent, false)); - } - - @Override - public void onBindViewHolder(@NonNull ItemViewHolder holder, @SuppressLint("RecyclerView") int position) { - holder.bindView(dataBeans.get(position)); - if (clickListener != null) { - holder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - clickListener.onClick(position); - } - }); - } - } - - @Override - public int getItemCount() { - return dataBeans.size(); - } - - class ItemViewHolder extends RecyclerView.ViewHolder { - - private final QMUIRadiusImageView caseImageView; - private final TextView caseTitleView; - private final TextView casePlaceView; - private final TextView caseTimeView; - - ItemViewHolder(@NonNull View itemView) { - super(itemView); - caseImageView = itemView.findViewById(R.id.caseImageView); - caseTitleView = itemView.findViewById(R.id.caseTitleView); - casePlaceView = itemView.findViewById(R.id.casePlaceView); - caseTimeView = itemView.findViewById(R.id.caseTimeView); - } - - void bindView(CaseCheckModel.DataDTO.RowsDTO rowsBean) { - //处理图片 - String fileIdProcess = rowsBean.getFileIdProcess(); - if (!TextUtils.isEmpty(fileIdProcess)) { - String[] split = fileIdProcess.split(","); - String firstImage = split[0]; - if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { - Glide.with(context).load(StringHelper.appendCompleteURL(firstImage)).into(caseImageView); - } - } - caseTitleView.setText(StringHub.filterSpaceOrEnter(rowsBean.getDescription())); - casePlaceView.setText("发生地点:" + StringHub.filterSpaceOrEnter(rowsBean.getFieldintro())); - caseTimeView.setText("上报时间:" + rowsBean.getReportTime()); - } - } - - private OnItemClickListener clickListener; - - public interface OnItemClickListener { - void onClick(int position); - } - - public void setOnItemClickListener(OnItemClickListener onItemClickListener) { - this.clickListener = onItemClickListener; - } -} diff --git a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java index 85cebc6..667981d 100644 --- a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java @@ -1,19 +1,27 @@ package com.casic.dcms.fragment.check; +import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; + +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.casic.dcms.adapter.CheckCaseListAdapter; +import com.bumptech.glide.Glide; +import com.casic.dcms.R; import com.casic.dcms.databinding.FragmentCheckCaseBinding; -import com.casic.dcms.model.check.CaseCheckModel; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.view.check.CaseCheckDetailActivity; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.check.CheckDetailActivity; import com.casic.dcms.vm.CaseViewModel; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseFragment; import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.StringHub; @@ -24,14 +32,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class CaseCheckFragment extends AndroidxBaseFragment { private static final String TAG = "CaseCheckFragment"; private WeakReferenceHandler weakReferenceHandler; private CaseViewModel caseViewModel; - private CheckCaseListAdapter adapter; - private List dataBeans = new ArrayList<>(); + private NormalRecyclerAdapter adapter; + private List dataBeans = new ArrayList<>(); private int pageIndex = 1; private boolean isRefresh, isLoadMore = false; @@ -49,12 +58,37 @@ protected void initData() { weakReferenceHandler = new WeakReferenceHandler(callback); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.caseCheckModel.observe(this, new Observer() { + @Override + public void onChanged(CaseCheckModel resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(requireContext(), "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(202104251); + } + } + }); } @Override public void onResume() { - obtainCheckCaseList(); super.onResume(); + pageIndex = 1; + obtainCheckCaseList(); } private void obtainCheckCaseList() { @@ -80,31 +114,6 @@ obtainCheckCaseList(); } }); - - caseViewModel.caseCheckModel.observe(this, new Observer() { - @Override - public void onChanged(CaseCheckModel resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(requireContext(), "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(202104251); - } - } - }); } private final Handler.Callback callback = new Handler.Callback() { @@ -125,16 +134,42 @@ }); } else { viewBinding.emptyView.hide(); - adapter = new CheckCaseListAdapter(requireContext(), dataBeans); - viewBinding.caseRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new CheckCaseListAdapter.OnItemClickListener() { + adapter = new NormalRecyclerAdapter(R.layout.item_case_rv_l, dataBeans) { @Override - public void onClick(int position) { - ContextHub.navigatePageTo( - requireContext(), - CaseCheckDetailActivity.class, - dataBeans.get(position).getId() - ); + public void convertView(ViewHolder viewHolder, int position, CaseCheckModel.DataModel.RowsModel item) { + String fileIdProcess = item.getFileIdProcess(); + if (!TextUtils.isEmpty(fileIdProcess)) { + String[] split = fileIdProcess.split(","); + String firstImage = split[0]; + if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Drawable drawable = Glide.with(requireContext()).load(StringHelper.appendCompleteURL(firstImage)).submit().get(); + runOnUiThread(new Runnable() { + @Override + public void run() { + viewHolder.setImageResource(R.id.caseImageView, drawable); + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + } + } + viewHolder.setText(R.id.caseTitleView, StringHub.filterSpaceOrEnter(item.getDescription())) + .setText(R.id.casePlaceView, "发生地点:" + StringHub.filterSpaceOrEnter(item.getFieldintro())) + .setText(R.id.caseTimeView, "上报时间:" + item.getReportTime()); + } + }; + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, CaseCheckModel.DataModel.RowsModel rowsModel) { + ContextHub.navigatePageTo(requireContext(), CheckDetailActivity.class, rowsModel.getId()); } }); } diff --git a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java index 3e2d904..6775b65 100644 --- a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java @@ -1,19 +1,27 @@ package com.casic.dcms.fragment.check; +import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; + +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.casic.dcms.adapter.CheckCaseListAdapter; +import com.bumptech.glide.Glide; +import com.casic.dcms.R; import com.casic.dcms.databinding.FragmentCheckCaseBinding; -import com.casic.dcms.model.check.CaseCheckModel; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.view.check.CaseCheckedDetailActivity; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.check.CheckedDetailActivity; import com.casic.dcms.vm.CaseViewModel; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseFragment; import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.StringHub; @@ -24,14 +32,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class CaseCheckedFragment extends AndroidxBaseFragment { private static final String TAG = "CaseCheckedFragment"; private WeakReferenceHandler weakReferenceHandler; private CaseViewModel caseViewModel; - private CheckCaseListAdapter adapter; - private List dataBeans = new ArrayList<>(); + private NormalRecyclerAdapter adapter; + private List dataBeans = new ArrayList<>(); private int pageIndex = 1; private boolean isRefresh, isLoadMore = false; @@ -50,12 +59,37 @@ protected void initData() { weakReferenceHandler = new WeakReferenceHandler(callback); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.caseCheckModel.observe(this, new Observer() { + @Override + public void onChanged(CaseCheckModel resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(requireContext(), "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(202104252); + } + } + }); } @Override public void onResume() { - obtainCheckCaseList(); super.onResume(); + pageIndex = 1; + obtainCheckCaseList(); } private void obtainCheckCaseList() { @@ -81,32 +115,6 @@ obtainCheckCaseList(); } }); - - caseViewModel.caseCheckModel.observe(this, new Observer() { - - @Override - public void onChanged(CaseCheckModel resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(requireContext(), "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(202104252); - } - } - }); } private final Handler.Callback callback = new Handler.Callback() { @@ -127,16 +135,42 @@ }); } else { viewBinding.emptyView.hide(); - adapter = new CheckCaseListAdapter(requireContext(), dataBeans); - viewBinding.caseRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new CheckCaseListAdapter.OnItemClickListener() { + adapter = new NormalRecyclerAdapter(R.layout.item_case_rv_l, dataBeans) { @Override - public void onClick(int position) { - ContextHub.navigatePageTo( - requireContext(), - CaseCheckedDetailActivity.class, - dataBeans.get(position).getId() - ); + public void convertView(ViewHolder viewHolder, int position, CaseCheckModel.DataModel.RowsModel item) { + String fileIdProcess = item.getFileIdProcess(); + if (!TextUtils.isEmpty(fileIdProcess)) { + String[] split = fileIdProcess.split(","); + String firstImage = split[0]; + if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Drawable drawable = Glide.with(requireContext()).load(StringHelper.appendCompleteURL(firstImage)).submit().get(); + runOnUiThread(new Runnable() { + @Override + public void run() { + viewHolder.setImageResource(R.id.caseImageView, drawable); + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + } + } + viewHolder.setText(R.id.caseTitleView, StringHub.filterSpaceOrEnter(item.getDescription())) + .setText(R.id.casePlaceView, "发生地点:" + StringHub.filterSpaceOrEnter(item.getFieldintro())) + .setText(R.id.caseTimeView, "上报时间:" + item.getReportTime()); + } + }; + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, CaseCheckModel.DataModel.RowsModel rowsModel) { + ContextHub.navigatePageTo(requireContext(), CheckedDetailActivity.class, rowsModel.getId()); } }); } diff --git a/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java b/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java new file mode 100644 index 0000000..550a1fe --- /dev/null +++ b/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java @@ -0,0 +1,358 @@ +package com.casic.dcms.model; + +import java.util.List; + +/** + * 核查-已办/待办共用一个Model + */ +public class CaseCheckModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String isPostpone; + private String description; + private String source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private String caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String lng; + private String isOvertime; + private String currRoleName; + private String fileIdVerify; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String taskName; + private String sourceName; + private String fileIdProcess; + private String reportTime; + private String onedeptName; + + public String getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(String isPostpone) { + this.isPostpone = isPostpone; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getCaseState() { + return caseState; + } + + public void setCaseState(String caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getFileIdVerify() { + return fileIdVerify; + } + + public void setFileIdVerify(String fileIdVerify) { + this.fileIdVerify = fileIdVerify; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getTaskName() { + return taskName; + } + + public void setTaskName(String taskName) { + this.taskName = taskName; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getFileIdProcess() { + return fileIdProcess; + } + + public void setFileIdProcess(String fileIdProcess) { + this.fileIdProcess = fileIdProcess; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java b/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java deleted file mode 100644 index 854e2fe..0000000 --- a/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java +++ /dev/null @@ -1,358 +0,0 @@ -package com.casic.dcms.model.check; - -import java.util.List; - -/** - * 核查-已办/待办共用一个Bean - */ -public class CaseCheckModel { - - private int code; - private DataDTO data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataDTO getData() { - return data; - } - - public void setData(DataDTO data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataDTO { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsDTO { - private int isPostpone; - private String description; - private int source; - private String eorcName; - private String casetypeDetailName; - private String remainingTime; - private String casetypeName; - private String currUserId; - private String currUserName; - private String processId; - private int caseState; - private String id; - private String shopId; - private String fieldintro; - private String lat; - private String caseStateName; - private String lng; - private String isOvertime; - private String currRoleName; - private String fileIdVerify; - private String casetypeDetailCode; - private String onedeptid; - private String eorc; - private String currRoleId; - private String caseid; - private String casetypeCode; - private String nodeLimittime; - private String taskName; - private String sourceName; - private String fileIdProcess; - private String reportTime; - private String onedeptName; - - public int getIsPostpone() { - return isPostpone; - } - - public void setIsPostpone(int isPostpone) { - this.isPostpone = isPostpone; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public int getSource() { - return source; - } - - public void setSource(int source) { - this.source = source; - } - - public String getEorcName() { - return eorcName; - } - - public void setEorcName(String eorcName) { - this.eorcName = eorcName; - } - - public String getCasetypeDetailName() { - return casetypeDetailName; - } - - public void setCasetypeDetailName(String casetypeDetailName) { - this.casetypeDetailName = casetypeDetailName; - } - - public String getRemainingTime() { - return remainingTime; - } - - public void setRemainingTime(String remainingTime) { - this.remainingTime = remainingTime; - } - - public String getCasetypeName() { - return casetypeName; - } - - public void setCasetypeName(String casetypeName) { - this.casetypeName = casetypeName; - } - - public String getCurrUserId() { - return currUserId; - } - - public void setCurrUserId(String currUserId) { - this.currUserId = currUserId; - } - - public String getCurrUserName() { - return currUserName; - } - - public void setCurrUserName(String currUserName) { - this.currUserName = currUserName; - } - - public String getProcessId() { - return processId; - } - - public void setProcessId(String processId) { - this.processId = processId; - } - - public int getCaseState() { - return caseState; - } - - public void setCaseState(int caseState) { - this.caseState = caseState; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getShopId() { - return shopId; - } - - public void setShopId(String shopId) { - this.shopId = shopId; - } - - public String getFieldintro() { - return fieldintro; - } - - public void setFieldintro(String fieldintro) { - this.fieldintro = fieldintro; - } - - public String getLat() { - return lat; - } - - public void setLat(String lat) { - this.lat = lat; - } - - public String getCaseStateName() { - return caseStateName; - } - - public void setCaseStateName(String caseStateName) { - this.caseStateName = caseStateName; - } - - public String getLng() { - return lng; - } - - public void setLng(String lng) { - this.lng = lng; - } - - public String getIsOvertime() { - return isOvertime; - } - - public void setIsOvertime(String isOvertime) { - this.isOvertime = isOvertime; - } - - public String getCurrRoleName() { - return currRoleName; - } - - public void setCurrRoleName(String currRoleName) { - this.currRoleName = currRoleName; - } - - public String getFileIdVerify() { - return fileIdVerify; - } - - public void setFileIdVerify(String fileIdVerify) { - this.fileIdVerify = fileIdVerify; - } - - public String getCasetypeDetailCode() { - return casetypeDetailCode; - } - - public void setCasetypeDetailCode(String casetypeDetailCode) { - this.casetypeDetailCode = casetypeDetailCode; - } - - public String getOnedeptid() { - return onedeptid; - } - - public void setOnedeptid(String onedeptid) { - this.onedeptid = onedeptid; - } - - public String getEorc() { - return eorc; - } - - public void setEorc(String eorc) { - this.eorc = eorc; - } - - public String getCurrRoleId() { - return currRoleId; - } - - public void setCurrRoleId(String currRoleId) { - this.currRoleId = currRoleId; - } - - public String getCaseid() { - return caseid; - } - - public void setCaseid(String caseid) { - this.caseid = caseid; - } - - public String getCasetypeCode() { - return casetypeCode; - } - - public void setCasetypeCode(String casetypeCode) { - this.casetypeCode = casetypeCode; - } - - public String getNodeLimittime() { - return nodeLimittime; - } - - public void setNodeLimittime(String nodeLimittime) { - this.nodeLimittime = nodeLimittime; - } - - public String getTaskName() { - return taskName; - } - - public void setTaskName(String taskName) { - this.taskName = taskName; - } - - public String getSourceName() { - return sourceName; - } - - public void setSourceName(String sourceName) { - this.sourceName = sourceName; - } - - public String getFileIdProcess() { - return fileIdProcess; - } - - public void setFileIdProcess(String fileIdProcess) { - this.fileIdProcess = fileIdProcess; - } - - public String getReportTime() { - return reportTime; - } - - public void setReportTime(String reportTime) { - this.reportTime = reportTime; - } - - public String getOnedeptName() { - return onedeptName; - } - - public void setOnedeptName(String onedeptName) { - this.onedeptName = onedeptName; - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java b/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java index cd3e026..d0888bc 100644 --- a/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java @@ -14,10 +14,10 @@ import com.casic.dcms.R; public class NotificationHelper { - private Context mContext; + private final Context mContext; @SuppressLint("StaticFieldLeak") - private static NotificationHelper notificationHelper; - private NotificationManager notificationManager; + private static volatile NotificationHelper notificationHelper; + private final NotificationManager notificationManager; private NotificationHelper(Context context) { this.mContext = context; @@ -45,10 +45,8 @@ //创建渠道 String id = name + "_DefaultChannel"; NotificationChannel mChannel = new NotificationChannel(id, name, NotificationManager.IMPORTANCE_HIGH); -// mChannel.setSound(Uri.parse(""), Notification.AUDIO_ATTRIBUTES_DEFAULT); mChannel.setShowBadge(true); - mChannel.enableVibration(true); - mChannel.setVibrationPattern(new long[]{100, 200, 300}); + mChannel.enableVibration(false); mChannel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);//设置锁屏可见 notificationManager.createNotificationChannel(mChannel); builder = new Notification.Builder(mContext, id); diff --git a/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java index d7bf511..691dfd5 100644 --- a/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java +++ b/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java @@ -4,20 +4,22 @@ import android.graphics.Color; import android.view.View; -import androidx.core.content.ContextCompat; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; import com.casic.dcms.R; import com.casic.dcms.databinding.ActivityCaseProcessBinding; import com.casic.dcms.model.CaseProcessBean; +import com.casic.dcms.utils.DialogHelper; import com.casic.dcms.vm.CommonDataViewModel; import com.gyf.immersionbar.ImmersionBar; import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.IntHub; import com.pengxh.androidx.lite.utils.Constant; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.vm.LoadState; import java.util.ArrayList; import java.util.List; @@ -30,8 +32,8 @@ @Override protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); viewBinding.titleBarLayout.titleView.setText("处理记录"); viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); @@ -39,7 +41,16 @@ @Override protected void observeRequestState() { - + commonDataViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override @@ -47,10 +58,6 @@ String processId = getIntent().getStringExtra(Constant.INTENT_PARAM); commonDataViewModel = new ViewModelProvider(this).get(CommonDataViewModel.class); commonDataViewModel.obtainCaseProcess(processId); - } - - @Override - protected void initEvent() { commonDataViewModel.caseProcessModel.observe(this, new Observer() { @Override public void onChanged(CaseProcessBean resultBean) { @@ -91,4 +98,9 @@ } }); } + + @Override + protected void initEvent() { + + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java deleted file mode 100644 index 30585d5..0000000 --- a/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java +++ /dev/null @@ -1,353 +0,0 @@ -package com.casic.dcms.view.check; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; - -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.databinding.ActivityCaseCheckDetailBinding; -import com.casic.dcms.model.ActionResultBean; -import com.casic.dcms.model.CaseDetailBean; -import com.casic.dcms.model.CaseNextNodeBean; -import com.casic.dcms.utils.DialogHelper; -import com.casic.dcms.utils.MapHelper; -import com.casic.dcms.utils.PictureSelectorHelper; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.callback.ISelectorListener; -import com.casic.dcms.view.BigImageActivity; -import com.casic.dcms.vm.CaseOperateViewModel; -import com.casic.dcms.vm.CaseViewModel; -import com.casic.dcms.vm.NodeViewModel; -import com.casic.dcms.vm.UploadViewModel; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.entity.LocalMedia; -import com.pengxh.androidx.lite.adapter.EditableImageAdapter; -import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.hub.ContextHub; -import com.pengxh.androidx.lite.hub.StringHub; -import com.pengxh.androidx.lite.utils.Constant; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; -import com.pengxh.androidx.lite.vm.LoadState; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import cn.jzvd.Jzvd; - -public class CaseCheckDetailActivity extends AndroidxBaseActivity { - - private final Context context = CaseCheckDetailActivity.this; - private final ArrayList realPaths = new ArrayList<>(); //真实图片路径 - private final ArrayList imageList = new ArrayList<>(); //上传到服务器的数据集 - private CaseViewModel caseViewModel; - private UploadViewModel uploadViewModel; - private NodeViewModel nodeViewModel; - private CaseOperateViewModel operateViewModel; - private String id; - private String changeState; - private EditableImageAdapter checkImageAdapter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - - viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - } - - @Override - protected void observeRequestState() { - - } - - @Override - protected void initData() { - id = getIntent().getStringExtra(Constant.INTENT_PARAM); - caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); - caseViewModel.obtainCaseDetail(id); - - uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); - nodeViewModel = new ViewModelProvider(this).get(NodeViewModel.class); - operateViewModel = new ViewModelProvider(this).get(CaseOperateViewModel.class); - - checkImageAdapter = new EditableImageAdapter(this, 3, 13); - viewBinding.addImageRecyclerView.setAdapter(checkImageAdapter); - } - - @Override - protected void initEvent() { - caseViewModel.caseDetailModel.observe(this, new Observer() { - @Override - public void onChanged(CaseDetailBean resultBean) { - if (resultBean.getCode() == 200) { - data = resultBean.getData().get(0); - viewBinding.caseNumberView.setText(data.getCaseid()); - viewBinding.caseTypeView.setText(data.getEorcName()); - viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); - viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); - viewBinding.caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); - viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); - viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); - viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - viewBinding.caseStartTimeView.setText(data.getCreateTime()); - viewBinding.caseEndTimeView.setText(data.getNodeLimittime()); - /** - * 图片 - */ - //核实照片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.imageGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - viewBinding.audioPlayerView.setVisibility(View.VISIBLE); - viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - viewBinding.videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - viewBinding.videoPlayerView.setUp( - videoUrl, - StringHub.filterSpaceOrEnter(data.getDescription()), - Jzvd.SCREEN_NORMAL - ); - //设置第一帧为封面 - Glide.with(context) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(viewBinding.videoPlayerView.posterImageView); - } - - //处理照片 - String processImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(processImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = processImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - viewBinding.caseHandleResultView.setText(data.getProcessRemarks().equals("") ? "无处理意见" : data.getProcessRemarks()); - //TODO 服务器返回数据缺少此字段,暂时注掉 -// viewBinding.caseHandleTimeView.setText(); - } - } - }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "获取数据中..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); - } - }); - - //图片九宫格事件处理 - checkImageAdapter.setOnItemClickListener(new EditableImageAdapter.OnItemClickListener() { - @Override - public void onAddImageClick() { - PictureSelectorHelper.selectPicture(context, new ISelectorListener() { - @Override - public void onSuccess(ArrayList result) { - if (result.size() == 1) { - uploadViewModel.uploadImage(new File(result.get(0).getRealPath())); - } else { - for (LocalMedia localMedia : result) { - uploadViewModel.uploadImage(new File(localMedia.getRealPath())); - } - } - } - }); - } - - @Override - public void onItemClick(int position) { - if (realPaths.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, realPaths); - } - } - - @Override - public void onItemLongClick(View view, int position) { - imageList.remove(position); - checkImageAdapter.deleteImage(position); - } - }); - uploadViewModel.imageModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - if (checkImageAdapter.getItemCount() <= 3) { - String url = resultBean.getData(); - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - checkImageAdapter.setupImage(realPaths); - } else { - StringHub.show(context, "最多只能上传3张图片"); - } - } - } - }); - uploadViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.caseCheckLayout.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - nodeViewModel.obtainNextNode(String.valueOf(data.getCaseState())); - } - }); - nodeViewModel.nodeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseNextNodeBean resultBean) { - if (resultBean.getCode() == 200) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(context); - sheetBuilder.setTitle("核实情况"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - viewBinding.caseCheckOptView.setText(dataBean.getNextOperation()); - changeState = String.valueOf(dataBean.getNextState()); - } - }).build().show(); - } else { - StringHub.show(context, "该案卷无下级流转节点"); - } - } - }); - - viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - //案卷提交 - String remarks = viewBinding.caseCheckOptView.getText().toString(); - if (TextUtils.isEmpty(remarks)) { - StringHub.show(context, "核查意见不能为空"); - return; - } - if (TextUtils.isEmpty(changeState)) { - StringHub.show(context, "核查情况还未选择"); - return; - } - operateViewModel.checkCase(data.getProcessId(), id, - String.valueOf(data.getCaseState()), changeState, remarks, - StringHelper.reformatURL(imageList) - ); - } - }); - operateViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "案卷核查中,请稍后..."); - } else if (loadState == LoadState.Success) { - DialogHelper.dismissLoadingDialog(); - finish(); - } else { - StringHub.show(context, "核查失败,请重试"); - DialogHelper.dismissLoadingDialog(); - } - } - }); - } - - @Override - public void onDestroy() { - viewBinding.audioPlayerView.release(); - super.onDestroy(); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - public void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CaseCheckedDetailActivity.java deleted file mode 100644 index 0ffce7d..0000000 --- a/app/src/main/java/com/casic/dcms/view/check/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,228 +0,0 @@ -package com.casic.dcms.view.check; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; - -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.databinding.ActivityCaseCheckedDetailBinding; -import com.casic.dcms.model.CaseDetailBean; -import com.casic.dcms.utils.DialogHelper; -import com.casic.dcms.utils.MapHelper; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.view.BigImageActivity; -import com.casic.dcms.view.CaseProcessActivity; -import com.casic.dcms.vm.CaseViewModel; -import com.gyf.immersionbar.ImmersionBar; -import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.hub.ContextHub; -import com.pengxh.androidx.lite.hub.StringHub; -import com.pengxh.androidx.lite.utils.Constant; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; -import com.pengxh.androidx.lite.vm.LoadState; - -import java.util.ArrayList; - -import cn.jzvd.Jzvd; - -public class CaseCheckedDetailActivity extends AndroidxBaseActivity { - - private final Context context = CaseCheckedDetailActivity.this; - private CaseViewModel caseViewModel; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - - viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - } - - @Override - protected void observeRequestState() { - - } - - @Override - protected void initData() { - String id = getIntent().getStringExtra(Constant.INTENT_PARAM); - caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); - caseViewModel.obtainCaseDetail(id); - } - - @Override - protected void initEvent() { - caseViewModel.caseDetailModel.observe(this, new Observer() { - @Override - public void onChanged(CaseDetailBean resultBean) { - if (resultBean.getCode() == 200) { - data = resultBean.getData().get(0); - viewBinding.caseNumberView.setText(data.getCaseid()); - viewBinding.caseTypeView.setText(data.getEorcName()); - viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); - viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); - viewBinding.caseCommunityView.setText(data.getCommunityName()); - viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); - viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.imageGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //处理图片 - 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)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - viewBinding.audioPlayerView.setVisibility(View.VISIBLE); - viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - viewBinding.videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - viewBinding.videoPlayerView.setUp( - videoUrl, - StringHub.filterSpaceOrEnter(data.getDescription()), - Jzvd.SCREEN_NORMAL - ); - //设置第一帧为封面 - Glide.with(context) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(viewBinding.videoPlayerView.posterImageView); - } - } - } - }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "获取数据中..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); - } - }); - - viewBinding.handleLayout.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - ContextHub.navigatePageTo(context, CaseProcessActivity.class, data.getProcessId()); - } - }); - } - - @Override - protected void onDestroy() { - viewBinding.audioPlayerView.release(); - super.onDestroy(); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java b/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java index 76e3203..2c76426 100644 --- a/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java @@ -2,7 +2,6 @@ import android.widget.LinearLayout; -import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; import com.casic.dcms.R; @@ -14,6 +13,7 @@ import com.casic.dcms.utils.LocaleConstant; import com.gyf.immersionbar.ImmersionBar; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.IntHub; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; import java.util.ArrayList; @@ -28,8 +28,8 @@ @Override protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); viewBinding.titleBarLayout.titleView.setText("案卷核查"); viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); @@ -46,10 +46,10 @@ fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), LocaleConstant.CASE_PAGE_TITLES, fragmentList); - viewBinding.checkViewPager.setAdapter(adapter); + viewBinding.viewPager.setAdapter(adapter); //绑定TabLayout - viewBinding.checkTabLayout.setupWithViewPager(viewBinding.checkViewPager); - LinearLayout linearLayout = (LinearLayout) viewBinding.checkTabLayout.getChildAt(0); + viewBinding.topTabLayout.setupWithViewPager(viewBinding.viewPager); + LinearLayout linearLayout = (LinearLayout) viewBinding.topTabLayout.getChildAt(0); LinearLayoutHelper.setDivider(this, linearLayout); } diff --git a/app/src/main/java/com/casic/dcms/view/check/CheckDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CheckDetailActivity.java new file mode 100644 index 0000000..b9aeeb7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/view/check/CheckDetailActivity.java @@ -0,0 +1,356 @@ +package com.casic.dcms.view.check; + +import android.content.Context; +import android.text.TextUtils; +import android.view.View; +import android.widget.AdapterView; + +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.databinding.ActivityCheckDetailBinding; +import com.casic.dcms.model.ActionResultBean; +import com.casic.dcms.model.CaseDetailBean; +import com.casic.dcms.model.CaseNextNodeBean; +import com.casic.dcms.utils.DialogHelper; +import com.casic.dcms.utils.MapHelper; +import com.casic.dcms.utils.PictureSelectorHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.ISelectorListener; +import com.casic.dcms.view.BigImageActivity; +import com.casic.dcms.vm.CaseOperateViewModel; +import com.casic.dcms.vm.CaseViewModel; +import com.casic.dcms.vm.NodeViewModel; +import com.casic.dcms.vm.UploadViewModel; +import com.gyf.immersionbar.ImmersionBar; +import com.luck.picture.lib.entity.LocalMedia; +import com.pengxh.androidx.lite.adapter.EditableImageAdapter; +import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; +import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.ContextHub; +import com.pengxh.androidx.lite.hub.IntHub; +import com.pengxh.androidx.lite.hub.StringHub; +import com.pengxh.androidx.lite.utils.Constant; +import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.vm.LoadState; +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import cn.jzvd.Jzvd; + +public class CheckDetailActivity extends AndroidxBaseActivity { + + private final Context context = CheckDetailActivity.this; + private final ArrayList realPaths = new ArrayList<>(); //真实图片路径 + private final ArrayList imageList = new ArrayList<>(); //上传到服务器的数据集 + private CaseViewModel caseViewModel; + private UploadViewModel uploadViewModel; + private NodeViewModel nodeViewModel; + private CaseOperateViewModel operateViewModel; + private String id; + private String changeState; + private EditableImageAdapter checkImageAdapter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + + @Override + protected void setupTopBarLayout() { + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); + + viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); + viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); + } + + @Override + protected void observeRequestState() { + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + + uploadViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + + operateViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "案卷核查中,请稍后..."); + } else if (loadState == LoadState.Success) { + DialogHelper.dismissLoadingDialog(); + finish(); + } else { + StringHub.show(context, "核查失败,请重试"); + DialogHelper.dismissLoadingDialog(); + } + } + }); + } + + @Override + protected void initData() { + id = getIntent().getStringExtra(Constant.INTENT_PARAM); + caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.obtainCaseDetail(id); + caseViewModel.caseDetailModel.observe(this, new Observer() { + @Override + public void onChanged(CaseDetailBean resultBean) { + if (resultBean.getCode() == 200) { + data = resultBean.getData().get(0); + viewBinding.caseNumberView.setText(data.getCaseid()); + viewBinding.caseTypeView.setText(data.getEorcName()); + viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); + viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); + viewBinding.caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); + viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); + viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); + viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); + viewBinding.caseStartTimeView.setText(data.getCreateTime()); + viewBinding.caseEndTimeView.setText(data.getNodeLimittime()); + /** + * 图片 + */ + //核实照片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.imageGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + viewBinding.audioPlayerView.setVisibility(View.VISIBLE); + viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(videoFile)) { + viewBinding.videoPlayerView.setVisibility(View.VISIBLE); + String videoUrl = StringHelper.appendCompleteURL(videoFile); + viewBinding.videoPlayerView.setUp( + videoUrl, + StringHub.filterSpaceOrEnter(data.getDescription()), + Jzvd.SCREEN_NORMAL + ); + //设置第一帧为封面 + Glide.with(context) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(viewBinding.videoPlayerView.posterImageView); + } + + //处理照片 + String processImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(processImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = processImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.handleGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + viewBinding.caseHandleResultView.setText(data.getProcessRemarks().equals("") ? "无处理意见" : data.getProcessRemarks()); + //TODO 服务器返回数据缺少此字段,暂时注掉 +// viewBinding.caseHandleTimeView.setText(); + } + } + }); + + uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); + uploadViewModel.imageModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + if (checkImageAdapter.getItemCount() <= 3) { + String url = resultBean.getData(); + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + checkImageAdapter.setupImage(realPaths); + } else { + StringHub.show(context, "最多只能上传3张图片"); + } + } + } + }); + + nodeViewModel = new ViewModelProvider(this).get(NodeViewModel.class); + nodeViewModel.nodeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseNextNodeBean resultBean) { + if (resultBean.getCode() == 200) { + List dataBeans = resultBean.getData(); + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(context); + sheetBuilder.setTitle("核实情况"); + for (CaseNextNodeBean.DataBean dataBean : dataBeans) { + sheetBuilder.addItem(dataBean.getNextOperation()); + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); + viewBinding.caseCheckOptView.setText(dataBean.getNextOperation()); + changeState = String.valueOf(dataBean.getNextState()); + } + }).build().show(); + } else { + StringHub.show(context, "该案卷无下级流转节点"); + } + } + }); + + operateViewModel = new ViewModelProvider(this).get(CaseOperateViewModel.class); + + checkImageAdapter = new EditableImageAdapter(this, 3, 13); + viewBinding.addImageRecyclerView.setAdapter(checkImageAdapter); + } + + @Override + protected void initEvent() { + viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); + } + }); + + //图片九宫格事件处理 + checkImageAdapter.setOnItemClickListener(new EditableImageAdapter.OnItemClickListener() { + @Override + public void onAddImageClick() { + PictureSelectorHelper.selectPicture(context, new ISelectorListener() { + @Override + public void onSuccess(ArrayList result) { + if (result.size() == 1) { + uploadViewModel.uploadImage(new File(result.get(0).getRealPath())); + } else { + for (LocalMedia localMedia : result) { + uploadViewModel.uploadImage(new File(localMedia.getRealPath())); + } + } + } + }); + } + + @Override + public void onItemClick(int position) { + if (realPaths.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, realPaths); + } + } + + @Override + public void onItemLongClick(View view, int position) { + imageList.remove(position); + checkImageAdapter.deleteImage(position); + } + }); + + + viewBinding.caseCheckLayout.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + nodeViewModel.obtainNextNode(String.valueOf(data.getCaseState())); + } + }); + + viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + //案卷提交 + String remarks = viewBinding.caseCheckOptView.getText().toString(); + if (TextUtils.isEmpty(remarks)) { + StringHub.show(context, "核查意见不能为空"); + return; + } + if (TextUtils.isEmpty(changeState)) { + StringHub.show(context, "核查情况还未选择"); + return; + } + operateViewModel.checkCase(data.getProcessId(), id, + String.valueOf(data.getCaseState()), changeState, remarks, + StringHelper.reformatURL(imageList) + ); + } + }); + } + + @Override + public void onDestroy() { + viewBinding.audioPlayerView.release(); + super.onDestroy(); + } + + @Override + public void onBackPressed() { + if (Jzvd.backPress()) { + return; + } + super.onBackPressed(); + } + + @Override + public void onPause() { + super.onPause(); + Jzvd.releaseAllVideos(); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CheckedDetailActivity.java new file mode 100644 index 0000000..14e554b --- /dev/null +++ b/app/src/main/java/com/casic/dcms/view/check/CheckedDetailActivity.java @@ -0,0 +1,226 @@ +package com.casic.dcms.view.check; + +import android.content.Context; +import android.text.TextUtils; +import android.view.View; +import android.widget.AdapterView; + +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.databinding.ActivityCheckedDetailBinding; +import com.casic.dcms.model.CaseDetailBean; +import com.casic.dcms.utils.DialogHelper; +import com.casic.dcms.utils.MapHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.BigImageActivity; +import com.casic.dcms.view.CaseProcessActivity; +import com.casic.dcms.vm.CaseViewModel; +import com.gyf.immersionbar.ImmersionBar; +import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; +import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.ContextHub; +import com.pengxh.androidx.lite.hub.IntHub; +import com.pengxh.androidx.lite.hub.StringHub; +import com.pengxh.androidx.lite.utils.Constant; +import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.vm.LoadState; + +import java.util.ArrayList; + +import cn.jzvd.Jzvd; + +public class CheckedDetailActivity extends AndroidxBaseActivity { + + private final Context context = CheckedDetailActivity.this; + private CaseViewModel caseViewModel; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + + @Override + protected void setupTopBarLayout() { + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); + + viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); + viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); + } + + @Override + protected void observeRequestState() { + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + } + + @Override + protected void initData() { + String id = getIntent().getStringExtra(Constant.INTENT_PARAM); + caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.obtainCaseDetail(id); + caseViewModel.caseDetailModel.observe(this, new Observer() { + @Override + public void onChanged(CaseDetailBean resultBean) { + if (resultBean.getCode() == 200) { + data = resultBean.getData().get(0); + viewBinding.caseNumberView.setText(data.getCaseid()); + viewBinding.caseTypeView.setText(data.getEorcName()); + viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); + viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); + viewBinding.caseCommunityView.setText(data.getCommunityName()); + viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); + viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); + viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); + + //核实图片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.imageGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //处理图片 + 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)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.handleGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //核查图片 + String checkImages = data.getFileIdCheck(); + if (!TextUtils.isEmpty(checkImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = checkImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.checkGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + viewBinding.audioPlayerView.setVisibility(View.VISIBLE); + viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(videoFile)) { + viewBinding.videoPlayerView.setVisibility(View.VISIBLE); + String videoUrl = StringHelper.appendCompleteURL(videoFile); + viewBinding.videoPlayerView.setUp( + videoUrl, + StringHub.filterSpaceOrEnter(data.getDescription()), + Jzvd.SCREEN_NORMAL + ); + //设置第一帧为封面 + Glide.with(context) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(viewBinding.videoPlayerView.posterImageView); + } + } + } + }); + } + + @Override + protected void initEvent() { + viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); + } + }); + + viewBinding.handleLayout.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + ContextHub.navigatePageTo(context, CaseProcessActivity.class, data.getProcessId()); + } + }); + } + + @Override + protected void onDestroy() { + viewBinding.audioPlayerView.release(); + super.onDestroy(); + } + + @Override + public void onBackPressed() { + if (Jzvd.backPress()) { + return; + } + super.onBackPressed(); + } + + @Override + protected void onPause() { + super.onPause(); + Jzvd.releaseAllVideos(); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/map/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/view/map/CaseOnMapActivity.java index 5a85a88..c662347 100644 --- a/app/src/main/java/com/casic/dcms/view/map/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/view/map/CaseOnMapActivity.java @@ -18,10 +18,10 @@ import com.casic.dcms.R; import com.casic.dcms.databinding.ActivityMapCaseBinding; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.model.CaseHandleBean; import com.casic.dcms.model.PointDataBean; import com.casic.dcms.model.VerifyCaseModel; -import com.casic.dcms.model.check.CaseCheckModel; import com.casic.dcms.utils.ArcGisMapCreator; import com.casic.dcms.utils.LocaleConstant; import com.casic.dcms.view.CaseDetailActivity; @@ -116,11 +116,11 @@ public void onChanged(CaseCheckModel resultBean) { clearPictureMarker(); if (resultBean.isSuccess()) { - List rowsBeans = resultBean.getData().getRows(); + List rowsBeans = resultBean.getData().getRows(); if (rowsBeans.size() >= 1) { List list = new ArrayList<>(); List pointList = new ArrayList<>(); - for (CaseCheckModel.DataDTO.RowsDTO bean : rowsBeans) { + for (CaseCheckModel.DataModel.RowsModel bean : rowsBeans) { String lng = bean.getLng(); String lat = bean.getLat(); if (TextUtils.isEmpty(lng) || TextUtils.isEmpty(lat)) { diff --git a/app/src/main/java/com/casic/dcms/view/upload/BriefCaseActivity.java b/app/src/main/java/com/casic/dcms/view/upload/BriefCaseActivity.java index 2d2e8f6..794c651 100644 --- a/app/src/main/java/com/casic/dcms/view/upload/BriefCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/view/upload/BriefCaseActivity.java @@ -90,7 +90,31 @@ @Override protected void observeRequestState() { + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); + } else if (loadState == LoadState.Success) { + DialogHelper.dismissLoadingDialog(); + finish(); + } else { + StringHub.show(context, "提交失败,请重试"); + DialogHelper.dismissLoadingDialog(); + } + } + }); + uploadViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override @@ -99,8 +123,52 @@ smallTypeBeans = new ArrayList<>(); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + commonDataViewModel = new ViewModelProvider(this).get(CommonDataViewModel.class); + commonDataViewModel.largeTypeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseLargeTypeBean typeBean) { + if (typeBean.getCode() == 200) { + //设置大类数据 + largeTypeBeans = typeBean.getData(); + if (largeTypeBeans.size() != 0) { + viewBinding.caseLargeClassView.setText(largeTypeBeans.get(0).getTypeName());//默认选择第一个 + } + viewBinding.caseSmallClassView.setText("请选择"); + viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.darkGray)); + } + } + }); + commonDataViewModel.smallTypeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseSmallTypeBean typeBean) { + if (typeBean.getCode() == 200) { + //设置小类数据 + smallTypeBeans = typeBean.getData(); + if (smallTypeBeans.size() != 0) { + viewBinding.caseSmallClassView.setText(smallTypeBeans.get(0).getTypeDetailName());//默认选择第一个 + viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); + } + } + } + }); + uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); + uploadViewModel.imageModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + if (imageAdapter.getItemCount() <= 4) { + String url = resultBean.getData(); + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + imageAdapter.setupImage(realPaths); + } else { + StringHub.show(context, "最多只能上传3张图片"); + } + } + } + }); imageAdapter = new EditableImageAdapter(this, 3, 13); viewBinding.addImageRecyclerView.setAdapter(imageAdapter); @@ -132,20 +200,6 @@ }).build().show(); } }); - commonDataViewModel.largeTypeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseLargeTypeBean typeBean) { - if (typeBean.getCode() == 200) { - //设置大类数据 - largeTypeBeans = typeBean.getData(); - if (largeTypeBeans.size() != 0) { - viewBinding.caseLargeClassView.setText(largeTypeBeans.get(0).getTypeName());//默认选择第一个 - } - viewBinding.caseSmallClassView.setText("请选择"); - viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.darkGray)); - } - } - }); /** * 选择案卷大类 @@ -178,19 +232,6 @@ } } }); - commonDataViewModel.smallTypeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseSmallTypeBean typeBean) { - if (typeBean.getCode() == 200) { - //设置小类数据 - smallTypeBeans = typeBean.getData(); - if (smallTypeBeans.size() != 0) { - viewBinding.caseSmallClassView.setText(smallTypeBeans.get(0).getTypeDetailName());//默认选择第一个 - viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); - } - } - } - }); /** * 选择案卷小类 @@ -271,31 +312,6 @@ imageAdapter.deleteImage(position); } }); - uploadViewModel.imageModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - if (imageAdapter.getItemCount() <= 4) { - String url = resultBean.getData(); - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - imageAdapter.setupImage(realPaths); - } else { - StringHub.show(context, "最多只能上传3张图片"); - } - } - } - }); - uploadViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { @Override @@ -303,20 +319,6 @@ submitCase(); } }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); - } else if (loadState == LoadState.Success) { - DialogHelper.dismissLoadingDialog(); - finish(); - } else { - StringHub.show(context, "提交失败,请重试"); - DialogHelper.dismissLoadingDialog(); - } - } - }); } /** diff --git a/app/src/main/java/com/casic/dcms/view/upload/BusinessCaseActivity.java b/app/src/main/java/com/casic/dcms/view/upload/BusinessCaseActivity.java index 59b37b7..f6b6242 100644 --- a/app/src/main/java/com/casic/dcms/view/upload/BusinessCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/view/upload/BusinessCaseActivity.java @@ -84,12 +84,41 @@ @Override protected void observeRequestState() { - + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); + } else if (loadState == LoadState.Success) { + DialogHelper.dismissLoadingDialog(); + finish(); + } else { + StringHub.show(context, "提交失败,请重试"); + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override public void initData() { uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); + uploadViewModel.imageModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + if (imageAdapter.getItemCount() <= 4) { + String url = resultBean.getData(); + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + imageAdapter.setupImage(realPaths); + } else { + StringHub.show(context, "最多只能上传3张图片"); + } + } + } + }); + caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); imageAdapter = new EditableImageAdapter(this, 3, 13); @@ -142,21 +171,6 @@ imageAdapter.deleteImage(position); } }); - uploadViewModel.imageModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - if (imageAdapter.getItemCount() <= 4) { - String url = resultBean.getData(); - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - imageAdapter.setupImage(realPaths); - } else { - StringHub.show(context, "最多只能上传3张图片"); - } - } - } - }); viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { @Override @@ -164,20 +178,6 @@ submitCase(); } }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); - } else if (loadState == LoadState.Success) { - DialogHelper.dismissLoadingDialog(); - finish(); - } else { - StringHub.show(context, "提交失败,请重试"); - DialogHelper.dismissLoadingDialog(); - } - } - }); } /** diff --git a/app/src/main/java/com/casic/dcms/view/upload/CommonCaseActivity.java b/app/src/main/java/com/casic/dcms/view/upload/CommonCaseActivity.java index c2a889b..1eea805 100644 --- a/app/src/main/java/com/casic/dcms/view/upload/CommonCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/view/upload/CommonCaseActivity.java @@ -121,7 +121,31 @@ @Override protected void observeRequestState() { + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); + } else if (loadState == LoadState.Success) { + DialogHelper.dismissLoadingDialog(); + finish(); + } else { + StringHub.show(context, "提交失败,请重试"); + DialogHelper.dismissLoadingDialog(); + } + } + }); + uploadViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override @@ -130,8 +154,85 @@ smallTypeBeans = new ArrayList<>(); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + commonDataViewModel = new ViewModelProvider(this).get(CommonDataViewModel.class); + commonDataViewModel.largeTypeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseLargeTypeBean typeBean) { + if (typeBean.getCode() == 200) { + //设置大类数据 + largeTypeBeans = typeBean.getData(); + if (largeTypeBeans.size() != 0) { + viewBinding.caseLargeClassView.setText(largeTypeBeans.get(0).getTypeName());//默认选择第一个 + } + viewBinding.caseSmallClassView.setText("请选择"); + viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.darkGray)); + } + } + }); + commonDataViewModel.smallTypeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseSmallTypeBean typeBean) { + if (typeBean.getCode() == 200) { + //设置小类数据 + smallTypeBeans = typeBean.getData(); + if (smallTypeBeans.size() != 0) { + viewBinding.caseSmallClassView.setText(smallTypeBeans.get(0).getTypeDetailName());//默认选择第一个 + viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); + } + } + } + }); + uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); + uploadViewModel.imageModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + if (imageAdapter.getItemCount() <= 4) { + String url = resultBean.getData(); + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + imageAdapter.setupImage(realPaths); + } else { + StringHub.show(context, "最多只能上传3张图片"); + } + } + } + }); + uploadViewModel.audioModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + audioUrl = resultBean.getData(); + /** + * http://111.198.10.15:11409/static/2021-04/8fb86dae39ad4f949e934e25465d7382.m4a + * */ + if (!TextUtils.isEmpty(audioUrl)) { + viewBinding.audioPlayerView.setVisibility(View.VISIBLE); + viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioUrl)); + } + } + } + }); + uploadViewModel.videoModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + //2021-04\\9d89df21173043cfb4188e68613e3e0e.mp4 + viewBinding.addVideoView.setVisibility(View.GONE); + viewBinding.videoPlayerView.setVisibility(View.VISIBLE); + videoUrl = resultBean.getData(); + String completeURL = StringHelper.appendCompleteURL(videoUrl); + viewBinding.videoPlayerView.setUp(completeURL, "", Jzvd.SCREEN_NORMAL); + //设置第一帧为封面 + Glide.with(context) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(completeURL) + .into(viewBinding.videoPlayerView.posterImageView); + } + } + }); progressDialog = new ProgressDialog(this); progressDialog.setMessage("视频压缩中..."); @@ -188,20 +289,6 @@ }).build().show(); } }); - commonDataViewModel.largeTypeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseLargeTypeBean typeBean) { - if (typeBean.getCode() == 200) { - //设置大类数据 - largeTypeBeans = typeBean.getData(); - if (largeTypeBeans.size() != 0) { - viewBinding.caseLargeClassView.setText(largeTypeBeans.get(0).getTypeName());//默认选择第一个 - } - viewBinding.caseSmallClassView.setText("请选择"); - viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.darkGray)); - } - } - }); /** * 选择案卷大类 @@ -234,19 +321,6 @@ } } }); - commonDataViewModel.smallTypeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseSmallTypeBean typeBean) { - if (typeBean.getCode() == 200) { - //设置小类数据 - smallTypeBeans = typeBean.getData(); - if (smallTypeBeans.size() != 0) { - viewBinding.caseSmallClassView.setText(smallTypeBeans.get(0).getTypeDetailName());//默认选择第一个 - viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); - } - } - } - }); /** * 选择案卷小类 @@ -430,64 +504,6 @@ imageAdapter.deleteImage(position); } }); - uploadViewModel.imageModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - if (imageAdapter.getItemCount() <= 4) { - String url = resultBean.getData(); - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - imageAdapter.setupImage(realPaths); - } else { - StringHub.show(context, "最多只能上传3张图片"); - } - } - } - }); - uploadViewModel.audioModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - audioUrl = resultBean.getData(); - /** - * http://111.198.10.15:11409/static/2021-04/8fb86dae39ad4f949e934e25465d7382.m4a - * */ - if (!TextUtils.isEmpty(audioUrl)) { - viewBinding.audioPlayerView.setVisibility(View.VISIBLE); - viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioUrl)); - } - } - } - }); - uploadViewModel.videoModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - //2021-04\\9d89df21173043cfb4188e68613e3e0e.mp4 - viewBinding.addVideoView.setVisibility(View.GONE); - viewBinding.videoPlayerView.setVisibility(View.VISIBLE); - videoUrl = resultBean.getData(); - String completeURL = StringHelper.appendCompleteURL(videoUrl); - viewBinding.videoPlayerView.setUp(completeURL, "", Jzvd.SCREEN_NORMAL); - //设置第一帧为封面 - Glide.with(context) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(completeURL) - .into(viewBinding.videoPlayerView.posterImageView); - } - } - }); - uploadViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { @Override @@ -495,20 +511,6 @@ submitCase(); } }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); - } else if (loadState == LoadState.Success) { - DialogHelper.dismissLoadingDialog(); - finish(); - } else { - StringHub.show(context, "提交失败,请重试"); - DialogHelper.dismissLoadingDialog(); - } - } - }); } /** diff --git a/app/src/main/java/com/casic/dcms/view/verify/VerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/view/verify/VerifiedDetailActivity.java index eec22e6..2e1469d 100644 --- a/app/src/main/java/com/casic/dcms/view/verify/VerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/view/verify/VerifiedDetailActivity.java @@ -5,7 +5,6 @@ import android.view.View; import android.widget.AdapterView; -import androidx.core.content.ContextCompat; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; @@ -23,6 +22,7 @@ import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; import com.pengxh.androidx.lite.hub.ContextHub; +import com.pengxh.androidx.lite.hub.IntHub; import com.pengxh.androidx.lite.hub.StringHub; import com.pengxh.androidx.lite.utils.Constant; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; @@ -40,8 +40,8 @@ @Override protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); viewBinding.titleBarLayout.titleView.setText("案卷详情"); viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); diff --git a/app/src/main/java/com/casic/dcms/view/verify/VerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/view/verify/VerifyDetailActivity.java index 207394d..da1c8bd 100644 --- a/app/src/main/java/com/casic/dcms/view/verify/VerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/view/verify/VerifyDetailActivity.java @@ -110,7 +110,42 @@ @Override protected void observeRequestState() { + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + uploadViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + + operateViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "案卷核实中,请稍后..."); + } else if (loadState == LoadState.Success) { + DialogHelper.dismissLoadingDialog(); + finish(); + } else { + StringHub.show(context, "核实失败,请重试"); + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override @@ -121,19 +156,7 @@ smallTypeBeans = new ArrayList<>(); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); - commonDataViewModel = new ViewModelProvider(this).get(CommonDataViewModel.class); - uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); - nodeViewModel = new ViewModelProvider(this).get(NodeViewModel.class); - operateViewModel = new ViewModelProvider(this).get(CaseOperateViewModel.class); - caseViewModel.obtainCaseDetail(id); - - verifyImageAdapter = new EditableImageAdapter(this, 3, 13); - viewBinding.addImageRecyclerView.setAdapter(verifyImageAdapter); - } - - @Override - public void initEvent() { caseViewModel.caseDetailModel.observe(this, new Observer() { @Override public void onChanged(CaseDetailBean resultBean) { @@ -219,17 +242,89 @@ } } }); - caseViewModel.loadState.observe(this, new Observer() { + + commonDataViewModel = new ViewModelProvider(this).get(CommonDataViewModel.class); + commonDataViewModel.largeTypeModel.observe(this, new Observer() { @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "获取数据中..."); - } else { - DialogHelper.dismissLoadingDialog(); + public void onChanged(CaseLargeTypeBean typeBean) { + if (typeBean.getCode() == 200) { + //设置大类数据 + largeTypeBeans = typeBean.getData(); + if (largeTypeBeans.size() == 0) { + viewBinding.caseLargeTypeView.setText("无小类"); + } else { + viewBinding.caseLargeTypeView.setText(largeTypeBeans.get(0).getTypeName());//默认选择第一个 + } + viewBinding.caseSmallTypeView.setText("请选择"); + } + } + }); + commonDataViewModel.smallTypeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseSmallTypeBean typeBean) { + if (typeBean.getCode() == 200) { + smallTypeBeans = typeBean.getData(); + if (smallTypeBeans.size() == 0) { + viewBinding.caseSmallTypeView.setText("无小类"); + } else { + viewBinding.caseSmallTypeView.setText(smallTypeBeans.get(0).getTypeDetailName());//默认选择第一个 + } } } }); + uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); + uploadViewModel.imageModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + if (verifyImageAdapter.getItemCount() <= 3) { + String url = resultBean.getData(); + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + verifyImageAdapter.setupImage(realPaths); + } else { + StringHub.show(context, "最多只能上传3张图片"); + } + } + } + }); + + nodeViewModel = new ViewModelProvider(this).get(NodeViewModel.class); + nodeViewModel.nodeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + List dataBeans = resultBean.getData(); + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(context); + sheetBuilder.setTitle("核实情况"); + for (CaseNextNodeBean.DataBean dataBean : dataBeans) { + sheetBuilder.addItem(dataBean.getNextOperation()); + } + sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + + CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); + viewBinding.caseConditionView.setText(dataBean.getNextOperation()); + changeState = String.valueOf(dataBean.getNextState()); + } + }).build().show(); + } else { + StringHub.show(context, "该案卷无下级流转节点"); + } + } + }); + + operateViewModel = new ViewModelProvider(this).get(CaseOperateViewModel.class); + + verifyImageAdapter = new EditableImageAdapter(this, 3, 13); + viewBinding.addImageRecyclerView.setAdapter(verifyImageAdapter); + } + + @Override + public void initEvent() { viewBinding.caseClassLayout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -249,21 +344,6 @@ }).build().show(); } }); - commonDataViewModel.largeTypeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseLargeTypeBean typeBean) { - if (typeBean.getCode() == 200) { - //设置大类数据 - largeTypeBeans = typeBean.getData(); - if (largeTypeBeans.size() == 0) { - viewBinding.caseLargeTypeView.setText("无小类"); - } else { - viewBinding.caseLargeTypeView.setText(largeTypeBeans.get(0).getTypeName());//默认选择第一个 - } - viewBinding.caseSmallTypeView.setText("请选择"); - } - } - }); viewBinding.caseLargeClassLayout.setOnClickListener(new View.OnClickListener() { @Override @@ -292,19 +372,6 @@ } } }); - commonDataViewModel.smallTypeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseSmallTypeBean typeBean) { - if (typeBean.getCode() == 200) { - smallTypeBeans = typeBean.getData(); - if (smallTypeBeans.size() == 0) { - viewBinding.caseSmallTypeView.setText("无小类"); - } else { - viewBinding.caseSmallTypeView.setText(smallTypeBeans.get(0).getTypeDetailName());//默认选择第一个 - } - } - } - }); viewBinding.caseSmallClassLayout.setOnClickListener(new View.OnClickListener() { @Override @@ -353,31 +420,6 @@ nodeViewModel.obtainNextNode(String.valueOf(data.getCaseState())); } }); - nodeViewModel.nodeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseNextNodeBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(context); - sheetBuilder.setTitle("核实情况"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - viewBinding.caseConditionView.setText(dataBean.getNextOperation()); - changeState = String.valueOf(dataBean.getNextState()); - } - }).build().show(); - } else { - StringHub.show(context, "该案卷无下级流转节点"); - } - } - }); //图片九宫格事件处理 verifyImageAdapter.setOnItemClickListener(new EditableImageAdapter.OnItemClickListener() { @@ -412,31 +454,6 @@ verifyImageAdapter.deleteImage(position); } }); - uploadViewModel.imageModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - if (verifyImageAdapter.getItemCount() <= 3) { - String url = resultBean.getData(); - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - verifyImageAdapter.setupImage(realPaths); - } else { - StringHub.show(context, "最多只能上传3张图片"); - } - } - } - }); - uploadViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { @Override @@ -444,20 +461,6 @@ submitCase(); } }); - operateViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "案卷核实中,请稍后..."); - } else if (loadState == LoadState.Success) { - DialogHelper.dismissLoadingDialog(); - finish(); - } else { - StringHub.show(context, "核实失败,请重试"); - DialogHelper.dismissLoadingDialog(); - } - } - }); } private void submitCase() { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b6a8d08..c78d07c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -64,8 +64,8 @@ - - + + diff --git a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java deleted file mode 100644 index 254f0cd..0000000 --- a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.casic.dcms.adapter; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.text.TextUtils; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.model.check.CaseCheckModel; -import com.casic.dcms.utils.StringHelper; -import com.pengxh.androidx.lite.hub.StringHub; -import com.qmuiteam.qmui.widget.QMUIRadiusImageView; - -import java.util.List; - -public class CheckCaseListAdapter extends RecyclerView.Adapter { - - private final Context context; - private final List dataBeans; - private final LayoutInflater layoutInflater; - - public CheckCaseListAdapter(Context context, List dataRows) { - this.context = context; - this.dataBeans = dataRows; - this.layoutInflater = LayoutInflater.from(context); - } - - @NonNull - @Override - public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - return new ItemViewHolder(layoutInflater.inflate(R.layout.item_case_rv_l, parent, false)); - } - - @Override - public void onBindViewHolder(@NonNull ItemViewHolder holder, @SuppressLint("RecyclerView") int position) { - holder.bindView(dataBeans.get(position)); - if (clickListener != null) { - holder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - clickListener.onClick(position); - } - }); - } - } - - @Override - public int getItemCount() { - return dataBeans.size(); - } - - class ItemViewHolder extends RecyclerView.ViewHolder { - - private final QMUIRadiusImageView caseImageView; - private final TextView caseTitleView; - private final TextView casePlaceView; - private final TextView caseTimeView; - - ItemViewHolder(@NonNull View itemView) { - super(itemView); - caseImageView = itemView.findViewById(R.id.caseImageView); - caseTitleView = itemView.findViewById(R.id.caseTitleView); - casePlaceView = itemView.findViewById(R.id.casePlaceView); - caseTimeView = itemView.findViewById(R.id.caseTimeView); - } - - void bindView(CaseCheckModel.DataDTO.RowsDTO rowsBean) { - //处理图片 - String fileIdProcess = rowsBean.getFileIdProcess(); - if (!TextUtils.isEmpty(fileIdProcess)) { - String[] split = fileIdProcess.split(","); - String firstImage = split[0]; - if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { - Glide.with(context).load(StringHelper.appendCompleteURL(firstImage)).into(caseImageView); - } - } - caseTitleView.setText(StringHub.filterSpaceOrEnter(rowsBean.getDescription())); - casePlaceView.setText("发生地点:" + StringHub.filterSpaceOrEnter(rowsBean.getFieldintro())); - caseTimeView.setText("上报时间:" + rowsBean.getReportTime()); - } - } - - private OnItemClickListener clickListener; - - public interface OnItemClickListener { - void onClick(int position); - } - - public void setOnItemClickListener(OnItemClickListener onItemClickListener) { - this.clickListener = onItemClickListener; - } -} diff --git a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java index 85cebc6..667981d 100644 --- a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java @@ -1,19 +1,27 @@ package com.casic.dcms.fragment.check; +import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; + +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.casic.dcms.adapter.CheckCaseListAdapter; +import com.bumptech.glide.Glide; +import com.casic.dcms.R; import com.casic.dcms.databinding.FragmentCheckCaseBinding; -import com.casic.dcms.model.check.CaseCheckModel; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.view.check.CaseCheckDetailActivity; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.check.CheckDetailActivity; import com.casic.dcms.vm.CaseViewModel; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseFragment; import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.StringHub; @@ -24,14 +32,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class CaseCheckFragment extends AndroidxBaseFragment { private static final String TAG = "CaseCheckFragment"; private WeakReferenceHandler weakReferenceHandler; private CaseViewModel caseViewModel; - private CheckCaseListAdapter adapter; - private List dataBeans = new ArrayList<>(); + private NormalRecyclerAdapter adapter; + private List dataBeans = new ArrayList<>(); private int pageIndex = 1; private boolean isRefresh, isLoadMore = false; @@ -49,12 +58,37 @@ protected void initData() { weakReferenceHandler = new WeakReferenceHandler(callback); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.caseCheckModel.observe(this, new Observer() { + @Override + public void onChanged(CaseCheckModel resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(requireContext(), "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(202104251); + } + } + }); } @Override public void onResume() { - obtainCheckCaseList(); super.onResume(); + pageIndex = 1; + obtainCheckCaseList(); } private void obtainCheckCaseList() { @@ -80,31 +114,6 @@ obtainCheckCaseList(); } }); - - caseViewModel.caseCheckModel.observe(this, new Observer() { - @Override - public void onChanged(CaseCheckModel resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(requireContext(), "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(202104251); - } - } - }); } private final Handler.Callback callback = new Handler.Callback() { @@ -125,16 +134,42 @@ }); } else { viewBinding.emptyView.hide(); - adapter = new CheckCaseListAdapter(requireContext(), dataBeans); - viewBinding.caseRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new CheckCaseListAdapter.OnItemClickListener() { + adapter = new NormalRecyclerAdapter(R.layout.item_case_rv_l, dataBeans) { @Override - public void onClick(int position) { - ContextHub.navigatePageTo( - requireContext(), - CaseCheckDetailActivity.class, - dataBeans.get(position).getId() - ); + public void convertView(ViewHolder viewHolder, int position, CaseCheckModel.DataModel.RowsModel item) { + String fileIdProcess = item.getFileIdProcess(); + if (!TextUtils.isEmpty(fileIdProcess)) { + String[] split = fileIdProcess.split(","); + String firstImage = split[0]; + if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Drawable drawable = Glide.with(requireContext()).load(StringHelper.appendCompleteURL(firstImage)).submit().get(); + runOnUiThread(new Runnable() { + @Override + public void run() { + viewHolder.setImageResource(R.id.caseImageView, drawable); + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + } + } + viewHolder.setText(R.id.caseTitleView, StringHub.filterSpaceOrEnter(item.getDescription())) + .setText(R.id.casePlaceView, "发生地点:" + StringHub.filterSpaceOrEnter(item.getFieldintro())) + .setText(R.id.caseTimeView, "上报时间:" + item.getReportTime()); + } + }; + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, CaseCheckModel.DataModel.RowsModel rowsModel) { + ContextHub.navigatePageTo(requireContext(), CheckDetailActivity.class, rowsModel.getId()); } }); } diff --git a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java index 3e2d904..6775b65 100644 --- a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java @@ -1,19 +1,27 @@ package com.casic.dcms.fragment.check; +import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; + +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.casic.dcms.adapter.CheckCaseListAdapter; +import com.bumptech.glide.Glide; +import com.casic.dcms.R; import com.casic.dcms.databinding.FragmentCheckCaseBinding; -import com.casic.dcms.model.check.CaseCheckModel; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.view.check.CaseCheckedDetailActivity; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.check.CheckedDetailActivity; import com.casic.dcms.vm.CaseViewModel; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseFragment; import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.StringHub; @@ -24,14 +32,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class CaseCheckedFragment extends AndroidxBaseFragment { private static final String TAG = "CaseCheckedFragment"; private WeakReferenceHandler weakReferenceHandler; private CaseViewModel caseViewModel; - private CheckCaseListAdapter adapter; - private List dataBeans = new ArrayList<>(); + private NormalRecyclerAdapter adapter; + private List dataBeans = new ArrayList<>(); private int pageIndex = 1; private boolean isRefresh, isLoadMore = false; @@ -50,12 +59,37 @@ protected void initData() { weakReferenceHandler = new WeakReferenceHandler(callback); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.caseCheckModel.observe(this, new Observer() { + @Override + public void onChanged(CaseCheckModel resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(requireContext(), "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(202104252); + } + } + }); } @Override public void onResume() { - obtainCheckCaseList(); super.onResume(); + pageIndex = 1; + obtainCheckCaseList(); } private void obtainCheckCaseList() { @@ -81,32 +115,6 @@ obtainCheckCaseList(); } }); - - caseViewModel.caseCheckModel.observe(this, new Observer() { - - @Override - public void onChanged(CaseCheckModel resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(requireContext(), "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(202104252); - } - } - }); } private final Handler.Callback callback = new Handler.Callback() { @@ -127,16 +135,42 @@ }); } else { viewBinding.emptyView.hide(); - adapter = new CheckCaseListAdapter(requireContext(), dataBeans); - viewBinding.caseRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new CheckCaseListAdapter.OnItemClickListener() { + adapter = new NormalRecyclerAdapter(R.layout.item_case_rv_l, dataBeans) { @Override - public void onClick(int position) { - ContextHub.navigatePageTo( - requireContext(), - CaseCheckedDetailActivity.class, - dataBeans.get(position).getId() - ); + public void convertView(ViewHolder viewHolder, int position, CaseCheckModel.DataModel.RowsModel item) { + String fileIdProcess = item.getFileIdProcess(); + if (!TextUtils.isEmpty(fileIdProcess)) { + String[] split = fileIdProcess.split(","); + String firstImage = split[0]; + if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Drawable drawable = Glide.with(requireContext()).load(StringHelper.appendCompleteURL(firstImage)).submit().get(); + runOnUiThread(new Runnable() { + @Override + public void run() { + viewHolder.setImageResource(R.id.caseImageView, drawable); + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + } + } + viewHolder.setText(R.id.caseTitleView, StringHub.filterSpaceOrEnter(item.getDescription())) + .setText(R.id.casePlaceView, "发生地点:" + StringHub.filterSpaceOrEnter(item.getFieldintro())) + .setText(R.id.caseTimeView, "上报时间:" + item.getReportTime()); + } + }; + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, CaseCheckModel.DataModel.RowsModel rowsModel) { + ContextHub.navigatePageTo(requireContext(), CheckedDetailActivity.class, rowsModel.getId()); } }); } diff --git a/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java b/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java new file mode 100644 index 0000000..550a1fe --- /dev/null +++ b/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java @@ -0,0 +1,358 @@ +package com.casic.dcms.model; + +import java.util.List; + +/** + * 核查-已办/待办共用一个Model + */ +public class CaseCheckModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String isPostpone; + private String description; + private String source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private String caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String lng; + private String isOvertime; + private String currRoleName; + private String fileIdVerify; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String taskName; + private String sourceName; + private String fileIdProcess; + private String reportTime; + private String onedeptName; + + public String getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(String isPostpone) { + this.isPostpone = isPostpone; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getCaseState() { + return caseState; + } + + public void setCaseState(String caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getFileIdVerify() { + return fileIdVerify; + } + + public void setFileIdVerify(String fileIdVerify) { + this.fileIdVerify = fileIdVerify; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getTaskName() { + return taskName; + } + + public void setTaskName(String taskName) { + this.taskName = taskName; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getFileIdProcess() { + return fileIdProcess; + } + + public void setFileIdProcess(String fileIdProcess) { + this.fileIdProcess = fileIdProcess; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java b/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java deleted file mode 100644 index 854e2fe..0000000 --- a/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java +++ /dev/null @@ -1,358 +0,0 @@ -package com.casic.dcms.model.check; - -import java.util.List; - -/** - * 核查-已办/待办共用一个Bean - */ -public class CaseCheckModel { - - private int code; - private DataDTO data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataDTO getData() { - return data; - } - - public void setData(DataDTO data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataDTO { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsDTO { - private int isPostpone; - private String description; - private int source; - private String eorcName; - private String casetypeDetailName; - private String remainingTime; - private String casetypeName; - private String currUserId; - private String currUserName; - private String processId; - private int caseState; - private String id; - private String shopId; - private String fieldintro; - private String lat; - private String caseStateName; - private String lng; - private String isOvertime; - private String currRoleName; - private String fileIdVerify; - private String casetypeDetailCode; - private String onedeptid; - private String eorc; - private String currRoleId; - private String caseid; - private String casetypeCode; - private String nodeLimittime; - private String taskName; - private String sourceName; - private String fileIdProcess; - private String reportTime; - private String onedeptName; - - public int getIsPostpone() { - return isPostpone; - } - - public void setIsPostpone(int isPostpone) { - this.isPostpone = isPostpone; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public int getSource() { - return source; - } - - public void setSource(int source) { - this.source = source; - } - - public String getEorcName() { - return eorcName; - } - - public void setEorcName(String eorcName) { - this.eorcName = eorcName; - } - - public String getCasetypeDetailName() { - return casetypeDetailName; - } - - public void setCasetypeDetailName(String casetypeDetailName) { - this.casetypeDetailName = casetypeDetailName; - } - - public String getRemainingTime() { - return remainingTime; - } - - public void setRemainingTime(String remainingTime) { - this.remainingTime = remainingTime; - } - - public String getCasetypeName() { - return casetypeName; - } - - public void setCasetypeName(String casetypeName) { - this.casetypeName = casetypeName; - } - - public String getCurrUserId() { - return currUserId; - } - - public void setCurrUserId(String currUserId) { - this.currUserId = currUserId; - } - - public String getCurrUserName() { - return currUserName; - } - - public void setCurrUserName(String currUserName) { - this.currUserName = currUserName; - } - - public String getProcessId() { - return processId; - } - - public void setProcessId(String processId) { - this.processId = processId; - } - - public int getCaseState() { - return caseState; - } - - public void setCaseState(int caseState) { - this.caseState = caseState; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getShopId() { - return shopId; - } - - public void setShopId(String shopId) { - this.shopId = shopId; - } - - public String getFieldintro() { - return fieldintro; - } - - public void setFieldintro(String fieldintro) { - this.fieldintro = fieldintro; - } - - public String getLat() { - return lat; - } - - public void setLat(String lat) { - this.lat = lat; - } - - public String getCaseStateName() { - return caseStateName; - } - - public void setCaseStateName(String caseStateName) { - this.caseStateName = caseStateName; - } - - public String getLng() { - return lng; - } - - public void setLng(String lng) { - this.lng = lng; - } - - public String getIsOvertime() { - return isOvertime; - } - - public void setIsOvertime(String isOvertime) { - this.isOvertime = isOvertime; - } - - public String getCurrRoleName() { - return currRoleName; - } - - public void setCurrRoleName(String currRoleName) { - this.currRoleName = currRoleName; - } - - public String getFileIdVerify() { - return fileIdVerify; - } - - public void setFileIdVerify(String fileIdVerify) { - this.fileIdVerify = fileIdVerify; - } - - public String getCasetypeDetailCode() { - return casetypeDetailCode; - } - - public void setCasetypeDetailCode(String casetypeDetailCode) { - this.casetypeDetailCode = casetypeDetailCode; - } - - public String getOnedeptid() { - return onedeptid; - } - - public void setOnedeptid(String onedeptid) { - this.onedeptid = onedeptid; - } - - public String getEorc() { - return eorc; - } - - public void setEorc(String eorc) { - this.eorc = eorc; - } - - public String getCurrRoleId() { - return currRoleId; - } - - public void setCurrRoleId(String currRoleId) { - this.currRoleId = currRoleId; - } - - public String getCaseid() { - return caseid; - } - - public void setCaseid(String caseid) { - this.caseid = caseid; - } - - public String getCasetypeCode() { - return casetypeCode; - } - - public void setCasetypeCode(String casetypeCode) { - this.casetypeCode = casetypeCode; - } - - public String getNodeLimittime() { - return nodeLimittime; - } - - public void setNodeLimittime(String nodeLimittime) { - this.nodeLimittime = nodeLimittime; - } - - public String getTaskName() { - return taskName; - } - - public void setTaskName(String taskName) { - this.taskName = taskName; - } - - public String getSourceName() { - return sourceName; - } - - public void setSourceName(String sourceName) { - this.sourceName = sourceName; - } - - public String getFileIdProcess() { - return fileIdProcess; - } - - public void setFileIdProcess(String fileIdProcess) { - this.fileIdProcess = fileIdProcess; - } - - public String getReportTime() { - return reportTime; - } - - public void setReportTime(String reportTime) { - this.reportTime = reportTime; - } - - public String getOnedeptName() { - return onedeptName; - } - - public void setOnedeptName(String onedeptName) { - this.onedeptName = onedeptName; - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java b/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java index cd3e026..d0888bc 100644 --- a/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java @@ -14,10 +14,10 @@ import com.casic.dcms.R; public class NotificationHelper { - private Context mContext; + private final Context mContext; @SuppressLint("StaticFieldLeak") - private static NotificationHelper notificationHelper; - private NotificationManager notificationManager; + private static volatile NotificationHelper notificationHelper; + private final NotificationManager notificationManager; private NotificationHelper(Context context) { this.mContext = context; @@ -45,10 +45,8 @@ //创建渠道 String id = name + "_DefaultChannel"; NotificationChannel mChannel = new NotificationChannel(id, name, NotificationManager.IMPORTANCE_HIGH); -// mChannel.setSound(Uri.parse(""), Notification.AUDIO_ATTRIBUTES_DEFAULT); mChannel.setShowBadge(true); - mChannel.enableVibration(true); - mChannel.setVibrationPattern(new long[]{100, 200, 300}); + mChannel.enableVibration(false); mChannel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);//设置锁屏可见 notificationManager.createNotificationChannel(mChannel); builder = new Notification.Builder(mContext, id); diff --git a/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java index d7bf511..691dfd5 100644 --- a/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java +++ b/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java @@ -4,20 +4,22 @@ import android.graphics.Color; import android.view.View; -import androidx.core.content.ContextCompat; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; import com.casic.dcms.R; import com.casic.dcms.databinding.ActivityCaseProcessBinding; import com.casic.dcms.model.CaseProcessBean; +import com.casic.dcms.utils.DialogHelper; import com.casic.dcms.vm.CommonDataViewModel; import com.gyf.immersionbar.ImmersionBar; import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.IntHub; import com.pengxh.androidx.lite.utils.Constant; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.vm.LoadState; import java.util.ArrayList; import java.util.List; @@ -30,8 +32,8 @@ @Override protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); viewBinding.titleBarLayout.titleView.setText("处理记录"); viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); @@ -39,7 +41,16 @@ @Override protected void observeRequestState() { - + commonDataViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override @@ -47,10 +58,6 @@ String processId = getIntent().getStringExtra(Constant.INTENT_PARAM); commonDataViewModel = new ViewModelProvider(this).get(CommonDataViewModel.class); commonDataViewModel.obtainCaseProcess(processId); - } - - @Override - protected void initEvent() { commonDataViewModel.caseProcessModel.observe(this, new Observer() { @Override public void onChanged(CaseProcessBean resultBean) { @@ -91,4 +98,9 @@ } }); } + + @Override + protected void initEvent() { + + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java deleted file mode 100644 index 30585d5..0000000 --- a/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java +++ /dev/null @@ -1,353 +0,0 @@ -package com.casic.dcms.view.check; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; - -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.databinding.ActivityCaseCheckDetailBinding; -import com.casic.dcms.model.ActionResultBean; -import com.casic.dcms.model.CaseDetailBean; -import com.casic.dcms.model.CaseNextNodeBean; -import com.casic.dcms.utils.DialogHelper; -import com.casic.dcms.utils.MapHelper; -import com.casic.dcms.utils.PictureSelectorHelper; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.callback.ISelectorListener; -import com.casic.dcms.view.BigImageActivity; -import com.casic.dcms.vm.CaseOperateViewModel; -import com.casic.dcms.vm.CaseViewModel; -import com.casic.dcms.vm.NodeViewModel; -import com.casic.dcms.vm.UploadViewModel; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.entity.LocalMedia; -import com.pengxh.androidx.lite.adapter.EditableImageAdapter; -import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.hub.ContextHub; -import com.pengxh.androidx.lite.hub.StringHub; -import com.pengxh.androidx.lite.utils.Constant; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; -import com.pengxh.androidx.lite.vm.LoadState; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import cn.jzvd.Jzvd; - -public class CaseCheckDetailActivity extends AndroidxBaseActivity { - - private final Context context = CaseCheckDetailActivity.this; - private final ArrayList realPaths = new ArrayList<>(); //真实图片路径 - private final ArrayList imageList = new ArrayList<>(); //上传到服务器的数据集 - private CaseViewModel caseViewModel; - private UploadViewModel uploadViewModel; - private NodeViewModel nodeViewModel; - private CaseOperateViewModel operateViewModel; - private String id; - private String changeState; - private EditableImageAdapter checkImageAdapter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - - viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - } - - @Override - protected void observeRequestState() { - - } - - @Override - protected void initData() { - id = getIntent().getStringExtra(Constant.INTENT_PARAM); - caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); - caseViewModel.obtainCaseDetail(id); - - uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); - nodeViewModel = new ViewModelProvider(this).get(NodeViewModel.class); - operateViewModel = new ViewModelProvider(this).get(CaseOperateViewModel.class); - - checkImageAdapter = new EditableImageAdapter(this, 3, 13); - viewBinding.addImageRecyclerView.setAdapter(checkImageAdapter); - } - - @Override - protected void initEvent() { - caseViewModel.caseDetailModel.observe(this, new Observer() { - @Override - public void onChanged(CaseDetailBean resultBean) { - if (resultBean.getCode() == 200) { - data = resultBean.getData().get(0); - viewBinding.caseNumberView.setText(data.getCaseid()); - viewBinding.caseTypeView.setText(data.getEorcName()); - viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); - viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); - viewBinding.caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); - viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); - viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); - viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - viewBinding.caseStartTimeView.setText(data.getCreateTime()); - viewBinding.caseEndTimeView.setText(data.getNodeLimittime()); - /** - * 图片 - */ - //核实照片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.imageGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - viewBinding.audioPlayerView.setVisibility(View.VISIBLE); - viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - viewBinding.videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - viewBinding.videoPlayerView.setUp( - videoUrl, - StringHub.filterSpaceOrEnter(data.getDescription()), - Jzvd.SCREEN_NORMAL - ); - //设置第一帧为封面 - Glide.with(context) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(viewBinding.videoPlayerView.posterImageView); - } - - //处理照片 - String processImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(processImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = processImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - viewBinding.caseHandleResultView.setText(data.getProcessRemarks().equals("") ? "无处理意见" : data.getProcessRemarks()); - //TODO 服务器返回数据缺少此字段,暂时注掉 -// viewBinding.caseHandleTimeView.setText(); - } - } - }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "获取数据中..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); - } - }); - - //图片九宫格事件处理 - checkImageAdapter.setOnItemClickListener(new EditableImageAdapter.OnItemClickListener() { - @Override - public void onAddImageClick() { - PictureSelectorHelper.selectPicture(context, new ISelectorListener() { - @Override - public void onSuccess(ArrayList result) { - if (result.size() == 1) { - uploadViewModel.uploadImage(new File(result.get(0).getRealPath())); - } else { - for (LocalMedia localMedia : result) { - uploadViewModel.uploadImage(new File(localMedia.getRealPath())); - } - } - } - }); - } - - @Override - public void onItemClick(int position) { - if (realPaths.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, realPaths); - } - } - - @Override - public void onItemLongClick(View view, int position) { - imageList.remove(position); - checkImageAdapter.deleteImage(position); - } - }); - uploadViewModel.imageModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - if (checkImageAdapter.getItemCount() <= 3) { - String url = resultBean.getData(); - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - checkImageAdapter.setupImage(realPaths); - } else { - StringHub.show(context, "最多只能上传3张图片"); - } - } - } - }); - uploadViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.caseCheckLayout.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - nodeViewModel.obtainNextNode(String.valueOf(data.getCaseState())); - } - }); - nodeViewModel.nodeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseNextNodeBean resultBean) { - if (resultBean.getCode() == 200) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(context); - sheetBuilder.setTitle("核实情况"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - viewBinding.caseCheckOptView.setText(dataBean.getNextOperation()); - changeState = String.valueOf(dataBean.getNextState()); - } - }).build().show(); - } else { - StringHub.show(context, "该案卷无下级流转节点"); - } - } - }); - - viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - //案卷提交 - String remarks = viewBinding.caseCheckOptView.getText().toString(); - if (TextUtils.isEmpty(remarks)) { - StringHub.show(context, "核查意见不能为空"); - return; - } - if (TextUtils.isEmpty(changeState)) { - StringHub.show(context, "核查情况还未选择"); - return; - } - operateViewModel.checkCase(data.getProcessId(), id, - String.valueOf(data.getCaseState()), changeState, remarks, - StringHelper.reformatURL(imageList) - ); - } - }); - operateViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "案卷核查中,请稍后..."); - } else if (loadState == LoadState.Success) { - DialogHelper.dismissLoadingDialog(); - finish(); - } else { - StringHub.show(context, "核查失败,请重试"); - DialogHelper.dismissLoadingDialog(); - } - } - }); - } - - @Override - public void onDestroy() { - viewBinding.audioPlayerView.release(); - super.onDestroy(); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - public void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CaseCheckedDetailActivity.java deleted file mode 100644 index 0ffce7d..0000000 --- a/app/src/main/java/com/casic/dcms/view/check/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,228 +0,0 @@ -package com.casic.dcms.view.check; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; - -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.databinding.ActivityCaseCheckedDetailBinding; -import com.casic.dcms.model.CaseDetailBean; -import com.casic.dcms.utils.DialogHelper; -import com.casic.dcms.utils.MapHelper; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.view.BigImageActivity; -import com.casic.dcms.view.CaseProcessActivity; -import com.casic.dcms.vm.CaseViewModel; -import com.gyf.immersionbar.ImmersionBar; -import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.hub.ContextHub; -import com.pengxh.androidx.lite.hub.StringHub; -import com.pengxh.androidx.lite.utils.Constant; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; -import com.pengxh.androidx.lite.vm.LoadState; - -import java.util.ArrayList; - -import cn.jzvd.Jzvd; - -public class CaseCheckedDetailActivity extends AndroidxBaseActivity { - - private final Context context = CaseCheckedDetailActivity.this; - private CaseViewModel caseViewModel; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - - viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - } - - @Override - protected void observeRequestState() { - - } - - @Override - protected void initData() { - String id = getIntent().getStringExtra(Constant.INTENT_PARAM); - caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); - caseViewModel.obtainCaseDetail(id); - } - - @Override - protected void initEvent() { - caseViewModel.caseDetailModel.observe(this, new Observer() { - @Override - public void onChanged(CaseDetailBean resultBean) { - if (resultBean.getCode() == 200) { - data = resultBean.getData().get(0); - viewBinding.caseNumberView.setText(data.getCaseid()); - viewBinding.caseTypeView.setText(data.getEorcName()); - viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); - viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); - viewBinding.caseCommunityView.setText(data.getCommunityName()); - viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); - viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.imageGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //处理图片 - 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)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - viewBinding.audioPlayerView.setVisibility(View.VISIBLE); - viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - viewBinding.videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - viewBinding.videoPlayerView.setUp( - videoUrl, - StringHub.filterSpaceOrEnter(data.getDescription()), - Jzvd.SCREEN_NORMAL - ); - //设置第一帧为封面 - Glide.with(context) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(viewBinding.videoPlayerView.posterImageView); - } - } - } - }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "获取数据中..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); - } - }); - - viewBinding.handleLayout.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - ContextHub.navigatePageTo(context, CaseProcessActivity.class, data.getProcessId()); - } - }); - } - - @Override - protected void onDestroy() { - viewBinding.audioPlayerView.release(); - super.onDestroy(); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java b/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java index 76e3203..2c76426 100644 --- a/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java @@ -2,7 +2,6 @@ import android.widget.LinearLayout; -import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; import com.casic.dcms.R; @@ -14,6 +13,7 @@ import com.casic.dcms.utils.LocaleConstant; import com.gyf.immersionbar.ImmersionBar; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.IntHub; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; import java.util.ArrayList; @@ -28,8 +28,8 @@ @Override protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); viewBinding.titleBarLayout.titleView.setText("案卷核查"); viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); @@ -46,10 +46,10 @@ fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), LocaleConstant.CASE_PAGE_TITLES, fragmentList); - viewBinding.checkViewPager.setAdapter(adapter); + viewBinding.viewPager.setAdapter(adapter); //绑定TabLayout - viewBinding.checkTabLayout.setupWithViewPager(viewBinding.checkViewPager); - LinearLayout linearLayout = (LinearLayout) viewBinding.checkTabLayout.getChildAt(0); + viewBinding.topTabLayout.setupWithViewPager(viewBinding.viewPager); + LinearLayout linearLayout = (LinearLayout) viewBinding.topTabLayout.getChildAt(0); LinearLayoutHelper.setDivider(this, linearLayout); } diff --git a/app/src/main/java/com/casic/dcms/view/check/CheckDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CheckDetailActivity.java new file mode 100644 index 0000000..b9aeeb7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/view/check/CheckDetailActivity.java @@ -0,0 +1,356 @@ +package com.casic.dcms.view.check; + +import android.content.Context; +import android.text.TextUtils; +import android.view.View; +import android.widget.AdapterView; + +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.databinding.ActivityCheckDetailBinding; +import com.casic.dcms.model.ActionResultBean; +import com.casic.dcms.model.CaseDetailBean; +import com.casic.dcms.model.CaseNextNodeBean; +import com.casic.dcms.utils.DialogHelper; +import com.casic.dcms.utils.MapHelper; +import com.casic.dcms.utils.PictureSelectorHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.ISelectorListener; +import com.casic.dcms.view.BigImageActivity; +import com.casic.dcms.vm.CaseOperateViewModel; +import com.casic.dcms.vm.CaseViewModel; +import com.casic.dcms.vm.NodeViewModel; +import com.casic.dcms.vm.UploadViewModel; +import com.gyf.immersionbar.ImmersionBar; +import com.luck.picture.lib.entity.LocalMedia; +import com.pengxh.androidx.lite.adapter.EditableImageAdapter; +import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; +import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.ContextHub; +import com.pengxh.androidx.lite.hub.IntHub; +import com.pengxh.androidx.lite.hub.StringHub; +import com.pengxh.androidx.lite.utils.Constant; +import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.vm.LoadState; +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import cn.jzvd.Jzvd; + +public class CheckDetailActivity extends AndroidxBaseActivity { + + private final Context context = CheckDetailActivity.this; + private final ArrayList realPaths = new ArrayList<>(); //真实图片路径 + private final ArrayList imageList = new ArrayList<>(); //上传到服务器的数据集 + private CaseViewModel caseViewModel; + private UploadViewModel uploadViewModel; + private NodeViewModel nodeViewModel; + private CaseOperateViewModel operateViewModel; + private String id; + private String changeState; + private EditableImageAdapter checkImageAdapter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + + @Override + protected void setupTopBarLayout() { + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); + + viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); + viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); + } + + @Override + protected void observeRequestState() { + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + + uploadViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + + operateViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "案卷核查中,请稍后..."); + } else if (loadState == LoadState.Success) { + DialogHelper.dismissLoadingDialog(); + finish(); + } else { + StringHub.show(context, "核查失败,请重试"); + DialogHelper.dismissLoadingDialog(); + } + } + }); + } + + @Override + protected void initData() { + id = getIntent().getStringExtra(Constant.INTENT_PARAM); + caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.obtainCaseDetail(id); + caseViewModel.caseDetailModel.observe(this, new Observer() { + @Override + public void onChanged(CaseDetailBean resultBean) { + if (resultBean.getCode() == 200) { + data = resultBean.getData().get(0); + viewBinding.caseNumberView.setText(data.getCaseid()); + viewBinding.caseTypeView.setText(data.getEorcName()); + viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); + viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); + viewBinding.caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); + viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); + viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); + viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); + viewBinding.caseStartTimeView.setText(data.getCreateTime()); + viewBinding.caseEndTimeView.setText(data.getNodeLimittime()); + /** + * 图片 + */ + //核实照片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.imageGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + viewBinding.audioPlayerView.setVisibility(View.VISIBLE); + viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(videoFile)) { + viewBinding.videoPlayerView.setVisibility(View.VISIBLE); + String videoUrl = StringHelper.appendCompleteURL(videoFile); + viewBinding.videoPlayerView.setUp( + videoUrl, + StringHub.filterSpaceOrEnter(data.getDescription()), + Jzvd.SCREEN_NORMAL + ); + //设置第一帧为封面 + Glide.with(context) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(viewBinding.videoPlayerView.posterImageView); + } + + //处理照片 + String processImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(processImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = processImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.handleGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + viewBinding.caseHandleResultView.setText(data.getProcessRemarks().equals("") ? "无处理意见" : data.getProcessRemarks()); + //TODO 服务器返回数据缺少此字段,暂时注掉 +// viewBinding.caseHandleTimeView.setText(); + } + } + }); + + uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); + uploadViewModel.imageModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + if (checkImageAdapter.getItemCount() <= 3) { + String url = resultBean.getData(); + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + checkImageAdapter.setupImage(realPaths); + } else { + StringHub.show(context, "最多只能上传3张图片"); + } + } + } + }); + + nodeViewModel = new ViewModelProvider(this).get(NodeViewModel.class); + nodeViewModel.nodeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseNextNodeBean resultBean) { + if (resultBean.getCode() == 200) { + List dataBeans = resultBean.getData(); + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(context); + sheetBuilder.setTitle("核实情况"); + for (CaseNextNodeBean.DataBean dataBean : dataBeans) { + sheetBuilder.addItem(dataBean.getNextOperation()); + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); + viewBinding.caseCheckOptView.setText(dataBean.getNextOperation()); + changeState = String.valueOf(dataBean.getNextState()); + } + }).build().show(); + } else { + StringHub.show(context, "该案卷无下级流转节点"); + } + } + }); + + operateViewModel = new ViewModelProvider(this).get(CaseOperateViewModel.class); + + checkImageAdapter = new EditableImageAdapter(this, 3, 13); + viewBinding.addImageRecyclerView.setAdapter(checkImageAdapter); + } + + @Override + protected void initEvent() { + viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); + } + }); + + //图片九宫格事件处理 + checkImageAdapter.setOnItemClickListener(new EditableImageAdapter.OnItemClickListener() { + @Override + public void onAddImageClick() { + PictureSelectorHelper.selectPicture(context, new ISelectorListener() { + @Override + public void onSuccess(ArrayList result) { + if (result.size() == 1) { + uploadViewModel.uploadImage(new File(result.get(0).getRealPath())); + } else { + for (LocalMedia localMedia : result) { + uploadViewModel.uploadImage(new File(localMedia.getRealPath())); + } + } + } + }); + } + + @Override + public void onItemClick(int position) { + if (realPaths.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, realPaths); + } + } + + @Override + public void onItemLongClick(View view, int position) { + imageList.remove(position); + checkImageAdapter.deleteImage(position); + } + }); + + + viewBinding.caseCheckLayout.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + nodeViewModel.obtainNextNode(String.valueOf(data.getCaseState())); + } + }); + + viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + //案卷提交 + String remarks = viewBinding.caseCheckOptView.getText().toString(); + if (TextUtils.isEmpty(remarks)) { + StringHub.show(context, "核查意见不能为空"); + return; + } + if (TextUtils.isEmpty(changeState)) { + StringHub.show(context, "核查情况还未选择"); + return; + } + operateViewModel.checkCase(data.getProcessId(), id, + String.valueOf(data.getCaseState()), changeState, remarks, + StringHelper.reformatURL(imageList) + ); + } + }); + } + + @Override + public void onDestroy() { + viewBinding.audioPlayerView.release(); + super.onDestroy(); + } + + @Override + public void onBackPressed() { + if (Jzvd.backPress()) { + return; + } + super.onBackPressed(); + } + + @Override + public void onPause() { + super.onPause(); + Jzvd.releaseAllVideos(); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CheckedDetailActivity.java new file mode 100644 index 0000000..14e554b --- /dev/null +++ b/app/src/main/java/com/casic/dcms/view/check/CheckedDetailActivity.java @@ -0,0 +1,226 @@ +package com.casic.dcms.view.check; + +import android.content.Context; +import android.text.TextUtils; +import android.view.View; +import android.widget.AdapterView; + +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.databinding.ActivityCheckedDetailBinding; +import com.casic.dcms.model.CaseDetailBean; +import com.casic.dcms.utils.DialogHelper; +import com.casic.dcms.utils.MapHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.BigImageActivity; +import com.casic.dcms.view.CaseProcessActivity; +import com.casic.dcms.vm.CaseViewModel; +import com.gyf.immersionbar.ImmersionBar; +import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; +import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.ContextHub; +import com.pengxh.androidx.lite.hub.IntHub; +import com.pengxh.androidx.lite.hub.StringHub; +import com.pengxh.androidx.lite.utils.Constant; +import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.vm.LoadState; + +import java.util.ArrayList; + +import cn.jzvd.Jzvd; + +public class CheckedDetailActivity extends AndroidxBaseActivity { + + private final Context context = CheckedDetailActivity.this; + private CaseViewModel caseViewModel; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + + @Override + protected void setupTopBarLayout() { + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); + + viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); + viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); + } + + @Override + protected void observeRequestState() { + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + } + + @Override + protected void initData() { + String id = getIntent().getStringExtra(Constant.INTENT_PARAM); + caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.obtainCaseDetail(id); + caseViewModel.caseDetailModel.observe(this, new Observer() { + @Override + public void onChanged(CaseDetailBean resultBean) { + if (resultBean.getCode() == 200) { + data = resultBean.getData().get(0); + viewBinding.caseNumberView.setText(data.getCaseid()); + viewBinding.caseTypeView.setText(data.getEorcName()); + viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); + viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); + viewBinding.caseCommunityView.setText(data.getCommunityName()); + viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); + viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); + viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); + + //核实图片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.imageGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //处理图片 + 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)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.handleGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //核查图片 + String checkImages = data.getFileIdCheck(); + if (!TextUtils.isEmpty(checkImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = checkImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.checkGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + viewBinding.audioPlayerView.setVisibility(View.VISIBLE); + viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(videoFile)) { + viewBinding.videoPlayerView.setVisibility(View.VISIBLE); + String videoUrl = StringHelper.appendCompleteURL(videoFile); + viewBinding.videoPlayerView.setUp( + videoUrl, + StringHub.filterSpaceOrEnter(data.getDescription()), + Jzvd.SCREEN_NORMAL + ); + //设置第一帧为封面 + Glide.with(context) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(viewBinding.videoPlayerView.posterImageView); + } + } + } + }); + } + + @Override + protected void initEvent() { + viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); + } + }); + + viewBinding.handleLayout.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + ContextHub.navigatePageTo(context, CaseProcessActivity.class, data.getProcessId()); + } + }); + } + + @Override + protected void onDestroy() { + viewBinding.audioPlayerView.release(); + super.onDestroy(); + } + + @Override + public void onBackPressed() { + if (Jzvd.backPress()) { + return; + } + super.onBackPressed(); + } + + @Override + protected void onPause() { + super.onPause(); + Jzvd.releaseAllVideos(); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/map/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/view/map/CaseOnMapActivity.java index 5a85a88..c662347 100644 --- a/app/src/main/java/com/casic/dcms/view/map/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/view/map/CaseOnMapActivity.java @@ -18,10 +18,10 @@ import com.casic.dcms.R; import com.casic.dcms.databinding.ActivityMapCaseBinding; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.model.CaseHandleBean; import com.casic.dcms.model.PointDataBean; import com.casic.dcms.model.VerifyCaseModel; -import com.casic.dcms.model.check.CaseCheckModel; import com.casic.dcms.utils.ArcGisMapCreator; import com.casic.dcms.utils.LocaleConstant; import com.casic.dcms.view.CaseDetailActivity; @@ -116,11 +116,11 @@ public void onChanged(CaseCheckModel resultBean) { clearPictureMarker(); if (resultBean.isSuccess()) { - List rowsBeans = resultBean.getData().getRows(); + List rowsBeans = resultBean.getData().getRows(); if (rowsBeans.size() >= 1) { List list = new ArrayList<>(); List pointList = new ArrayList<>(); - for (CaseCheckModel.DataDTO.RowsDTO bean : rowsBeans) { + for (CaseCheckModel.DataModel.RowsModel bean : rowsBeans) { String lng = bean.getLng(); String lat = bean.getLat(); if (TextUtils.isEmpty(lng) || TextUtils.isEmpty(lat)) { diff --git a/app/src/main/java/com/casic/dcms/view/upload/BriefCaseActivity.java b/app/src/main/java/com/casic/dcms/view/upload/BriefCaseActivity.java index 2d2e8f6..794c651 100644 --- a/app/src/main/java/com/casic/dcms/view/upload/BriefCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/view/upload/BriefCaseActivity.java @@ -90,7 +90,31 @@ @Override protected void observeRequestState() { + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); + } else if (loadState == LoadState.Success) { + DialogHelper.dismissLoadingDialog(); + finish(); + } else { + StringHub.show(context, "提交失败,请重试"); + DialogHelper.dismissLoadingDialog(); + } + } + }); + uploadViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override @@ -99,8 +123,52 @@ smallTypeBeans = new ArrayList<>(); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + commonDataViewModel = new ViewModelProvider(this).get(CommonDataViewModel.class); + commonDataViewModel.largeTypeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseLargeTypeBean typeBean) { + if (typeBean.getCode() == 200) { + //设置大类数据 + largeTypeBeans = typeBean.getData(); + if (largeTypeBeans.size() != 0) { + viewBinding.caseLargeClassView.setText(largeTypeBeans.get(0).getTypeName());//默认选择第一个 + } + viewBinding.caseSmallClassView.setText("请选择"); + viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.darkGray)); + } + } + }); + commonDataViewModel.smallTypeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseSmallTypeBean typeBean) { + if (typeBean.getCode() == 200) { + //设置小类数据 + smallTypeBeans = typeBean.getData(); + if (smallTypeBeans.size() != 0) { + viewBinding.caseSmallClassView.setText(smallTypeBeans.get(0).getTypeDetailName());//默认选择第一个 + viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); + } + } + } + }); + uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); + uploadViewModel.imageModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + if (imageAdapter.getItemCount() <= 4) { + String url = resultBean.getData(); + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + imageAdapter.setupImage(realPaths); + } else { + StringHub.show(context, "最多只能上传3张图片"); + } + } + } + }); imageAdapter = new EditableImageAdapter(this, 3, 13); viewBinding.addImageRecyclerView.setAdapter(imageAdapter); @@ -132,20 +200,6 @@ }).build().show(); } }); - commonDataViewModel.largeTypeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseLargeTypeBean typeBean) { - if (typeBean.getCode() == 200) { - //设置大类数据 - largeTypeBeans = typeBean.getData(); - if (largeTypeBeans.size() != 0) { - viewBinding.caseLargeClassView.setText(largeTypeBeans.get(0).getTypeName());//默认选择第一个 - } - viewBinding.caseSmallClassView.setText("请选择"); - viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.darkGray)); - } - } - }); /** * 选择案卷大类 @@ -178,19 +232,6 @@ } } }); - commonDataViewModel.smallTypeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseSmallTypeBean typeBean) { - if (typeBean.getCode() == 200) { - //设置小类数据 - smallTypeBeans = typeBean.getData(); - if (smallTypeBeans.size() != 0) { - viewBinding.caseSmallClassView.setText(smallTypeBeans.get(0).getTypeDetailName());//默认选择第一个 - viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); - } - } - } - }); /** * 选择案卷小类 @@ -271,31 +312,6 @@ imageAdapter.deleteImage(position); } }); - uploadViewModel.imageModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - if (imageAdapter.getItemCount() <= 4) { - String url = resultBean.getData(); - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - imageAdapter.setupImage(realPaths); - } else { - StringHub.show(context, "最多只能上传3张图片"); - } - } - } - }); - uploadViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { @Override @@ -303,20 +319,6 @@ submitCase(); } }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); - } else if (loadState == LoadState.Success) { - DialogHelper.dismissLoadingDialog(); - finish(); - } else { - StringHub.show(context, "提交失败,请重试"); - DialogHelper.dismissLoadingDialog(); - } - } - }); } /** diff --git a/app/src/main/java/com/casic/dcms/view/upload/BusinessCaseActivity.java b/app/src/main/java/com/casic/dcms/view/upload/BusinessCaseActivity.java index 59b37b7..f6b6242 100644 --- a/app/src/main/java/com/casic/dcms/view/upload/BusinessCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/view/upload/BusinessCaseActivity.java @@ -84,12 +84,41 @@ @Override protected void observeRequestState() { - + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); + } else if (loadState == LoadState.Success) { + DialogHelper.dismissLoadingDialog(); + finish(); + } else { + StringHub.show(context, "提交失败,请重试"); + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override public void initData() { uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); + uploadViewModel.imageModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + if (imageAdapter.getItemCount() <= 4) { + String url = resultBean.getData(); + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + imageAdapter.setupImage(realPaths); + } else { + StringHub.show(context, "最多只能上传3张图片"); + } + } + } + }); + caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); imageAdapter = new EditableImageAdapter(this, 3, 13); @@ -142,21 +171,6 @@ imageAdapter.deleteImage(position); } }); - uploadViewModel.imageModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - if (imageAdapter.getItemCount() <= 4) { - String url = resultBean.getData(); - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - imageAdapter.setupImage(realPaths); - } else { - StringHub.show(context, "最多只能上传3张图片"); - } - } - } - }); viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { @Override @@ -164,20 +178,6 @@ submitCase(); } }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); - } else if (loadState == LoadState.Success) { - DialogHelper.dismissLoadingDialog(); - finish(); - } else { - StringHub.show(context, "提交失败,请重试"); - DialogHelper.dismissLoadingDialog(); - } - } - }); } /** diff --git a/app/src/main/java/com/casic/dcms/view/upload/CommonCaseActivity.java b/app/src/main/java/com/casic/dcms/view/upload/CommonCaseActivity.java index c2a889b..1eea805 100644 --- a/app/src/main/java/com/casic/dcms/view/upload/CommonCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/view/upload/CommonCaseActivity.java @@ -121,7 +121,31 @@ @Override protected void observeRequestState() { + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); + } else if (loadState == LoadState.Success) { + DialogHelper.dismissLoadingDialog(); + finish(); + } else { + StringHub.show(context, "提交失败,请重试"); + DialogHelper.dismissLoadingDialog(); + } + } + }); + uploadViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override @@ -130,8 +154,85 @@ smallTypeBeans = new ArrayList<>(); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + commonDataViewModel = new ViewModelProvider(this).get(CommonDataViewModel.class); + commonDataViewModel.largeTypeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseLargeTypeBean typeBean) { + if (typeBean.getCode() == 200) { + //设置大类数据 + largeTypeBeans = typeBean.getData(); + if (largeTypeBeans.size() != 0) { + viewBinding.caseLargeClassView.setText(largeTypeBeans.get(0).getTypeName());//默认选择第一个 + } + viewBinding.caseSmallClassView.setText("请选择"); + viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.darkGray)); + } + } + }); + commonDataViewModel.smallTypeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseSmallTypeBean typeBean) { + if (typeBean.getCode() == 200) { + //设置小类数据 + smallTypeBeans = typeBean.getData(); + if (smallTypeBeans.size() != 0) { + viewBinding.caseSmallClassView.setText(smallTypeBeans.get(0).getTypeDetailName());//默认选择第一个 + viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); + } + } + } + }); + uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); + uploadViewModel.imageModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + if (imageAdapter.getItemCount() <= 4) { + String url = resultBean.getData(); + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + imageAdapter.setupImage(realPaths); + } else { + StringHub.show(context, "最多只能上传3张图片"); + } + } + } + }); + uploadViewModel.audioModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + audioUrl = resultBean.getData(); + /** + * http://111.198.10.15:11409/static/2021-04/8fb86dae39ad4f949e934e25465d7382.m4a + * */ + if (!TextUtils.isEmpty(audioUrl)) { + viewBinding.audioPlayerView.setVisibility(View.VISIBLE); + viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioUrl)); + } + } + } + }); + uploadViewModel.videoModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + //2021-04\\9d89df21173043cfb4188e68613e3e0e.mp4 + viewBinding.addVideoView.setVisibility(View.GONE); + viewBinding.videoPlayerView.setVisibility(View.VISIBLE); + videoUrl = resultBean.getData(); + String completeURL = StringHelper.appendCompleteURL(videoUrl); + viewBinding.videoPlayerView.setUp(completeURL, "", Jzvd.SCREEN_NORMAL); + //设置第一帧为封面 + Glide.with(context) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(completeURL) + .into(viewBinding.videoPlayerView.posterImageView); + } + } + }); progressDialog = new ProgressDialog(this); progressDialog.setMessage("视频压缩中..."); @@ -188,20 +289,6 @@ }).build().show(); } }); - commonDataViewModel.largeTypeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseLargeTypeBean typeBean) { - if (typeBean.getCode() == 200) { - //设置大类数据 - largeTypeBeans = typeBean.getData(); - if (largeTypeBeans.size() != 0) { - viewBinding.caseLargeClassView.setText(largeTypeBeans.get(0).getTypeName());//默认选择第一个 - } - viewBinding.caseSmallClassView.setText("请选择"); - viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.darkGray)); - } - } - }); /** * 选择案卷大类 @@ -234,19 +321,6 @@ } } }); - commonDataViewModel.smallTypeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseSmallTypeBean typeBean) { - if (typeBean.getCode() == 200) { - //设置小类数据 - smallTypeBeans = typeBean.getData(); - if (smallTypeBeans.size() != 0) { - viewBinding.caseSmallClassView.setText(smallTypeBeans.get(0).getTypeDetailName());//默认选择第一个 - viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); - } - } - } - }); /** * 选择案卷小类 @@ -430,64 +504,6 @@ imageAdapter.deleteImage(position); } }); - uploadViewModel.imageModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - if (imageAdapter.getItemCount() <= 4) { - String url = resultBean.getData(); - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - imageAdapter.setupImage(realPaths); - } else { - StringHub.show(context, "最多只能上传3张图片"); - } - } - } - }); - uploadViewModel.audioModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - audioUrl = resultBean.getData(); - /** - * http://111.198.10.15:11409/static/2021-04/8fb86dae39ad4f949e934e25465d7382.m4a - * */ - if (!TextUtils.isEmpty(audioUrl)) { - viewBinding.audioPlayerView.setVisibility(View.VISIBLE); - viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioUrl)); - } - } - } - }); - uploadViewModel.videoModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - //2021-04\\9d89df21173043cfb4188e68613e3e0e.mp4 - viewBinding.addVideoView.setVisibility(View.GONE); - viewBinding.videoPlayerView.setVisibility(View.VISIBLE); - videoUrl = resultBean.getData(); - String completeURL = StringHelper.appendCompleteURL(videoUrl); - viewBinding.videoPlayerView.setUp(completeURL, "", Jzvd.SCREEN_NORMAL); - //设置第一帧为封面 - Glide.with(context) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(completeURL) - .into(viewBinding.videoPlayerView.posterImageView); - } - } - }); - uploadViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { @Override @@ -495,20 +511,6 @@ submitCase(); } }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); - } else if (loadState == LoadState.Success) { - DialogHelper.dismissLoadingDialog(); - finish(); - } else { - StringHub.show(context, "提交失败,请重试"); - DialogHelper.dismissLoadingDialog(); - } - } - }); } /** diff --git a/app/src/main/java/com/casic/dcms/view/verify/VerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/view/verify/VerifiedDetailActivity.java index eec22e6..2e1469d 100644 --- a/app/src/main/java/com/casic/dcms/view/verify/VerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/view/verify/VerifiedDetailActivity.java @@ -5,7 +5,6 @@ import android.view.View; import android.widget.AdapterView; -import androidx.core.content.ContextCompat; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; @@ -23,6 +22,7 @@ import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; import com.pengxh.androidx.lite.hub.ContextHub; +import com.pengxh.androidx.lite.hub.IntHub; import com.pengxh.androidx.lite.hub.StringHub; import com.pengxh.androidx.lite.utils.Constant; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; @@ -40,8 +40,8 @@ @Override protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); viewBinding.titleBarLayout.titleView.setText("案卷详情"); viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); diff --git a/app/src/main/java/com/casic/dcms/view/verify/VerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/view/verify/VerifyDetailActivity.java index 207394d..da1c8bd 100644 --- a/app/src/main/java/com/casic/dcms/view/verify/VerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/view/verify/VerifyDetailActivity.java @@ -110,7 +110,42 @@ @Override protected void observeRequestState() { + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + uploadViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + + operateViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "案卷核实中,请稍后..."); + } else if (loadState == LoadState.Success) { + DialogHelper.dismissLoadingDialog(); + finish(); + } else { + StringHub.show(context, "核实失败,请重试"); + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override @@ -121,19 +156,7 @@ smallTypeBeans = new ArrayList<>(); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); - commonDataViewModel = new ViewModelProvider(this).get(CommonDataViewModel.class); - uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); - nodeViewModel = new ViewModelProvider(this).get(NodeViewModel.class); - operateViewModel = new ViewModelProvider(this).get(CaseOperateViewModel.class); - caseViewModel.obtainCaseDetail(id); - - verifyImageAdapter = new EditableImageAdapter(this, 3, 13); - viewBinding.addImageRecyclerView.setAdapter(verifyImageAdapter); - } - - @Override - public void initEvent() { caseViewModel.caseDetailModel.observe(this, new Observer() { @Override public void onChanged(CaseDetailBean resultBean) { @@ -219,17 +242,89 @@ } } }); - caseViewModel.loadState.observe(this, new Observer() { + + commonDataViewModel = new ViewModelProvider(this).get(CommonDataViewModel.class); + commonDataViewModel.largeTypeModel.observe(this, new Observer() { @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "获取数据中..."); - } else { - DialogHelper.dismissLoadingDialog(); + public void onChanged(CaseLargeTypeBean typeBean) { + if (typeBean.getCode() == 200) { + //设置大类数据 + largeTypeBeans = typeBean.getData(); + if (largeTypeBeans.size() == 0) { + viewBinding.caseLargeTypeView.setText("无小类"); + } else { + viewBinding.caseLargeTypeView.setText(largeTypeBeans.get(0).getTypeName());//默认选择第一个 + } + viewBinding.caseSmallTypeView.setText("请选择"); + } + } + }); + commonDataViewModel.smallTypeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseSmallTypeBean typeBean) { + if (typeBean.getCode() == 200) { + smallTypeBeans = typeBean.getData(); + if (smallTypeBeans.size() == 0) { + viewBinding.caseSmallTypeView.setText("无小类"); + } else { + viewBinding.caseSmallTypeView.setText(smallTypeBeans.get(0).getTypeDetailName());//默认选择第一个 + } } } }); + uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); + uploadViewModel.imageModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + if (verifyImageAdapter.getItemCount() <= 3) { + String url = resultBean.getData(); + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + verifyImageAdapter.setupImage(realPaths); + } else { + StringHub.show(context, "最多只能上传3张图片"); + } + } + } + }); + + nodeViewModel = new ViewModelProvider(this).get(NodeViewModel.class); + nodeViewModel.nodeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + List dataBeans = resultBean.getData(); + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(context); + sheetBuilder.setTitle("核实情况"); + for (CaseNextNodeBean.DataBean dataBean : dataBeans) { + sheetBuilder.addItem(dataBean.getNextOperation()); + } + sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + + CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); + viewBinding.caseConditionView.setText(dataBean.getNextOperation()); + changeState = String.valueOf(dataBean.getNextState()); + } + }).build().show(); + } else { + StringHub.show(context, "该案卷无下级流转节点"); + } + } + }); + + operateViewModel = new ViewModelProvider(this).get(CaseOperateViewModel.class); + + verifyImageAdapter = new EditableImageAdapter(this, 3, 13); + viewBinding.addImageRecyclerView.setAdapter(verifyImageAdapter); + } + + @Override + public void initEvent() { viewBinding.caseClassLayout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -249,21 +344,6 @@ }).build().show(); } }); - commonDataViewModel.largeTypeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseLargeTypeBean typeBean) { - if (typeBean.getCode() == 200) { - //设置大类数据 - largeTypeBeans = typeBean.getData(); - if (largeTypeBeans.size() == 0) { - viewBinding.caseLargeTypeView.setText("无小类"); - } else { - viewBinding.caseLargeTypeView.setText(largeTypeBeans.get(0).getTypeName());//默认选择第一个 - } - viewBinding.caseSmallTypeView.setText("请选择"); - } - } - }); viewBinding.caseLargeClassLayout.setOnClickListener(new View.OnClickListener() { @Override @@ -292,19 +372,6 @@ } } }); - commonDataViewModel.smallTypeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseSmallTypeBean typeBean) { - if (typeBean.getCode() == 200) { - smallTypeBeans = typeBean.getData(); - if (smallTypeBeans.size() == 0) { - viewBinding.caseSmallTypeView.setText("无小类"); - } else { - viewBinding.caseSmallTypeView.setText(smallTypeBeans.get(0).getTypeDetailName());//默认选择第一个 - } - } - } - }); viewBinding.caseSmallClassLayout.setOnClickListener(new View.OnClickListener() { @Override @@ -353,31 +420,6 @@ nodeViewModel.obtainNextNode(String.valueOf(data.getCaseState())); } }); - nodeViewModel.nodeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseNextNodeBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(context); - sheetBuilder.setTitle("核实情况"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - viewBinding.caseConditionView.setText(dataBean.getNextOperation()); - changeState = String.valueOf(dataBean.getNextState()); - } - }).build().show(); - } else { - StringHub.show(context, "该案卷无下级流转节点"); - } - } - }); //图片九宫格事件处理 verifyImageAdapter.setOnItemClickListener(new EditableImageAdapter.OnItemClickListener() { @@ -412,31 +454,6 @@ verifyImageAdapter.deleteImage(position); } }); - uploadViewModel.imageModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - if (verifyImageAdapter.getItemCount() <= 3) { - String url = resultBean.getData(); - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - verifyImageAdapter.setupImage(realPaths); - } else { - StringHub.show(context, "最多只能上传3张图片"); - } - } - } - }); - uploadViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { @Override @@ -444,20 +461,6 @@ submitCase(); } }); - operateViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "案卷核实中,请稍后..."); - } else if (loadState == LoadState.Success) { - DialogHelper.dismissLoadingDialog(); - finish(); - } else { - StringHub.show(context, "核实失败,请重试"); - DialogHelper.dismissLoadingDialog(); - } - } - }); } private void submitCase() { diff --git a/app/src/main/java/com/casic/dcms/vm/CaseViewModel.java b/app/src/main/java/com/casic/dcms/vm/CaseViewModel.java index 5f58648..1786e1f 100644 --- a/app/src/main/java/com/casic/dcms/vm/CaseViewModel.java +++ b/app/src/main/java/com/casic/dcms/vm/CaseViewModel.java @@ -2,6 +2,7 @@ import androidx.lifecycle.MutableLiveData; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.model.CaseDetailBean; import com.casic.dcms.model.CaseHandleBean; import com.casic.dcms.model.CaseHandledBean; @@ -11,7 +12,6 @@ import com.casic.dcms.model.UrgentCaseBean; import com.casic.dcms.model.VerifiedCaseModel; import com.casic.dcms.model.VerifyCaseModel; -import com.casic.dcms.model.check.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.retrofit.RetrofitServiceManager; diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b6a8d08..c78d07c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -64,8 +64,8 @@ - - + + diff --git a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java deleted file mode 100644 index 254f0cd..0000000 --- a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.casic.dcms.adapter; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.text.TextUtils; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.model.check.CaseCheckModel; -import com.casic.dcms.utils.StringHelper; -import com.pengxh.androidx.lite.hub.StringHub; -import com.qmuiteam.qmui.widget.QMUIRadiusImageView; - -import java.util.List; - -public class CheckCaseListAdapter extends RecyclerView.Adapter { - - private final Context context; - private final List dataBeans; - private final LayoutInflater layoutInflater; - - public CheckCaseListAdapter(Context context, List dataRows) { - this.context = context; - this.dataBeans = dataRows; - this.layoutInflater = LayoutInflater.from(context); - } - - @NonNull - @Override - public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - return new ItemViewHolder(layoutInflater.inflate(R.layout.item_case_rv_l, parent, false)); - } - - @Override - public void onBindViewHolder(@NonNull ItemViewHolder holder, @SuppressLint("RecyclerView") int position) { - holder.bindView(dataBeans.get(position)); - if (clickListener != null) { - holder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - clickListener.onClick(position); - } - }); - } - } - - @Override - public int getItemCount() { - return dataBeans.size(); - } - - class ItemViewHolder extends RecyclerView.ViewHolder { - - private final QMUIRadiusImageView caseImageView; - private final TextView caseTitleView; - private final TextView casePlaceView; - private final TextView caseTimeView; - - ItemViewHolder(@NonNull View itemView) { - super(itemView); - caseImageView = itemView.findViewById(R.id.caseImageView); - caseTitleView = itemView.findViewById(R.id.caseTitleView); - casePlaceView = itemView.findViewById(R.id.casePlaceView); - caseTimeView = itemView.findViewById(R.id.caseTimeView); - } - - void bindView(CaseCheckModel.DataDTO.RowsDTO rowsBean) { - //处理图片 - String fileIdProcess = rowsBean.getFileIdProcess(); - if (!TextUtils.isEmpty(fileIdProcess)) { - String[] split = fileIdProcess.split(","); - String firstImage = split[0]; - if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { - Glide.with(context).load(StringHelper.appendCompleteURL(firstImage)).into(caseImageView); - } - } - caseTitleView.setText(StringHub.filterSpaceOrEnter(rowsBean.getDescription())); - casePlaceView.setText("发生地点:" + StringHub.filterSpaceOrEnter(rowsBean.getFieldintro())); - caseTimeView.setText("上报时间:" + rowsBean.getReportTime()); - } - } - - private OnItemClickListener clickListener; - - public interface OnItemClickListener { - void onClick(int position); - } - - public void setOnItemClickListener(OnItemClickListener onItemClickListener) { - this.clickListener = onItemClickListener; - } -} diff --git a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java index 85cebc6..667981d 100644 --- a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java @@ -1,19 +1,27 @@ package com.casic.dcms.fragment.check; +import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; + +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.casic.dcms.adapter.CheckCaseListAdapter; +import com.bumptech.glide.Glide; +import com.casic.dcms.R; import com.casic.dcms.databinding.FragmentCheckCaseBinding; -import com.casic.dcms.model.check.CaseCheckModel; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.view.check.CaseCheckDetailActivity; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.check.CheckDetailActivity; import com.casic.dcms.vm.CaseViewModel; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseFragment; import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.StringHub; @@ -24,14 +32,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class CaseCheckFragment extends AndroidxBaseFragment { private static final String TAG = "CaseCheckFragment"; private WeakReferenceHandler weakReferenceHandler; private CaseViewModel caseViewModel; - private CheckCaseListAdapter adapter; - private List dataBeans = new ArrayList<>(); + private NormalRecyclerAdapter adapter; + private List dataBeans = new ArrayList<>(); private int pageIndex = 1; private boolean isRefresh, isLoadMore = false; @@ -49,12 +58,37 @@ protected void initData() { weakReferenceHandler = new WeakReferenceHandler(callback); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.caseCheckModel.observe(this, new Observer() { + @Override + public void onChanged(CaseCheckModel resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(requireContext(), "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(202104251); + } + } + }); } @Override public void onResume() { - obtainCheckCaseList(); super.onResume(); + pageIndex = 1; + obtainCheckCaseList(); } private void obtainCheckCaseList() { @@ -80,31 +114,6 @@ obtainCheckCaseList(); } }); - - caseViewModel.caseCheckModel.observe(this, new Observer() { - @Override - public void onChanged(CaseCheckModel resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(requireContext(), "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(202104251); - } - } - }); } private final Handler.Callback callback = new Handler.Callback() { @@ -125,16 +134,42 @@ }); } else { viewBinding.emptyView.hide(); - adapter = new CheckCaseListAdapter(requireContext(), dataBeans); - viewBinding.caseRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new CheckCaseListAdapter.OnItemClickListener() { + adapter = new NormalRecyclerAdapter(R.layout.item_case_rv_l, dataBeans) { @Override - public void onClick(int position) { - ContextHub.navigatePageTo( - requireContext(), - CaseCheckDetailActivity.class, - dataBeans.get(position).getId() - ); + public void convertView(ViewHolder viewHolder, int position, CaseCheckModel.DataModel.RowsModel item) { + String fileIdProcess = item.getFileIdProcess(); + if (!TextUtils.isEmpty(fileIdProcess)) { + String[] split = fileIdProcess.split(","); + String firstImage = split[0]; + if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Drawable drawable = Glide.with(requireContext()).load(StringHelper.appendCompleteURL(firstImage)).submit().get(); + runOnUiThread(new Runnable() { + @Override + public void run() { + viewHolder.setImageResource(R.id.caseImageView, drawable); + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + } + } + viewHolder.setText(R.id.caseTitleView, StringHub.filterSpaceOrEnter(item.getDescription())) + .setText(R.id.casePlaceView, "发生地点:" + StringHub.filterSpaceOrEnter(item.getFieldintro())) + .setText(R.id.caseTimeView, "上报时间:" + item.getReportTime()); + } + }; + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, CaseCheckModel.DataModel.RowsModel rowsModel) { + ContextHub.navigatePageTo(requireContext(), CheckDetailActivity.class, rowsModel.getId()); } }); } diff --git a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java index 3e2d904..6775b65 100644 --- a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java @@ -1,19 +1,27 @@ package com.casic.dcms.fragment.check; +import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; + +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.casic.dcms.adapter.CheckCaseListAdapter; +import com.bumptech.glide.Glide; +import com.casic.dcms.R; import com.casic.dcms.databinding.FragmentCheckCaseBinding; -import com.casic.dcms.model.check.CaseCheckModel; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.view.check.CaseCheckedDetailActivity; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.check.CheckedDetailActivity; import com.casic.dcms.vm.CaseViewModel; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseFragment; import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.StringHub; @@ -24,14 +32,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class CaseCheckedFragment extends AndroidxBaseFragment { private static final String TAG = "CaseCheckedFragment"; private WeakReferenceHandler weakReferenceHandler; private CaseViewModel caseViewModel; - private CheckCaseListAdapter adapter; - private List dataBeans = new ArrayList<>(); + private NormalRecyclerAdapter adapter; + private List dataBeans = new ArrayList<>(); private int pageIndex = 1; private boolean isRefresh, isLoadMore = false; @@ -50,12 +59,37 @@ protected void initData() { weakReferenceHandler = new WeakReferenceHandler(callback); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.caseCheckModel.observe(this, new Observer() { + @Override + public void onChanged(CaseCheckModel resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(requireContext(), "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(202104252); + } + } + }); } @Override public void onResume() { - obtainCheckCaseList(); super.onResume(); + pageIndex = 1; + obtainCheckCaseList(); } private void obtainCheckCaseList() { @@ -81,32 +115,6 @@ obtainCheckCaseList(); } }); - - caseViewModel.caseCheckModel.observe(this, new Observer() { - - @Override - public void onChanged(CaseCheckModel resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(requireContext(), "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(202104252); - } - } - }); } private final Handler.Callback callback = new Handler.Callback() { @@ -127,16 +135,42 @@ }); } else { viewBinding.emptyView.hide(); - adapter = new CheckCaseListAdapter(requireContext(), dataBeans); - viewBinding.caseRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new CheckCaseListAdapter.OnItemClickListener() { + adapter = new NormalRecyclerAdapter(R.layout.item_case_rv_l, dataBeans) { @Override - public void onClick(int position) { - ContextHub.navigatePageTo( - requireContext(), - CaseCheckedDetailActivity.class, - dataBeans.get(position).getId() - ); + public void convertView(ViewHolder viewHolder, int position, CaseCheckModel.DataModel.RowsModel item) { + String fileIdProcess = item.getFileIdProcess(); + if (!TextUtils.isEmpty(fileIdProcess)) { + String[] split = fileIdProcess.split(","); + String firstImage = split[0]; + if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Drawable drawable = Glide.with(requireContext()).load(StringHelper.appendCompleteURL(firstImage)).submit().get(); + runOnUiThread(new Runnable() { + @Override + public void run() { + viewHolder.setImageResource(R.id.caseImageView, drawable); + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + } + } + viewHolder.setText(R.id.caseTitleView, StringHub.filterSpaceOrEnter(item.getDescription())) + .setText(R.id.casePlaceView, "发生地点:" + StringHub.filterSpaceOrEnter(item.getFieldintro())) + .setText(R.id.caseTimeView, "上报时间:" + item.getReportTime()); + } + }; + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, CaseCheckModel.DataModel.RowsModel rowsModel) { + ContextHub.navigatePageTo(requireContext(), CheckedDetailActivity.class, rowsModel.getId()); } }); } diff --git a/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java b/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java new file mode 100644 index 0000000..550a1fe --- /dev/null +++ b/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java @@ -0,0 +1,358 @@ +package com.casic.dcms.model; + +import java.util.List; + +/** + * 核查-已办/待办共用一个Model + */ +public class CaseCheckModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String isPostpone; + private String description; + private String source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private String caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String lng; + private String isOvertime; + private String currRoleName; + private String fileIdVerify; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String taskName; + private String sourceName; + private String fileIdProcess; + private String reportTime; + private String onedeptName; + + public String getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(String isPostpone) { + this.isPostpone = isPostpone; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getCaseState() { + return caseState; + } + + public void setCaseState(String caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getFileIdVerify() { + return fileIdVerify; + } + + public void setFileIdVerify(String fileIdVerify) { + this.fileIdVerify = fileIdVerify; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getTaskName() { + return taskName; + } + + public void setTaskName(String taskName) { + this.taskName = taskName; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getFileIdProcess() { + return fileIdProcess; + } + + public void setFileIdProcess(String fileIdProcess) { + this.fileIdProcess = fileIdProcess; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java b/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java deleted file mode 100644 index 854e2fe..0000000 --- a/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java +++ /dev/null @@ -1,358 +0,0 @@ -package com.casic.dcms.model.check; - -import java.util.List; - -/** - * 核查-已办/待办共用一个Bean - */ -public class CaseCheckModel { - - private int code; - private DataDTO data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataDTO getData() { - return data; - } - - public void setData(DataDTO data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataDTO { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsDTO { - private int isPostpone; - private String description; - private int source; - private String eorcName; - private String casetypeDetailName; - private String remainingTime; - private String casetypeName; - private String currUserId; - private String currUserName; - private String processId; - private int caseState; - private String id; - private String shopId; - private String fieldintro; - private String lat; - private String caseStateName; - private String lng; - private String isOvertime; - private String currRoleName; - private String fileIdVerify; - private String casetypeDetailCode; - private String onedeptid; - private String eorc; - private String currRoleId; - private String caseid; - private String casetypeCode; - private String nodeLimittime; - private String taskName; - private String sourceName; - private String fileIdProcess; - private String reportTime; - private String onedeptName; - - public int getIsPostpone() { - return isPostpone; - } - - public void setIsPostpone(int isPostpone) { - this.isPostpone = isPostpone; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public int getSource() { - return source; - } - - public void setSource(int source) { - this.source = source; - } - - public String getEorcName() { - return eorcName; - } - - public void setEorcName(String eorcName) { - this.eorcName = eorcName; - } - - public String getCasetypeDetailName() { - return casetypeDetailName; - } - - public void setCasetypeDetailName(String casetypeDetailName) { - this.casetypeDetailName = casetypeDetailName; - } - - public String getRemainingTime() { - return remainingTime; - } - - public void setRemainingTime(String remainingTime) { - this.remainingTime = remainingTime; - } - - public String getCasetypeName() { - return casetypeName; - } - - public void setCasetypeName(String casetypeName) { - this.casetypeName = casetypeName; - } - - public String getCurrUserId() { - return currUserId; - } - - public void setCurrUserId(String currUserId) { - this.currUserId = currUserId; - } - - public String getCurrUserName() { - return currUserName; - } - - public void setCurrUserName(String currUserName) { - this.currUserName = currUserName; - } - - public String getProcessId() { - return processId; - } - - public void setProcessId(String processId) { - this.processId = processId; - } - - public int getCaseState() { - return caseState; - } - - public void setCaseState(int caseState) { - this.caseState = caseState; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getShopId() { - return shopId; - } - - public void setShopId(String shopId) { - this.shopId = shopId; - } - - public String getFieldintro() { - return fieldintro; - } - - public void setFieldintro(String fieldintro) { - this.fieldintro = fieldintro; - } - - public String getLat() { - return lat; - } - - public void setLat(String lat) { - this.lat = lat; - } - - public String getCaseStateName() { - return caseStateName; - } - - public void setCaseStateName(String caseStateName) { - this.caseStateName = caseStateName; - } - - public String getLng() { - return lng; - } - - public void setLng(String lng) { - this.lng = lng; - } - - public String getIsOvertime() { - return isOvertime; - } - - public void setIsOvertime(String isOvertime) { - this.isOvertime = isOvertime; - } - - public String getCurrRoleName() { - return currRoleName; - } - - public void setCurrRoleName(String currRoleName) { - this.currRoleName = currRoleName; - } - - public String getFileIdVerify() { - return fileIdVerify; - } - - public void setFileIdVerify(String fileIdVerify) { - this.fileIdVerify = fileIdVerify; - } - - public String getCasetypeDetailCode() { - return casetypeDetailCode; - } - - public void setCasetypeDetailCode(String casetypeDetailCode) { - this.casetypeDetailCode = casetypeDetailCode; - } - - public String getOnedeptid() { - return onedeptid; - } - - public void setOnedeptid(String onedeptid) { - this.onedeptid = onedeptid; - } - - public String getEorc() { - return eorc; - } - - public void setEorc(String eorc) { - this.eorc = eorc; - } - - public String getCurrRoleId() { - return currRoleId; - } - - public void setCurrRoleId(String currRoleId) { - this.currRoleId = currRoleId; - } - - public String getCaseid() { - return caseid; - } - - public void setCaseid(String caseid) { - this.caseid = caseid; - } - - public String getCasetypeCode() { - return casetypeCode; - } - - public void setCasetypeCode(String casetypeCode) { - this.casetypeCode = casetypeCode; - } - - public String getNodeLimittime() { - return nodeLimittime; - } - - public void setNodeLimittime(String nodeLimittime) { - this.nodeLimittime = nodeLimittime; - } - - public String getTaskName() { - return taskName; - } - - public void setTaskName(String taskName) { - this.taskName = taskName; - } - - public String getSourceName() { - return sourceName; - } - - public void setSourceName(String sourceName) { - this.sourceName = sourceName; - } - - public String getFileIdProcess() { - return fileIdProcess; - } - - public void setFileIdProcess(String fileIdProcess) { - this.fileIdProcess = fileIdProcess; - } - - public String getReportTime() { - return reportTime; - } - - public void setReportTime(String reportTime) { - this.reportTime = reportTime; - } - - public String getOnedeptName() { - return onedeptName; - } - - public void setOnedeptName(String onedeptName) { - this.onedeptName = onedeptName; - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java b/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java index cd3e026..d0888bc 100644 --- a/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java @@ -14,10 +14,10 @@ import com.casic.dcms.R; public class NotificationHelper { - private Context mContext; + private final Context mContext; @SuppressLint("StaticFieldLeak") - private static NotificationHelper notificationHelper; - private NotificationManager notificationManager; + private static volatile NotificationHelper notificationHelper; + private final NotificationManager notificationManager; private NotificationHelper(Context context) { this.mContext = context; @@ -45,10 +45,8 @@ //创建渠道 String id = name + "_DefaultChannel"; NotificationChannel mChannel = new NotificationChannel(id, name, NotificationManager.IMPORTANCE_HIGH); -// mChannel.setSound(Uri.parse(""), Notification.AUDIO_ATTRIBUTES_DEFAULT); mChannel.setShowBadge(true); - mChannel.enableVibration(true); - mChannel.setVibrationPattern(new long[]{100, 200, 300}); + mChannel.enableVibration(false); mChannel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);//设置锁屏可见 notificationManager.createNotificationChannel(mChannel); builder = new Notification.Builder(mContext, id); diff --git a/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java index d7bf511..691dfd5 100644 --- a/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java +++ b/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java @@ -4,20 +4,22 @@ import android.graphics.Color; import android.view.View; -import androidx.core.content.ContextCompat; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; import com.casic.dcms.R; import com.casic.dcms.databinding.ActivityCaseProcessBinding; import com.casic.dcms.model.CaseProcessBean; +import com.casic.dcms.utils.DialogHelper; import com.casic.dcms.vm.CommonDataViewModel; import com.gyf.immersionbar.ImmersionBar; import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.IntHub; import com.pengxh.androidx.lite.utils.Constant; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.vm.LoadState; import java.util.ArrayList; import java.util.List; @@ -30,8 +32,8 @@ @Override protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); viewBinding.titleBarLayout.titleView.setText("处理记录"); viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); @@ -39,7 +41,16 @@ @Override protected void observeRequestState() { - + commonDataViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override @@ -47,10 +58,6 @@ String processId = getIntent().getStringExtra(Constant.INTENT_PARAM); commonDataViewModel = new ViewModelProvider(this).get(CommonDataViewModel.class); commonDataViewModel.obtainCaseProcess(processId); - } - - @Override - protected void initEvent() { commonDataViewModel.caseProcessModel.observe(this, new Observer() { @Override public void onChanged(CaseProcessBean resultBean) { @@ -91,4 +98,9 @@ } }); } + + @Override + protected void initEvent() { + + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java deleted file mode 100644 index 30585d5..0000000 --- a/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java +++ /dev/null @@ -1,353 +0,0 @@ -package com.casic.dcms.view.check; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; - -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.databinding.ActivityCaseCheckDetailBinding; -import com.casic.dcms.model.ActionResultBean; -import com.casic.dcms.model.CaseDetailBean; -import com.casic.dcms.model.CaseNextNodeBean; -import com.casic.dcms.utils.DialogHelper; -import com.casic.dcms.utils.MapHelper; -import com.casic.dcms.utils.PictureSelectorHelper; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.callback.ISelectorListener; -import com.casic.dcms.view.BigImageActivity; -import com.casic.dcms.vm.CaseOperateViewModel; -import com.casic.dcms.vm.CaseViewModel; -import com.casic.dcms.vm.NodeViewModel; -import com.casic.dcms.vm.UploadViewModel; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.entity.LocalMedia; -import com.pengxh.androidx.lite.adapter.EditableImageAdapter; -import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.hub.ContextHub; -import com.pengxh.androidx.lite.hub.StringHub; -import com.pengxh.androidx.lite.utils.Constant; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; -import com.pengxh.androidx.lite.vm.LoadState; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import cn.jzvd.Jzvd; - -public class CaseCheckDetailActivity extends AndroidxBaseActivity { - - private final Context context = CaseCheckDetailActivity.this; - private final ArrayList realPaths = new ArrayList<>(); //真实图片路径 - private final ArrayList imageList = new ArrayList<>(); //上传到服务器的数据集 - private CaseViewModel caseViewModel; - private UploadViewModel uploadViewModel; - private NodeViewModel nodeViewModel; - private CaseOperateViewModel operateViewModel; - private String id; - private String changeState; - private EditableImageAdapter checkImageAdapter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - - viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - } - - @Override - protected void observeRequestState() { - - } - - @Override - protected void initData() { - id = getIntent().getStringExtra(Constant.INTENT_PARAM); - caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); - caseViewModel.obtainCaseDetail(id); - - uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); - nodeViewModel = new ViewModelProvider(this).get(NodeViewModel.class); - operateViewModel = new ViewModelProvider(this).get(CaseOperateViewModel.class); - - checkImageAdapter = new EditableImageAdapter(this, 3, 13); - viewBinding.addImageRecyclerView.setAdapter(checkImageAdapter); - } - - @Override - protected void initEvent() { - caseViewModel.caseDetailModel.observe(this, new Observer() { - @Override - public void onChanged(CaseDetailBean resultBean) { - if (resultBean.getCode() == 200) { - data = resultBean.getData().get(0); - viewBinding.caseNumberView.setText(data.getCaseid()); - viewBinding.caseTypeView.setText(data.getEorcName()); - viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); - viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); - viewBinding.caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); - viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); - viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); - viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - viewBinding.caseStartTimeView.setText(data.getCreateTime()); - viewBinding.caseEndTimeView.setText(data.getNodeLimittime()); - /** - * 图片 - */ - //核实照片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.imageGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - viewBinding.audioPlayerView.setVisibility(View.VISIBLE); - viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - viewBinding.videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - viewBinding.videoPlayerView.setUp( - videoUrl, - StringHub.filterSpaceOrEnter(data.getDescription()), - Jzvd.SCREEN_NORMAL - ); - //设置第一帧为封面 - Glide.with(context) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(viewBinding.videoPlayerView.posterImageView); - } - - //处理照片 - String processImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(processImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = processImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - viewBinding.caseHandleResultView.setText(data.getProcessRemarks().equals("") ? "无处理意见" : data.getProcessRemarks()); - //TODO 服务器返回数据缺少此字段,暂时注掉 -// viewBinding.caseHandleTimeView.setText(); - } - } - }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "获取数据中..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); - } - }); - - //图片九宫格事件处理 - checkImageAdapter.setOnItemClickListener(new EditableImageAdapter.OnItemClickListener() { - @Override - public void onAddImageClick() { - PictureSelectorHelper.selectPicture(context, new ISelectorListener() { - @Override - public void onSuccess(ArrayList result) { - if (result.size() == 1) { - uploadViewModel.uploadImage(new File(result.get(0).getRealPath())); - } else { - for (LocalMedia localMedia : result) { - uploadViewModel.uploadImage(new File(localMedia.getRealPath())); - } - } - } - }); - } - - @Override - public void onItemClick(int position) { - if (realPaths.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, realPaths); - } - } - - @Override - public void onItemLongClick(View view, int position) { - imageList.remove(position); - checkImageAdapter.deleteImage(position); - } - }); - uploadViewModel.imageModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - if (checkImageAdapter.getItemCount() <= 3) { - String url = resultBean.getData(); - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - checkImageAdapter.setupImage(realPaths); - } else { - StringHub.show(context, "最多只能上传3张图片"); - } - } - } - }); - uploadViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.caseCheckLayout.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - nodeViewModel.obtainNextNode(String.valueOf(data.getCaseState())); - } - }); - nodeViewModel.nodeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseNextNodeBean resultBean) { - if (resultBean.getCode() == 200) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(context); - sheetBuilder.setTitle("核实情况"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - viewBinding.caseCheckOptView.setText(dataBean.getNextOperation()); - changeState = String.valueOf(dataBean.getNextState()); - } - }).build().show(); - } else { - StringHub.show(context, "该案卷无下级流转节点"); - } - } - }); - - viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - //案卷提交 - String remarks = viewBinding.caseCheckOptView.getText().toString(); - if (TextUtils.isEmpty(remarks)) { - StringHub.show(context, "核查意见不能为空"); - return; - } - if (TextUtils.isEmpty(changeState)) { - StringHub.show(context, "核查情况还未选择"); - return; - } - operateViewModel.checkCase(data.getProcessId(), id, - String.valueOf(data.getCaseState()), changeState, remarks, - StringHelper.reformatURL(imageList) - ); - } - }); - operateViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "案卷核查中,请稍后..."); - } else if (loadState == LoadState.Success) { - DialogHelper.dismissLoadingDialog(); - finish(); - } else { - StringHub.show(context, "核查失败,请重试"); - DialogHelper.dismissLoadingDialog(); - } - } - }); - } - - @Override - public void onDestroy() { - viewBinding.audioPlayerView.release(); - super.onDestroy(); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - public void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CaseCheckedDetailActivity.java deleted file mode 100644 index 0ffce7d..0000000 --- a/app/src/main/java/com/casic/dcms/view/check/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,228 +0,0 @@ -package com.casic.dcms.view.check; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; - -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.databinding.ActivityCaseCheckedDetailBinding; -import com.casic.dcms.model.CaseDetailBean; -import com.casic.dcms.utils.DialogHelper; -import com.casic.dcms.utils.MapHelper; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.view.BigImageActivity; -import com.casic.dcms.view.CaseProcessActivity; -import com.casic.dcms.vm.CaseViewModel; -import com.gyf.immersionbar.ImmersionBar; -import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.hub.ContextHub; -import com.pengxh.androidx.lite.hub.StringHub; -import com.pengxh.androidx.lite.utils.Constant; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; -import com.pengxh.androidx.lite.vm.LoadState; - -import java.util.ArrayList; - -import cn.jzvd.Jzvd; - -public class CaseCheckedDetailActivity extends AndroidxBaseActivity { - - private final Context context = CaseCheckedDetailActivity.this; - private CaseViewModel caseViewModel; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - - viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - } - - @Override - protected void observeRequestState() { - - } - - @Override - protected void initData() { - String id = getIntent().getStringExtra(Constant.INTENT_PARAM); - caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); - caseViewModel.obtainCaseDetail(id); - } - - @Override - protected void initEvent() { - caseViewModel.caseDetailModel.observe(this, new Observer() { - @Override - public void onChanged(CaseDetailBean resultBean) { - if (resultBean.getCode() == 200) { - data = resultBean.getData().get(0); - viewBinding.caseNumberView.setText(data.getCaseid()); - viewBinding.caseTypeView.setText(data.getEorcName()); - viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); - viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); - viewBinding.caseCommunityView.setText(data.getCommunityName()); - viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); - viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.imageGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //处理图片 - 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)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - viewBinding.audioPlayerView.setVisibility(View.VISIBLE); - viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - viewBinding.videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - viewBinding.videoPlayerView.setUp( - videoUrl, - StringHub.filterSpaceOrEnter(data.getDescription()), - Jzvd.SCREEN_NORMAL - ); - //设置第一帧为封面 - Glide.with(context) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(viewBinding.videoPlayerView.posterImageView); - } - } - } - }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "获取数据中..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); - } - }); - - viewBinding.handleLayout.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - ContextHub.navigatePageTo(context, CaseProcessActivity.class, data.getProcessId()); - } - }); - } - - @Override - protected void onDestroy() { - viewBinding.audioPlayerView.release(); - super.onDestroy(); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java b/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java index 76e3203..2c76426 100644 --- a/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java @@ -2,7 +2,6 @@ import android.widget.LinearLayout; -import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; import com.casic.dcms.R; @@ -14,6 +13,7 @@ import com.casic.dcms.utils.LocaleConstant; import com.gyf.immersionbar.ImmersionBar; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.IntHub; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; import java.util.ArrayList; @@ -28,8 +28,8 @@ @Override protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); viewBinding.titleBarLayout.titleView.setText("案卷核查"); viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); @@ -46,10 +46,10 @@ fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), LocaleConstant.CASE_PAGE_TITLES, fragmentList); - viewBinding.checkViewPager.setAdapter(adapter); + viewBinding.viewPager.setAdapter(adapter); //绑定TabLayout - viewBinding.checkTabLayout.setupWithViewPager(viewBinding.checkViewPager); - LinearLayout linearLayout = (LinearLayout) viewBinding.checkTabLayout.getChildAt(0); + viewBinding.topTabLayout.setupWithViewPager(viewBinding.viewPager); + LinearLayout linearLayout = (LinearLayout) viewBinding.topTabLayout.getChildAt(0); LinearLayoutHelper.setDivider(this, linearLayout); } diff --git a/app/src/main/java/com/casic/dcms/view/check/CheckDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CheckDetailActivity.java new file mode 100644 index 0000000..b9aeeb7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/view/check/CheckDetailActivity.java @@ -0,0 +1,356 @@ +package com.casic.dcms.view.check; + +import android.content.Context; +import android.text.TextUtils; +import android.view.View; +import android.widget.AdapterView; + +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.databinding.ActivityCheckDetailBinding; +import com.casic.dcms.model.ActionResultBean; +import com.casic.dcms.model.CaseDetailBean; +import com.casic.dcms.model.CaseNextNodeBean; +import com.casic.dcms.utils.DialogHelper; +import com.casic.dcms.utils.MapHelper; +import com.casic.dcms.utils.PictureSelectorHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.ISelectorListener; +import com.casic.dcms.view.BigImageActivity; +import com.casic.dcms.vm.CaseOperateViewModel; +import com.casic.dcms.vm.CaseViewModel; +import com.casic.dcms.vm.NodeViewModel; +import com.casic.dcms.vm.UploadViewModel; +import com.gyf.immersionbar.ImmersionBar; +import com.luck.picture.lib.entity.LocalMedia; +import com.pengxh.androidx.lite.adapter.EditableImageAdapter; +import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; +import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.ContextHub; +import com.pengxh.androidx.lite.hub.IntHub; +import com.pengxh.androidx.lite.hub.StringHub; +import com.pengxh.androidx.lite.utils.Constant; +import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.vm.LoadState; +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import cn.jzvd.Jzvd; + +public class CheckDetailActivity extends AndroidxBaseActivity { + + private final Context context = CheckDetailActivity.this; + private final ArrayList realPaths = new ArrayList<>(); //真实图片路径 + private final ArrayList imageList = new ArrayList<>(); //上传到服务器的数据集 + private CaseViewModel caseViewModel; + private UploadViewModel uploadViewModel; + private NodeViewModel nodeViewModel; + private CaseOperateViewModel operateViewModel; + private String id; + private String changeState; + private EditableImageAdapter checkImageAdapter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + + @Override + protected void setupTopBarLayout() { + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); + + viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); + viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); + } + + @Override + protected void observeRequestState() { + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + + uploadViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + + operateViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "案卷核查中,请稍后..."); + } else if (loadState == LoadState.Success) { + DialogHelper.dismissLoadingDialog(); + finish(); + } else { + StringHub.show(context, "核查失败,请重试"); + DialogHelper.dismissLoadingDialog(); + } + } + }); + } + + @Override + protected void initData() { + id = getIntent().getStringExtra(Constant.INTENT_PARAM); + caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.obtainCaseDetail(id); + caseViewModel.caseDetailModel.observe(this, new Observer() { + @Override + public void onChanged(CaseDetailBean resultBean) { + if (resultBean.getCode() == 200) { + data = resultBean.getData().get(0); + viewBinding.caseNumberView.setText(data.getCaseid()); + viewBinding.caseTypeView.setText(data.getEorcName()); + viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); + viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); + viewBinding.caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); + viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); + viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); + viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); + viewBinding.caseStartTimeView.setText(data.getCreateTime()); + viewBinding.caseEndTimeView.setText(data.getNodeLimittime()); + /** + * 图片 + */ + //核实照片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.imageGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + viewBinding.audioPlayerView.setVisibility(View.VISIBLE); + viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(videoFile)) { + viewBinding.videoPlayerView.setVisibility(View.VISIBLE); + String videoUrl = StringHelper.appendCompleteURL(videoFile); + viewBinding.videoPlayerView.setUp( + videoUrl, + StringHub.filterSpaceOrEnter(data.getDescription()), + Jzvd.SCREEN_NORMAL + ); + //设置第一帧为封面 + Glide.with(context) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(viewBinding.videoPlayerView.posterImageView); + } + + //处理照片 + String processImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(processImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = processImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.handleGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + viewBinding.caseHandleResultView.setText(data.getProcessRemarks().equals("") ? "无处理意见" : data.getProcessRemarks()); + //TODO 服务器返回数据缺少此字段,暂时注掉 +// viewBinding.caseHandleTimeView.setText(); + } + } + }); + + uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); + uploadViewModel.imageModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + if (checkImageAdapter.getItemCount() <= 3) { + String url = resultBean.getData(); + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + checkImageAdapter.setupImage(realPaths); + } else { + StringHub.show(context, "最多只能上传3张图片"); + } + } + } + }); + + nodeViewModel = new ViewModelProvider(this).get(NodeViewModel.class); + nodeViewModel.nodeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseNextNodeBean resultBean) { + if (resultBean.getCode() == 200) { + List dataBeans = resultBean.getData(); + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(context); + sheetBuilder.setTitle("核实情况"); + for (CaseNextNodeBean.DataBean dataBean : dataBeans) { + sheetBuilder.addItem(dataBean.getNextOperation()); + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); + viewBinding.caseCheckOptView.setText(dataBean.getNextOperation()); + changeState = String.valueOf(dataBean.getNextState()); + } + }).build().show(); + } else { + StringHub.show(context, "该案卷无下级流转节点"); + } + } + }); + + operateViewModel = new ViewModelProvider(this).get(CaseOperateViewModel.class); + + checkImageAdapter = new EditableImageAdapter(this, 3, 13); + viewBinding.addImageRecyclerView.setAdapter(checkImageAdapter); + } + + @Override + protected void initEvent() { + viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); + } + }); + + //图片九宫格事件处理 + checkImageAdapter.setOnItemClickListener(new EditableImageAdapter.OnItemClickListener() { + @Override + public void onAddImageClick() { + PictureSelectorHelper.selectPicture(context, new ISelectorListener() { + @Override + public void onSuccess(ArrayList result) { + if (result.size() == 1) { + uploadViewModel.uploadImage(new File(result.get(0).getRealPath())); + } else { + for (LocalMedia localMedia : result) { + uploadViewModel.uploadImage(new File(localMedia.getRealPath())); + } + } + } + }); + } + + @Override + public void onItemClick(int position) { + if (realPaths.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, realPaths); + } + } + + @Override + public void onItemLongClick(View view, int position) { + imageList.remove(position); + checkImageAdapter.deleteImage(position); + } + }); + + + viewBinding.caseCheckLayout.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + nodeViewModel.obtainNextNode(String.valueOf(data.getCaseState())); + } + }); + + viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + //案卷提交 + String remarks = viewBinding.caseCheckOptView.getText().toString(); + if (TextUtils.isEmpty(remarks)) { + StringHub.show(context, "核查意见不能为空"); + return; + } + if (TextUtils.isEmpty(changeState)) { + StringHub.show(context, "核查情况还未选择"); + return; + } + operateViewModel.checkCase(data.getProcessId(), id, + String.valueOf(data.getCaseState()), changeState, remarks, + StringHelper.reformatURL(imageList) + ); + } + }); + } + + @Override + public void onDestroy() { + viewBinding.audioPlayerView.release(); + super.onDestroy(); + } + + @Override + public void onBackPressed() { + if (Jzvd.backPress()) { + return; + } + super.onBackPressed(); + } + + @Override + public void onPause() { + super.onPause(); + Jzvd.releaseAllVideos(); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CheckedDetailActivity.java new file mode 100644 index 0000000..14e554b --- /dev/null +++ b/app/src/main/java/com/casic/dcms/view/check/CheckedDetailActivity.java @@ -0,0 +1,226 @@ +package com.casic.dcms.view.check; + +import android.content.Context; +import android.text.TextUtils; +import android.view.View; +import android.widget.AdapterView; + +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.databinding.ActivityCheckedDetailBinding; +import com.casic.dcms.model.CaseDetailBean; +import com.casic.dcms.utils.DialogHelper; +import com.casic.dcms.utils.MapHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.BigImageActivity; +import com.casic.dcms.view.CaseProcessActivity; +import com.casic.dcms.vm.CaseViewModel; +import com.gyf.immersionbar.ImmersionBar; +import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; +import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.ContextHub; +import com.pengxh.androidx.lite.hub.IntHub; +import com.pengxh.androidx.lite.hub.StringHub; +import com.pengxh.androidx.lite.utils.Constant; +import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.vm.LoadState; + +import java.util.ArrayList; + +import cn.jzvd.Jzvd; + +public class CheckedDetailActivity extends AndroidxBaseActivity { + + private final Context context = CheckedDetailActivity.this; + private CaseViewModel caseViewModel; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + + @Override + protected void setupTopBarLayout() { + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); + + viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); + viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); + } + + @Override + protected void observeRequestState() { + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + } + + @Override + protected void initData() { + String id = getIntent().getStringExtra(Constant.INTENT_PARAM); + caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.obtainCaseDetail(id); + caseViewModel.caseDetailModel.observe(this, new Observer() { + @Override + public void onChanged(CaseDetailBean resultBean) { + if (resultBean.getCode() == 200) { + data = resultBean.getData().get(0); + viewBinding.caseNumberView.setText(data.getCaseid()); + viewBinding.caseTypeView.setText(data.getEorcName()); + viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); + viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); + viewBinding.caseCommunityView.setText(data.getCommunityName()); + viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); + viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); + viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); + + //核实图片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.imageGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //处理图片 + 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)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.handleGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //核查图片 + String checkImages = data.getFileIdCheck(); + if (!TextUtils.isEmpty(checkImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = checkImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.checkGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + viewBinding.audioPlayerView.setVisibility(View.VISIBLE); + viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(videoFile)) { + viewBinding.videoPlayerView.setVisibility(View.VISIBLE); + String videoUrl = StringHelper.appendCompleteURL(videoFile); + viewBinding.videoPlayerView.setUp( + videoUrl, + StringHub.filterSpaceOrEnter(data.getDescription()), + Jzvd.SCREEN_NORMAL + ); + //设置第一帧为封面 + Glide.with(context) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(viewBinding.videoPlayerView.posterImageView); + } + } + } + }); + } + + @Override + protected void initEvent() { + viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); + } + }); + + viewBinding.handleLayout.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + ContextHub.navigatePageTo(context, CaseProcessActivity.class, data.getProcessId()); + } + }); + } + + @Override + protected void onDestroy() { + viewBinding.audioPlayerView.release(); + super.onDestroy(); + } + + @Override + public void onBackPressed() { + if (Jzvd.backPress()) { + return; + } + super.onBackPressed(); + } + + @Override + protected void onPause() { + super.onPause(); + Jzvd.releaseAllVideos(); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/map/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/view/map/CaseOnMapActivity.java index 5a85a88..c662347 100644 --- a/app/src/main/java/com/casic/dcms/view/map/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/view/map/CaseOnMapActivity.java @@ -18,10 +18,10 @@ import com.casic.dcms.R; import com.casic.dcms.databinding.ActivityMapCaseBinding; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.model.CaseHandleBean; import com.casic.dcms.model.PointDataBean; import com.casic.dcms.model.VerifyCaseModel; -import com.casic.dcms.model.check.CaseCheckModel; import com.casic.dcms.utils.ArcGisMapCreator; import com.casic.dcms.utils.LocaleConstant; import com.casic.dcms.view.CaseDetailActivity; @@ -116,11 +116,11 @@ public void onChanged(CaseCheckModel resultBean) { clearPictureMarker(); if (resultBean.isSuccess()) { - List rowsBeans = resultBean.getData().getRows(); + List rowsBeans = resultBean.getData().getRows(); if (rowsBeans.size() >= 1) { List list = new ArrayList<>(); List pointList = new ArrayList<>(); - for (CaseCheckModel.DataDTO.RowsDTO bean : rowsBeans) { + for (CaseCheckModel.DataModel.RowsModel bean : rowsBeans) { String lng = bean.getLng(); String lat = bean.getLat(); if (TextUtils.isEmpty(lng) || TextUtils.isEmpty(lat)) { diff --git a/app/src/main/java/com/casic/dcms/view/upload/BriefCaseActivity.java b/app/src/main/java/com/casic/dcms/view/upload/BriefCaseActivity.java index 2d2e8f6..794c651 100644 --- a/app/src/main/java/com/casic/dcms/view/upload/BriefCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/view/upload/BriefCaseActivity.java @@ -90,7 +90,31 @@ @Override protected void observeRequestState() { + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); + } else if (loadState == LoadState.Success) { + DialogHelper.dismissLoadingDialog(); + finish(); + } else { + StringHub.show(context, "提交失败,请重试"); + DialogHelper.dismissLoadingDialog(); + } + } + }); + uploadViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override @@ -99,8 +123,52 @@ smallTypeBeans = new ArrayList<>(); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + commonDataViewModel = new ViewModelProvider(this).get(CommonDataViewModel.class); + commonDataViewModel.largeTypeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseLargeTypeBean typeBean) { + if (typeBean.getCode() == 200) { + //设置大类数据 + largeTypeBeans = typeBean.getData(); + if (largeTypeBeans.size() != 0) { + viewBinding.caseLargeClassView.setText(largeTypeBeans.get(0).getTypeName());//默认选择第一个 + } + viewBinding.caseSmallClassView.setText("请选择"); + viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.darkGray)); + } + } + }); + commonDataViewModel.smallTypeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseSmallTypeBean typeBean) { + if (typeBean.getCode() == 200) { + //设置小类数据 + smallTypeBeans = typeBean.getData(); + if (smallTypeBeans.size() != 0) { + viewBinding.caseSmallClassView.setText(smallTypeBeans.get(0).getTypeDetailName());//默认选择第一个 + viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); + } + } + } + }); + uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); + uploadViewModel.imageModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + if (imageAdapter.getItemCount() <= 4) { + String url = resultBean.getData(); + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + imageAdapter.setupImage(realPaths); + } else { + StringHub.show(context, "最多只能上传3张图片"); + } + } + } + }); imageAdapter = new EditableImageAdapter(this, 3, 13); viewBinding.addImageRecyclerView.setAdapter(imageAdapter); @@ -132,20 +200,6 @@ }).build().show(); } }); - commonDataViewModel.largeTypeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseLargeTypeBean typeBean) { - if (typeBean.getCode() == 200) { - //设置大类数据 - largeTypeBeans = typeBean.getData(); - if (largeTypeBeans.size() != 0) { - viewBinding.caseLargeClassView.setText(largeTypeBeans.get(0).getTypeName());//默认选择第一个 - } - viewBinding.caseSmallClassView.setText("请选择"); - viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.darkGray)); - } - } - }); /** * 选择案卷大类 @@ -178,19 +232,6 @@ } } }); - commonDataViewModel.smallTypeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseSmallTypeBean typeBean) { - if (typeBean.getCode() == 200) { - //设置小类数据 - smallTypeBeans = typeBean.getData(); - if (smallTypeBeans.size() != 0) { - viewBinding.caseSmallClassView.setText(smallTypeBeans.get(0).getTypeDetailName());//默认选择第一个 - viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); - } - } - } - }); /** * 选择案卷小类 @@ -271,31 +312,6 @@ imageAdapter.deleteImage(position); } }); - uploadViewModel.imageModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - if (imageAdapter.getItemCount() <= 4) { - String url = resultBean.getData(); - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - imageAdapter.setupImage(realPaths); - } else { - StringHub.show(context, "最多只能上传3张图片"); - } - } - } - }); - uploadViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { @Override @@ -303,20 +319,6 @@ submitCase(); } }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); - } else if (loadState == LoadState.Success) { - DialogHelper.dismissLoadingDialog(); - finish(); - } else { - StringHub.show(context, "提交失败,请重试"); - DialogHelper.dismissLoadingDialog(); - } - } - }); } /** diff --git a/app/src/main/java/com/casic/dcms/view/upload/BusinessCaseActivity.java b/app/src/main/java/com/casic/dcms/view/upload/BusinessCaseActivity.java index 59b37b7..f6b6242 100644 --- a/app/src/main/java/com/casic/dcms/view/upload/BusinessCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/view/upload/BusinessCaseActivity.java @@ -84,12 +84,41 @@ @Override protected void observeRequestState() { - + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); + } else if (loadState == LoadState.Success) { + DialogHelper.dismissLoadingDialog(); + finish(); + } else { + StringHub.show(context, "提交失败,请重试"); + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override public void initData() { uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); + uploadViewModel.imageModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + if (imageAdapter.getItemCount() <= 4) { + String url = resultBean.getData(); + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + imageAdapter.setupImage(realPaths); + } else { + StringHub.show(context, "最多只能上传3张图片"); + } + } + } + }); + caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); imageAdapter = new EditableImageAdapter(this, 3, 13); @@ -142,21 +171,6 @@ imageAdapter.deleteImage(position); } }); - uploadViewModel.imageModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - if (imageAdapter.getItemCount() <= 4) { - String url = resultBean.getData(); - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - imageAdapter.setupImage(realPaths); - } else { - StringHub.show(context, "最多只能上传3张图片"); - } - } - } - }); viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { @Override @@ -164,20 +178,6 @@ submitCase(); } }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); - } else if (loadState == LoadState.Success) { - DialogHelper.dismissLoadingDialog(); - finish(); - } else { - StringHub.show(context, "提交失败,请重试"); - DialogHelper.dismissLoadingDialog(); - } - } - }); } /** diff --git a/app/src/main/java/com/casic/dcms/view/upload/CommonCaseActivity.java b/app/src/main/java/com/casic/dcms/view/upload/CommonCaseActivity.java index c2a889b..1eea805 100644 --- a/app/src/main/java/com/casic/dcms/view/upload/CommonCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/view/upload/CommonCaseActivity.java @@ -121,7 +121,31 @@ @Override protected void observeRequestState() { + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); + } else if (loadState == LoadState.Success) { + DialogHelper.dismissLoadingDialog(); + finish(); + } else { + StringHub.show(context, "提交失败,请重试"); + DialogHelper.dismissLoadingDialog(); + } + } + }); + uploadViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override @@ -130,8 +154,85 @@ smallTypeBeans = new ArrayList<>(); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + commonDataViewModel = new ViewModelProvider(this).get(CommonDataViewModel.class); + commonDataViewModel.largeTypeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseLargeTypeBean typeBean) { + if (typeBean.getCode() == 200) { + //设置大类数据 + largeTypeBeans = typeBean.getData(); + if (largeTypeBeans.size() != 0) { + viewBinding.caseLargeClassView.setText(largeTypeBeans.get(0).getTypeName());//默认选择第一个 + } + viewBinding.caseSmallClassView.setText("请选择"); + viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.darkGray)); + } + } + }); + commonDataViewModel.smallTypeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseSmallTypeBean typeBean) { + if (typeBean.getCode() == 200) { + //设置小类数据 + smallTypeBeans = typeBean.getData(); + if (smallTypeBeans.size() != 0) { + viewBinding.caseSmallClassView.setText(smallTypeBeans.get(0).getTypeDetailName());//默认选择第一个 + viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); + } + } + } + }); + uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); + uploadViewModel.imageModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + if (imageAdapter.getItemCount() <= 4) { + String url = resultBean.getData(); + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + imageAdapter.setupImage(realPaths); + } else { + StringHub.show(context, "最多只能上传3张图片"); + } + } + } + }); + uploadViewModel.audioModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + audioUrl = resultBean.getData(); + /** + * http://111.198.10.15:11409/static/2021-04/8fb86dae39ad4f949e934e25465d7382.m4a + * */ + if (!TextUtils.isEmpty(audioUrl)) { + viewBinding.audioPlayerView.setVisibility(View.VISIBLE); + viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioUrl)); + } + } + } + }); + uploadViewModel.videoModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + //2021-04\\9d89df21173043cfb4188e68613e3e0e.mp4 + viewBinding.addVideoView.setVisibility(View.GONE); + viewBinding.videoPlayerView.setVisibility(View.VISIBLE); + videoUrl = resultBean.getData(); + String completeURL = StringHelper.appendCompleteURL(videoUrl); + viewBinding.videoPlayerView.setUp(completeURL, "", Jzvd.SCREEN_NORMAL); + //设置第一帧为封面 + Glide.with(context) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(completeURL) + .into(viewBinding.videoPlayerView.posterImageView); + } + } + }); progressDialog = new ProgressDialog(this); progressDialog.setMessage("视频压缩中..."); @@ -188,20 +289,6 @@ }).build().show(); } }); - commonDataViewModel.largeTypeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseLargeTypeBean typeBean) { - if (typeBean.getCode() == 200) { - //设置大类数据 - largeTypeBeans = typeBean.getData(); - if (largeTypeBeans.size() != 0) { - viewBinding.caseLargeClassView.setText(largeTypeBeans.get(0).getTypeName());//默认选择第一个 - } - viewBinding.caseSmallClassView.setText("请选择"); - viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.darkGray)); - } - } - }); /** * 选择案卷大类 @@ -234,19 +321,6 @@ } } }); - commonDataViewModel.smallTypeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseSmallTypeBean typeBean) { - if (typeBean.getCode() == 200) { - //设置小类数据 - smallTypeBeans = typeBean.getData(); - if (smallTypeBeans.size() != 0) { - viewBinding.caseSmallClassView.setText(smallTypeBeans.get(0).getTypeDetailName());//默认选择第一个 - viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); - } - } - } - }); /** * 选择案卷小类 @@ -430,64 +504,6 @@ imageAdapter.deleteImage(position); } }); - uploadViewModel.imageModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - if (imageAdapter.getItemCount() <= 4) { - String url = resultBean.getData(); - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - imageAdapter.setupImage(realPaths); - } else { - StringHub.show(context, "最多只能上传3张图片"); - } - } - } - }); - uploadViewModel.audioModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - audioUrl = resultBean.getData(); - /** - * http://111.198.10.15:11409/static/2021-04/8fb86dae39ad4f949e934e25465d7382.m4a - * */ - if (!TextUtils.isEmpty(audioUrl)) { - viewBinding.audioPlayerView.setVisibility(View.VISIBLE); - viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioUrl)); - } - } - } - }); - uploadViewModel.videoModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - //2021-04\\9d89df21173043cfb4188e68613e3e0e.mp4 - viewBinding.addVideoView.setVisibility(View.GONE); - viewBinding.videoPlayerView.setVisibility(View.VISIBLE); - videoUrl = resultBean.getData(); - String completeURL = StringHelper.appendCompleteURL(videoUrl); - viewBinding.videoPlayerView.setUp(completeURL, "", Jzvd.SCREEN_NORMAL); - //设置第一帧为封面 - Glide.with(context) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(completeURL) - .into(viewBinding.videoPlayerView.posterImageView); - } - } - }); - uploadViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { @Override @@ -495,20 +511,6 @@ submitCase(); } }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); - } else if (loadState == LoadState.Success) { - DialogHelper.dismissLoadingDialog(); - finish(); - } else { - StringHub.show(context, "提交失败,请重试"); - DialogHelper.dismissLoadingDialog(); - } - } - }); } /** diff --git a/app/src/main/java/com/casic/dcms/view/verify/VerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/view/verify/VerifiedDetailActivity.java index eec22e6..2e1469d 100644 --- a/app/src/main/java/com/casic/dcms/view/verify/VerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/view/verify/VerifiedDetailActivity.java @@ -5,7 +5,6 @@ import android.view.View; import android.widget.AdapterView; -import androidx.core.content.ContextCompat; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; @@ -23,6 +22,7 @@ import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; import com.pengxh.androidx.lite.hub.ContextHub; +import com.pengxh.androidx.lite.hub.IntHub; import com.pengxh.androidx.lite.hub.StringHub; import com.pengxh.androidx.lite.utils.Constant; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; @@ -40,8 +40,8 @@ @Override protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); viewBinding.titleBarLayout.titleView.setText("案卷详情"); viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); diff --git a/app/src/main/java/com/casic/dcms/view/verify/VerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/view/verify/VerifyDetailActivity.java index 207394d..da1c8bd 100644 --- a/app/src/main/java/com/casic/dcms/view/verify/VerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/view/verify/VerifyDetailActivity.java @@ -110,7 +110,42 @@ @Override protected void observeRequestState() { + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + uploadViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + + operateViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "案卷核实中,请稍后..."); + } else if (loadState == LoadState.Success) { + DialogHelper.dismissLoadingDialog(); + finish(); + } else { + StringHub.show(context, "核实失败,请重试"); + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override @@ -121,19 +156,7 @@ smallTypeBeans = new ArrayList<>(); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); - commonDataViewModel = new ViewModelProvider(this).get(CommonDataViewModel.class); - uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); - nodeViewModel = new ViewModelProvider(this).get(NodeViewModel.class); - operateViewModel = new ViewModelProvider(this).get(CaseOperateViewModel.class); - caseViewModel.obtainCaseDetail(id); - - verifyImageAdapter = new EditableImageAdapter(this, 3, 13); - viewBinding.addImageRecyclerView.setAdapter(verifyImageAdapter); - } - - @Override - public void initEvent() { caseViewModel.caseDetailModel.observe(this, new Observer() { @Override public void onChanged(CaseDetailBean resultBean) { @@ -219,17 +242,89 @@ } } }); - caseViewModel.loadState.observe(this, new Observer() { + + commonDataViewModel = new ViewModelProvider(this).get(CommonDataViewModel.class); + commonDataViewModel.largeTypeModel.observe(this, new Observer() { @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "获取数据中..."); - } else { - DialogHelper.dismissLoadingDialog(); + public void onChanged(CaseLargeTypeBean typeBean) { + if (typeBean.getCode() == 200) { + //设置大类数据 + largeTypeBeans = typeBean.getData(); + if (largeTypeBeans.size() == 0) { + viewBinding.caseLargeTypeView.setText("无小类"); + } else { + viewBinding.caseLargeTypeView.setText(largeTypeBeans.get(0).getTypeName());//默认选择第一个 + } + viewBinding.caseSmallTypeView.setText("请选择"); + } + } + }); + commonDataViewModel.smallTypeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseSmallTypeBean typeBean) { + if (typeBean.getCode() == 200) { + smallTypeBeans = typeBean.getData(); + if (smallTypeBeans.size() == 0) { + viewBinding.caseSmallTypeView.setText("无小类"); + } else { + viewBinding.caseSmallTypeView.setText(smallTypeBeans.get(0).getTypeDetailName());//默认选择第一个 + } } } }); + uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); + uploadViewModel.imageModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + if (verifyImageAdapter.getItemCount() <= 3) { + String url = resultBean.getData(); + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + verifyImageAdapter.setupImage(realPaths); + } else { + StringHub.show(context, "最多只能上传3张图片"); + } + } + } + }); + + nodeViewModel = new ViewModelProvider(this).get(NodeViewModel.class); + nodeViewModel.nodeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + List dataBeans = resultBean.getData(); + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(context); + sheetBuilder.setTitle("核实情况"); + for (CaseNextNodeBean.DataBean dataBean : dataBeans) { + sheetBuilder.addItem(dataBean.getNextOperation()); + } + sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + + CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); + viewBinding.caseConditionView.setText(dataBean.getNextOperation()); + changeState = String.valueOf(dataBean.getNextState()); + } + }).build().show(); + } else { + StringHub.show(context, "该案卷无下级流转节点"); + } + } + }); + + operateViewModel = new ViewModelProvider(this).get(CaseOperateViewModel.class); + + verifyImageAdapter = new EditableImageAdapter(this, 3, 13); + viewBinding.addImageRecyclerView.setAdapter(verifyImageAdapter); + } + + @Override + public void initEvent() { viewBinding.caseClassLayout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -249,21 +344,6 @@ }).build().show(); } }); - commonDataViewModel.largeTypeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseLargeTypeBean typeBean) { - if (typeBean.getCode() == 200) { - //设置大类数据 - largeTypeBeans = typeBean.getData(); - if (largeTypeBeans.size() == 0) { - viewBinding.caseLargeTypeView.setText("无小类"); - } else { - viewBinding.caseLargeTypeView.setText(largeTypeBeans.get(0).getTypeName());//默认选择第一个 - } - viewBinding.caseSmallTypeView.setText("请选择"); - } - } - }); viewBinding.caseLargeClassLayout.setOnClickListener(new View.OnClickListener() { @Override @@ -292,19 +372,6 @@ } } }); - commonDataViewModel.smallTypeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseSmallTypeBean typeBean) { - if (typeBean.getCode() == 200) { - smallTypeBeans = typeBean.getData(); - if (smallTypeBeans.size() == 0) { - viewBinding.caseSmallTypeView.setText("无小类"); - } else { - viewBinding.caseSmallTypeView.setText(smallTypeBeans.get(0).getTypeDetailName());//默认选择第一个 - } - } - } - }); viewBinding.caseSmallClassLayout.setOnClickListener(new View.OnClickListener() { @Override @@ -353,31 +420,6 @@ nodeViewModel.obtainNextNode(String.valueOf(data.getCaseState())); } }); - nodeViewModel.nodeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseNextNodeBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(context); - sheetBuilder.setTitle("核实情况"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - viewBinding.caseConditionView.setText(dataBean.getNextOperation()); - changeState = String.valueOf(dataBean.getNextState()); - } - }).build().show(); - } else { - StringHub.show(context, "该案卷无下级流转节点"); - } - } - }); //图片九宫格事件处理 verifyImageAdapter.setOnItemClickListener(new EditableImageAdapter.OnItemClickListener() { @@ -412,31 +454,6 @@ verifyImageAdapter.deleteImage(position); } }); - uploadViewModel.imageModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - if (verifyImageAdapter.getItemCount() <= 3) { - String url = resultBean.getData(); - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - verifyImageAdapter.setupImage(realPaths); - } else { - StringHub.show(context, "最多只能上传3张图片"); - } - } - } - }); - uploadViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { @Override @@ -444,20 +461,6 @@ submitCase(); } }); - operateViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "案卷核实中,请稍后..."); - } else if (loadState == LoadState.Success) { - DialogHelper.dismissLoadingDialog(); - finish(); - } else { - StringHub.show(context, "核实失败,请重试"); - DialogHelper.dismissLoadingDialog(); - } - } - }); } private void submitCase() { diff --git a/app/src/main/java/com/casic/dcms/vm/CaseViewModel.java b/app/src/main/java/com/casic/dcms/vm/CaseViewModel.java index 5f58648..1786e1f 100644 --- a/app/src/main/java/com/casic/dcms/vm/CaseViewModel.java +++ b/app/src/main/java/com/casic/dcms/vm/CaseViewModel.java @@ -2,6 +2,7 @@ import androidx.lifecycle.MutableLiveData; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.model.CaseDetailBean; import com.casic.dcms.model.CaseHandleBean; import com.casic.dcms.model.CaseHandledBean; @@ -11,7 +12,6 @@ import com.casic.dcms.model.UrgentCaseBean; import com.casic.dcms.model.VerifiedCaseModel; import com.casic.dcms.model.VerifyCaseModel; -import com.casic.dcms.model.check.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.retrofit.RetrofitServiceManager; diff --git a/app/src/main/java/com/casic/dcms/vm/CommonDataViewModel.java b/app/src/main/java/com/casic/dcms/vm/CommonDataViewModel.java index dcb3d3e..76e77cb 100644 --- a/app/src/main/java/com/casic/dcms/vm/CommonDataViewModel.java +++ b/app/src/main/java/com/casic/dcms/vm/CommonDataViewModel.java @@ -13,6 +13,7 @@ import com.google.gson.reflect.TypeToken; import com.pengxh.androidx.lite.callback.OnObserverCallback; import com.pengxh.androidx.lite.vm.BaseViewModel; +import com.pengxh.androidx.lite.vm.LoadState; import com.pengxh.androidx.lite.vm.ObserverSubscriber; import java.io.IOException; @@ -149,16 +150,17 @@ } public void obtainCaseProcess(String processId) { + loadState.setValue(LoadState.Loading); Observable observable = RetrofitServiceManager.getCaseProcessResult(processId); ObserverSubscriber.addSubscribe(observable, new OnObserverCallback() { @Override public void onCompleted() { - + loadState.setValue(LoadState.Success); } @Override public void onError(Throwable e) { - + loadState.setValue(LoadState.Fail); } @Override @@ -170,6 +172,8 @@ CaseProcessBean resultBean = gson.fromJson(response, new TypeToken() { }.getType()); caseProcessModel.setValue(resultBean); + } else { + loadState.setValue(LoadState.Fail); } } catch (IOException e) { e.printStackTrace(); diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b6a8d08..c78d07c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -64,8 +64,8 @@ - - + + diff --git a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java deleted file mode 100644 index 254f0cd..0000000 --- a/app/src/main/java/com/casic/dcms/adapter/CheckCaseListAdapter.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.casic.dcms.adapter; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.text.TextUtils; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.model.check.CaseCheckModel; -import com.casic.dcms.utils.StringHelper; -import com.pengxh.androidx.lite.hub.StringHub; -import com.qmuiteam.qmui.widget.QMUIRadiusImageView; - -import java.util.List; - -public class CheckCaseListAdapter extends RecyclerView.Adapter { - - private final Context context; - private final List dataBeans; - private final LayoutInflater layoutInflater; - - public CheckCaseListAdapter(Context context, List dataRows) { - this.context = context; - this.dataBeans = dataRows; - this.layoutInflater = LayoutInflater.from(context); - } - - @NonNull - @Override - public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - return new ItemViewHolder(layoutInflater.inflate(R.layout.item_case_rv_l, parent, false)); - } - - @Override - public void onBindViewHolder(@NonNull ItemViewHolder holder, @SuppressLint("RecyclerView") int position) { - holder.bindView(dataBeans.get(position)); - if (clickListener != null) { - holder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - clickListener.onClick(position); - } - }); - } - } - - @Override - public int getItemCount() { - return dataBeans.size(); - } - - class ItemViewHolder extends RecyclerView.ViewHolder { - - private final QMUIRadiusImageView caseImageView; - private final TextView caseTitleView; - private final TextView casePlaceView; - private final TextView caseTimeView; - - ItemViewHolder(@NonNull View itemView) { - super(itemView); - caseImageView = itemView.findViewById(R.id.caseImageView); - caseTitleView = itemView.findViewById(R.id.caseTitleView); - casePlaceView = itemView.findViewById(R.id.casePlaceView); - caseTimeView = itemView.findViewById(R.id.caseTimeView); - } - - void bindView(CaseCheckModel.DataDTO.RowsDTO rowsBean) { - //处理图片 - String fileIdProcess = rowsBean.getFileIdProcess(); - if (!TextUtils.isEmpty(fileIdProcess)) { - String[] split = fileIdProcess.split(","); - String firstImage = split[0]; - if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { - Glide.with(context).load(StringHelper.appendCompleteURL(firstImage)).into(caseImageView); - } - } - caseTitleView.setText(StringHub.filterSpaceOrEnter(rowsBean.getDescription())); - casePlaceView.setText("发生地点:" + StringHub.filterSpaceOrEnter(rowsBean.getFieldintro())); - caseTimeView.setText("上报时间:" + rowsBean.getReportTime()); - } - } - - private OnItemClickListener clickListener; - - public interface OnItemClickListener { - void onClick(int position); - } - - public void setOnItemClickListener(OnItemClickListener onItemClickListener) { - this.clickListener = onItemClickListener; - } -} diff --git a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java index 85cebc6..667981d 100644 --- a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckFragment.java @@ -1,19 +1,27 @@ package com.casic.dcms.fragment.check; +import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; + +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.casic.dcms.adapter.CheckCaseListAdapter; +import com.bumptech.glide.Glide; +import com.casic.dcms.R; import com.casic.dcms.databinding.FragmentCheckCaseBinding; -import com.casic.dcms.model.check.CaseCheckModel; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.view.check.CaseCheckDetailActivity; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.check.CheckDetailActivity; import com.casic.dcms.vm.CaseViewModel; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseFragment; import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.StringHub; @@ -24,14 +32,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class CaseCheckFragment extends AndroidxBaseFragment { private static final String TAG = "CaseCheckFragment"; private WeakReferenceHandler weakReferenceHandler; private CaseViewModel caseViewModel; - private CheckCaseListAdapter adapter; - private List dataBeans = new ArrayList<>(); + private NormalRecyclerAdapter adapter; + private List dataBeans = new ArrayList<>(); private int pageIndex = 1; private boolean isRefresh, isLoadMore = false; @@ -49,12 +58,37 @@ protected void initData() { weakReferenceHandler = new WeakReferenceHandler(callback); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.caseCheckModel.observe(this, new Observer() { + @Override + public void onChanged(CaseCheckModel resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(requireContext(), "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(202104251); + } + } + }); } @Override public void onResume() { - obtainCheckCaseList(); super.onResume(); + pageIndex = 1; + obtainCheckCaseList(); } private void obtainCheckCaseList() { @@ -80,31 +114,6 @@ obtainCheckCaseList(); } }); - - caseViewModel.caseCheckModel.observe(this, new Observer() { - @Override - public void onChanged(CaseCheckModel resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(requireContext(), "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(202104251); - } - } - }); } private final Handler.Callback callback = new Handler.Callback() { @@ -125,16 +134,42 @@ }); } else { viewBinding.emptyView.hide(); - adapter = new CheckCaseListAdapter(requireContext(), dataBeans); - viewBinding.caseRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new CheckCaseListAdapter.OnItemClickListener() { + adapter = new NormalRecyclerAdapter(R.layout.item_case_rv_l, dataBeans) { @Override - public void onClick(int position) { - ContextHub.navigatePageTo( - requireContext(), - CaseCheckDetailActivity.class, - dataBeans.get(position).getId() - ); + public void convertView(ViewHolder viewHolder, int position, CaseCheckModel.DataModel.RowsModel item) { + String fileIdProcess = item.getFileIdProcess(); + if (!TextUtils.isEmpty(fileIdProcess)) { + String[] split = fileIdProcess.split(","); + String firstImage = split[0]; + if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Drawable drawable = Glide.with(requireContext()).load(StringHelper.appendCompleteURL(firstImage)).submit().get(); + runOnUiThread(new Runnable() { + @Override + public void run() { + viewHolder.setImageResource(R.id.caseImageView, drawable); + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + } + } + viewHolder.setText(R.id.caseTitleView, StringHub.filterSpaceOrEnter(item.getDescription())) + .setText(R.id.casePlaceView, "发生地点:" + StringHub.filterSpaceOrEnter(item.getFieldintro())) + .setText(R.id.caseTimeView, "上报时间:" + item.getReportTime()); + } + }; + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, CaseCheckModel.DataModel.RowsModel rowsModel) { + ContextHub.navigatePageTo(requireContext(), CheckDetailActivity.class, rowsModel.getId()); } }); } diff --git a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java index 3e2d904..6775b65 100644 --- a/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/check/CaseCheckedFragment.java @@ -1,19 +1,27 @@ package com.casic.dcms.fragment.check; +import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread; + +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; +import android.text.TextUtils; import android.view.View; import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; -import com.casic.dcms.adapter.CheckCaseListAdapter; +import com.bumptech.glide.Glide; +import com.casic.dcms.R; import com.casic.dcms.databinding.FragmentCheckCaseBinding; -import com.casic.dcms.model.check.CaseCheckModel; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; -import com.casic.dcms.view.check.CaseCheckedDetailActivity; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.check.CheckedDetailActivity; import com.casic.dcms.vm.CaseViewModel; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseFragment; import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.StringHub; @@ -24,14 +32,15 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class CaseCheckedFragment extends AndroidxBaseFragment { private static final String TAG = "CaseCheckedFragment"; private WeakReferenceHandler weakReferenceHandler; private CaseViewModel caseViewModel; - private CheckCaseListAdapter adapter; - private List dataBeans = new ArrayList<>(); + private NormalRecyclerAdapter adapter; + private List dataBeans = new ArrayList<>(); private int pageIndex = 1; private boolean isRefresh, isLoadMore = false; @@ -50,12 +59,37 @@ protected void initData() { weakReferenceHandler = new WeakReferenceHandler(callback); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.caseCheckModel.observe(this, new Observer() { + @Override + public void onChanged(CaseCheckModel resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(requireContext(), "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(202104252); + } + } + }); } @Override public void onResume() { - obtainCheckCaseList(); super.onResume(); + pageIndex = 1; + obtainCheckCaseList(); } private void obtainCheckCaseList() { @@ -81,32 +115,6 @@ obtainCheckCaseList(); } }); - - caseViewModel.caseCheckModel.observe(this, new Observer() { - - @Override - public void onChanged(CaseCheckModel resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(requireContext(), "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(202104252); - } - } - }); } private final Handler.Callback callback = new Handler.Callback() { @@ -127,16 +135,42 @@ }); } else { viewBinding.emptyView.hide(); - adapter = new CheckCaseListAdapter(requireContext(), dataBeans); - viewBinding.caseRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new CheckCaseListAdapter.OnItemClickListener() { + adapter = new NormalRecyclerAdapter(R.layout.item_case_rv_l, dataBeans) { @Override - public void onClick(int position) { - ContextHub.navigatePageTo( - requireContext(), - CaseCheckedDetailActivity.class, - dataBeans.get(position).getId() - ); + public void convertView(ViewHolder viewHolder, int position, CaseCheckModel.DataModel.RowsModel item) { + String fileIdProcess = item.getFileIdProcess(); + if (!TextUtils.isEmpty(fileIdProcess)) { + String[] split = fileIdProcess.split(","); + String firstImage = split[0]; + if (firstImage.endsWith(".jpg") || firstImage.contains(".jpeg") || firstImage.contains(".png")) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Drawable drawable = Glide.with(requireContext()).load(StringHelper.appendCompleteURL(firstImage)).submit().get(); + runOnUiThread(new Runnable() { + @Override + public void run() { + viewHolder.setImageResource(R.id.caseImageView, drawable); + } + }); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + } + } + viewHolder.setText(R.id.caseTitleView, StringHub.filterSpaceOrEnter(item.getDescription())) + .setText(R.id.casePlaceView, "发生地点:" + StringHub.filterSpaceOrEnter(item.getFieldintro())) + .setText(R.id.caseTimeView, "上报时间:" + item.getReportTime()); + } + }; + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickedListener(new NormalRecyclerAdapter.OnItemClickedListener() { + @Override + public void onItemClicked(int position, CaseCheckModel.DataModel.RowsModel rowsModel) { + ContextHub.navigatePageTo(requireContext(), CheckedDetailActivity.class, rowsModel.getId()); } }); } diff --git a/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java b/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java new file mode 100644 index 0000000..550a1fe --- /dev/null +++ b/app/src/main/java/com/casic/dcms/model/CaseCheckModel.java @@ -0,0 +1,358 @@ +package com.casic.dcms.model; + +import java.util.List; + +/** + * 核查-已办/待办共用一个Model + */ +public class CaseCheckModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String isPostpone; + private String description; + private String source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private String caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String lng; + private String isOvertime; + private String currRoleName; + private String fileIdVerify; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String taskName; + private String sourceName; + private String fileIdProcess; + private String reportTime; + private String onedeptName; + + public String getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(String isPostpone) { + this.isPostpone = isPostpone; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public String getCaseState() { + return caseState; + } + + public void setCaseState(String caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getFileIdVerify() { + return fileIdVerify; + } + + public void setFileIdVerify(String fileIdVerify) { + this.fileIdVerify = fileIdVerify; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getTaskName() { + return taskName; + } + + public void setTaskName(String taskName) { + this.taskName = taskName; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getFileIdProcess() { + return fileIdProcess; + } + + public void setFileIdProcess(String fileIdProcess) { + this.fileIdProcess = fileIdProcess; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java b/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java deleted file mode 100644 index 854e2fe..0000000 --- a/app/src/main/java/com/casic/dcms/model/check/CaseCheckModel.java +++ /dev/null @@ -1,358 +0,0 @@ -package com.casic.dcms.model.check; - -import java.util.List; - -/** - * 核查-已办/待办共用一个Bean - */ -public class CaseCheckModel { - - private int code; - private DataDTO data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataDTO getData() { - return data; - } - - public void setData(DataDTO data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataDTO { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsDTO { - private int isPostpone; - private String description; - private int source; - private String eorcName; - private String casetypeDetailName; - private String remainingTime; - private String casetypeName; - private String currUserId; - private String currUserName; - private String processId; - private int caseState; - private String id; - private String shopId; - private String fieldintro; - private String lat; - private String caseStateName; - private String lng; - private String isOvertime; - private String currRoleName; - private String fileIdVerify; - private String casetypeDetailCode; - private String onedeptid; - private String eorc; - private String currRoleId; - private String caseid; - private String casetypeCode; - private String nodeLimittime; - private String taskName; - private String sourceName; - private String fileIdProcess; - private String reportTime; - private String onedeptName; - - public int getIsPostpone() { - return isPostpone; - } - - public void setIsPostpone(int isPostpone) { - this.isPostpone = isPostpone; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public int getSource() { - return source; - } - - public void setSource(int source) { - this.source = source; - } - - public String getEorcName() { - return eorcName; - } - - public void setEorcName(String eorcName) { - this.eorcName = eorcName; - } - - public String getCasetypeDetailName() { - return casetypeDetailName; - } - - public void setCasetypeDetailName(String casetypeDetailName) { - this.casetypeDetailName = casetypeDetailName; - } - - public String getRemainingTime() { - return remainingTime; - } - - public void setRemainingTime(String remainingTime) { - this.remainingTime = remainingTime; - } - - public String getCasetypeName() { - return casetypeName; - } - - public void setCasetypeName(String casetypeName) { - this.casetypeName = casetypeName; - } - - public String getCurrUserId() { - return currUserId; - } - - public void setCurrUserId(String currUserId) { - this.currUserId = currUserId; - } - - public String getCurrUserName() { - return currUserName; - } - - public void setCurrUserName(String currUserName) { - this.currUserName = currUserName; - } - - public String getProcessId() { - return processId; - } - - public void setProcessId(String processId) { - this.processId = processId; - } - - public int getCaseState() { - return caseState; - } - - public void setCaseState(int caseState) { - this.caseState = caseState; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getShopId() { - return shopId; - } - - public void setShopId(String shopId) { - this.shopId = shopId; - } - - public String getFieldintro() { - return fieldintro; - } - - public void setFieldintro(String fieldintro) { - this.fieldintro = fieldintro; - } - - public String getLat() { - return lat; - } - - public void setLat(String lat) { - this.lat = lat; - } - - public String getCaseStateName() { - return caseStateName; - } - - public void setCaseStateName(String caseStateName) { - this.caseStateName = caseStateName; - } - - public String getLng() { - return lng; - } - - public void setLng(String lng) { - this.lng = lng; - } - - public String getIsOvertime() { - return isOvertime; - } - - public void setIsOvertime(String isOvertime) { - this.isOvertime = isOvertime; - } - - public String getCurrRoleName() { - return currRoleName; - } - - public void setCurrRoleName(String currRoleName) { - this.currRoleName = currRoleName; - } - - public String getFileIdVerify() { - return fileIdVerify; - } - - public void setFileIdVerify(String fileIdVerify) { - this.fileIdVerify = fileIdVerify; - } - - public String getCasetypeDetailCode() { - return casetypeDetailCode; - } - - public void setCasetypeDetailCode(String casetypeDetailCode) { - this.casetypeDetailCode = casetypeDetailCode; - } - - public String getOnedeptid() { - return onedeptid; - } - - public void setOnedeptid(String onedeptid) { - this.onedeptid = onedeptid; - } - - public String getEorc() { - return eorc; - } - - public void setEorc(String eorc) { - this.eorc = eorc; - } - - public String getCurrRoleId() { - return currRoleId; - } - - public void setCurrRoleId(String currRoleId) { - this.currRoleId = currRoleId; - } - - public String getCaseid() { - return caseid; - } - - public void setCaseid(String caseid) { - this.caseid = caseid; - } - - public String getCasetypeCode() { - return casetypeCode; - } - - public void setCasetypeCode(String casetypeCode) { - this.casetypeCode = casetypeCode; - } - - public String getNodeLimittime() { - return nodeLimittime; - } - - public void setNodeLimittime(String nodeLimittime) { - this.nodeLimittime = nodeLimittime; - } - - public String getTaskName() { - return taskName; - } - - public void setTaskName(String taskName) { - this.taskName = taskName; - } - - public String getSourceName() { - return sourceName; - } - - public void setSourceName(String sourceName) { - this.sourceName = sourceName; - } - - public String getFileIdProcess() { - return fileIdProcess; - } - - public void setFileIdProcess(String fileIdProcess) { - this.fileIdProcess = fileIdProcess; - } - - public String getReportTime() { - return reportTime; - } - - public void setReportTime(String reportTime) { - this.reportTime = reportTime; - } - - public String getOnedeptName() { - return onedeptName; - } - - public void setOnedeptName(String onedeptName) { - this.onedeptName = onedeptName; - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java b/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java index cd3e026..d0888bc 100644 --- a/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/NotificationHelper.java @@ -14,10 +14,10 @@ import com.casic.dcms.R; public class NotificationHelper { - private Context mContext; + private final Context mContext; @SuppressLint("StaticFieldLeak") - private static NotificationHelper notificationHelper; - private NotificationManager notificationManager; + private static volatile NotificationHelper notificationHelper; + private final NotificationManager notificationManager; private NotificationHelper(Context context) { this.mContext = context; @@ -45,10 +45,8 @@ //创建渠道 String id = name + "_DefaultChannel"; NotificationChannel mChannel = new NotificationChannel(id, name, NotificationManager.IMPORTANCE_HIGH); -// mChannel.setSound(Uri.parse(""), Notification.AUDIO_ATTRIBUTES_DEFAULT); mChannel.setShowBadge(true); - mChannel.enableVibration(true); - mChannel.setVibrationPattern(new long[]{100, 200, 300}); + mChannel.enableVibration(false); mChannel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);//设置锁屏可见 notificationManager.createNotificationChannel(mChannel); builder = new Notification.Builder(mContext, id); diff --git a/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java index d7bf511..691dfd5 100644 --- a/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java +++ b/app/src/main/java/com/casic/dcms/view/CaseProcessActivity.java @@ -4,20 +4,22 @@ import android.graphics.Color; import android.view.View; -import androidx.core.content.ContextCompat; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; import com.casic.dcms.R; import com.casic.dcms.databinding.ActivityCaseProcessBinding; import com.casic.dcms.model.CaseProcessBean; +import com.casic.dcms.utils.DialogHelper; import com.casic.dcms.vm.CommonDataViewModel; import com.gyf.immersionbar.ImmersionBar; import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.IntHub; import com.pengxh.androidx.lite.utils.Constant; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.vm.LoadState; import java.util.ArrayList; import java.util.List; @@ -30,8 +32,8 @@ @Override protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); viewBinding.titleBarLayout.titleView.setText("处理记录"); viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); @@ -39,7 +41,16 @@ @Override protected void observeRequestState() { - + commonDataViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override @@ -47,10 +58,6 @@ String processId = getIntent().getStringExtra(Constant.INTENT_PARAM); commonDataViewModel = new ViewModelProvider(this).get(CommonDataViewModel.class); commonDataViewModel.obtainCaseProcess(processId); - } - - @Override - protected void initEvent() { commonDataViewModel.caseProcessModel.observe(this, new Observer() { @Override public void onChanged(CaseProcessBean resultBean) { @@ -91,4 +98,9 @@ } }); } + + @Override + protected void initEvent() { + + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java deleted file mode 100644 index 30585d5..0000000 --- a/app/src/main/java/com/casic/dcms/view/check/CaseCheckDetailActivity.java +++ /dev/null @@ -1,353 +0,0 @@ -package com.casic.dcms.view.check; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; - -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.databinding.ActivityCaseCheckDetailBinding; -import com.casic.dcms.model.ActionResultBean; -import com.casic.dcms.model.CaseDetailBean; -import com.casic.dcms.model.CaseNextNodeBean; -import com.casic.dcms.utils.DialogHelper; -import com.casic.dcms.utils.MapHelper; -import com.casic.dcms.utils.PictureSelectorHelper; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.callback.ISelectorListener; -import com.casic.dcms.view.BigImageActivity; -import com.casic.dcms.vm.CaseOperateViewModel; -import com.casic.dcms.vm.CaseViewModel; -import com.casic.dcms.vm.NodeViewModel; -import com.casic.dcms.vm.UploadViewModel; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.entity.LocalMedia; -import com.pengxh.androidx.lite.adapter.EditableImageAdapter; -import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.hub.ContextHub; -import com.pengxh.androidx.lite.hub.StringHub; -import com.pengxh.androidx.lite.utils.Constant; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; -import com.pengxh.androidx.lite.vm.LoadState; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import cn.jzvd.Jzvd; - -public class CaseCheckDetailActivity extends AndroidxBaseActivity { - - private final Context context = CaseCheckDetailActivity.this; - private final ArrayList realPaths = new ArrayList<>(); //真实图片路径 - private final ArrayList imageList = new ArrayList<>(); //上传到服务器的数据集 - private CaseViewModel caseViewModel; - private UploadViewModel uploadViewModel; - private NodeViewModel nodeViewModel; - private CaseOperateViewModel operateViewModel; - private String id; - private String changeState; - private EditableImageAdapter checkImageAdapter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - - viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - } - - @Override - protected void observeRequestState() { - - } - - @Override - protected void initData() { - id = getIntent().getStringExtra(Constant.INTENT_PARAM); - caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); - caseViewModel.obtainCaseDetail(id); - - uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); - nodeViewModel = new ViewModelProvider(this).get(NodeViewModel.class); - operateViewModel = new ViewModelProvider(this).get(CaseOperateViewModel.class); - - checkImageAdapter = new EditableImageAdapter(this, 3, 13); - viewBinding.addImageRecyclerView.setAdapter(checkImageAdapter); - } - - @Override - protected void initEvent() { - caseViewModel.caseDetailModel.observe(this, new Observer() { - @Override - public void onChanged(CaseDetailBean resultBean) { - if (resultBean.getCode() == 200) { - data = resultBean.getData().get(0); - viewBinding.caseNumberView.setText(data.getCaseid()); - viewBinding.caseTypeView.setText(data.getEorcName()); - viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); - viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); - viewBinding.caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); - viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); - viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); - viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - viewBinding.caseStartTimeView.setText(data.getCreateTime()); - viewBinding.caseEndTimeView.setText(data.getNodeLimittime()); - /** - * 图片 - */ - //核实照片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.imageGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - viewBinding.audioPlayerView.setVisibility(View.VISIBLE); - viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - viewBinding.videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - viewBinding.videoPlayerView.setUp( - videoUrl, - StringHub.filterSpaceOrEnter(data.getDescription()), - Jzvd.SCREEN_NORMAL - ); - //设置第一帧为封面 - Glide.with(context) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(viewBinding.videoPlayerView.posterImageView); - } - - //处理照片 - String processImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(processImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = processImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - viewBinding.caseHandleResultView.setText(data.getProcessRemarks().equals("") ? "无处理意见" : data.getProcessRemarks()); - //TODO 服务器返回数据缺少此字段,暂时注掉 -// viewBinding.caseHandleTimeView.setText(); - } - } - }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "获取数据中..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); - } - }); - - //图片九宫格事件处理 - checkImageAdapter.setOnItemClickListener(new EditableImageAdapter.OnItemClickListener() { - @Override - public void onAddImageClick() { - PictureSelectorHelper.selectPicture(context, new ISelectorListener() { - @Override - public void onSuccess(ArrayList result) { - if (result.size() == 1) { - uploadViewModel.uploadImage(new File(result.get(0).getRealPath())); - } else { - for (LocalMedia localMedia : result) { - uploadViewModel.uploadImage(new File(localMedia.getRealPath())); - } - } - } - }); - } - - @Override - public void onItemClick(int position) { - if (realPaths.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, realPaths); - } - } - - @Override - public void onItemLongClick(View view, int position) { - imageList.remove(position); - checkImageAdapter.deleteImage(position); - } - }); - uploadViewModel.imageModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - if (checkImageAdapter.getItemCount() <= 3) { - String url = resultBean.getData(); - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - checkImageAdapter.setupImage(realPaths); - } else { - StringHub.show(context, "最多只能上传3张图片"); - } - } - } - }); - uploadViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.caseCheckLayout.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - nodeViewModel.obtainNextNode(String.valueOf(data.getCaseState())); - } - }); - nodeViewModel.nodeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseNextNodeBean resultBean) { - if (resultBean.getCode() == 200) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(context); - sheetBuilder.setTitle("核实情况"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - viewBinding.caseCheckOptView.setText(dataBean.getNextOperation()); - changeState = String.valueOf(dataBean.getNextState()); - } - }).build().show(); - } else { - StringHub.show(context, "该案卷无下级流转节点"); - } - } - }); - - viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - //案卷提交 - String remarks = viewBinding.caseCheckOptView.getText().toString(); - if (TextUtils.isEmpty(remarks)) { - StringHub.show(context, "核查意见不能为空"); - return; - } - if (TextUtils.isEmpty(changeState)) { - StringHub.show(context, "核查情况还未选择"); - return; - } - operateViewModel.checkCase(data.getProcessId(), id, - String.valueOf(data.getCaseState()), changeState, remarks, - StringHelper.reformatURL(imageList) - ); - } - }); - operateViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "案卷核查中,请稍后..."); - } else if (loadState == LoadState.Success) { - DialogHelper.dismissLoadingDialog(); - finish(); - } else { - StringHub.show(context, "核查失败,请重试"); - DialogHelper.dismissLoadingDialog(); - } - } - }); - } - - @Override - public void onDestroy() { - viewBinding.audioPlayerView.release(); - super.onDestroy(); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - public void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CaseCheckedDetailActivity.java deleted file mode 100644 index 0ffce7d..0000000 --- a/app/src/main/java/com/casic/dcms/view/check/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,228 +0,0 @@ -package com.casic.dcms.view.check; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; - -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.databinding.ActivityCaseCheckedDetailBinding; -import com.casic.dcms.model.CaseDetailBean; -import com.casic.dcms.utils.DialogHelper; -import com.casic.dcms.utils.MapHelper; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.view.BigImageActivity; -import com.casic.dcms.view.CaseProcessActivity; -import com.casic.dcms.vm.CaseViewModel; -import com.gyf.immersionbar.ImmersionBar; -import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.hub.ContextHub; -import com.pengxh.androidx.lite.hub.StringHub; -import com.pengxh.androidx.lite.utils.Constant; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; -import com.pengxh.androidx.lite.vm.LoadState; - -import java.util.ArrayList; - -import cn.jzvd.Jzvd; - -public class CaseCheckedDetailActivity extends AndroidxBaseActivity { - - private final Context context = CaseCheckedDetailActivity.this; - private CaseViewModel caseViewModel; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - - viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - } - - @Override - protected void observeRequestState() { - - } - - @Override - protected void initData() { - String id = getIntent().getStringExtra(Constant.INTENT_PARAM); - caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); - caseViewModel.obtainCaseDetail(id); - } - - @Override - protected void initEvent() { - caseViewModel.caseDetailModel.observe(this, new Observer() { - @Override - public void onChanged(CaseDetailBean resultBean) { - if (resultBean.getCode() == 200) { - data = resultBean.getData().get(0); - viewBinding.caseNumberView.setText(data.getCaseid()); - viewBinding.caseTypeView.setText(data.getEorcName()); - viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); - viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); - viewBinding.caseCommunityView.setText(data.getCommunityName()); - viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); - viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.imageGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //处理图片 - 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)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); - imageAdapter.setImageList(urls); - viewBinding.checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - viewBinding.checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long l) { - if (urls.get(position).isEmpty()) { - StringHub.show(context, "图片加载失败,无法查看大图"); - } else { - ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); - } - } - }); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - viewBinding.audioPlayerView.setVisibility(View.VISIBLE); - viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - viewBinding.videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - viewBinding.videoPlayerView.setUp( - videoUrl, - StringHub.filterSpaceOrEnter(data.getDescription()), - Jzvd.SCREEN_NORMAL - ); - //设置第一帧为封面 - Glide.with(context) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(viewBinding.videoPlayerView.posterImageView); - } - } - } - }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "获取数据中..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - - viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); - } - }); - - viewBinding.handleLayout.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - ContextHub.navigatePageTo(context, CaseProcessActivity.class, data.getProcessId()); - } - }); - } - - @Override - protected void onDestroy() { - viewBinding.audioPlayerView.release(); - super.onDestroy(); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java b/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java index 76e3203..2c76426 100644 --- a/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/view/check/CheckCaseActivity.java @@ -2,7 +2,6 @@ import android.widget.LinearLayout; -import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; import com.casic.dcms.R; @@ -14,6 +13,7 @@ import com.casic.dcms.utils.LocaleConstant; import com.gyf.immersionbar.ImmersionBar; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.IntHub; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; import java.util.ArrayList; @@ -28,8 +28,8 @@ @Override protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); viewBinding.titleBarLayout.titleView.setText("案卷核查"); viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); @@ -46,10 +46,10 @@ fragmentList.add(new CaseCheckFragment()); fragmentList.add(new CaseCheckedFragment()); SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), LocaleConstant.CASE_PAGE_TITLES, fragmentList); - viewBinding.checkViewPager.setAdapter(adapter); + viewBinding.viewPager.setAdapter(adapter); //绑定TabLayout - viewBinding.checkTabLayout.setupWithViewPager(viewBinding.checkViewPager); - LinearLayout linearLayout = (LinearLayout) viewBinding.checkTabLayout.getChildAt(0); + viewBinding.topTabLayout.setupWithViewPager(viewBinding.viewPager); + LinearLayout linearLayout = (LinearLayout) viewBinding.topTabLayout.getChildAt(0); LinearLayoutHelper.setDivider(this, linearLayout); } diff --git a/app/src/main/java/com/casic/dcms/view/check/CheckDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CheckDetailActivity.java new file mode 100644 index 0000000..b9aeeb7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/view/check/CheckDetailActivity.java @@ -0,0 +1,356 @@ +package com.casic.dcms.view.check; + +import android.content.Context; +import android.text.TextUtils; +import android.view.View; +import android.widget.AdapterView; + +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.databinding.ActivityCheckDetailBinding; +import com.casic.dcms.model.ActionResultBean; +import com.casic.dcms.model.CaseDetailBean; +import com.casic.dcms.model.CaseNextNodeBean; +import com.casic.dcms.utils.DialogHelper; +import com.casic.dcms.utils.MapHelper; +import com.casic.dcms.utils.PictureSelectorHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.ISelectorListener; +import com.casic.dcms.view.BigImageActivity; +import com.casic.dcms.vm.CaseOperateViewModel; +import com.casic.dcms.vm.CaseViewModel; +import com.casic.dcms.vm.NodeViewModel; +import com.casic.dcms.vm.UploadViewModel; +import com.gyf.immersionbar.ImmersionBar; +import com.luck.picture.lib.entity.LocalMedia; +import com.pengxh.androidx.lite.adapter.EditableImageAdapter; +import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; +import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.ContextHub; +import com.pengxh.androidx.lite.hub.IntHub; +import com.pengxh.androidx.lite.hub.StringHub; +import com.pengxh.androidx.lite.utils.Constant; +import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.vm.LoadState; +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import cn.jzvd.Jzvd; + +public class CheckDetailActivity extends AndroidxBaseActivity { + + private final Context context = CheckDetailActivity.this; + private final ArrayList realPaths = new ArrayList<>(); //真实图片路径 + private final ArrayList imageList = new ArrayList<>(); //上传到服务器的数据集 + private CaseViewModel caseViewModel; + private UploadViewModel uploadViewModel; + private NodeViewModel nodeViewModel; + private CaseOperateViewModel operateViewModel; + private String id; + private String changeState; + private EditableImageAdapter checkImageAdapter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + + @Override + protected void setupTopBarLayout() { + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); + + viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); + viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); + } + + @Override + protected void observeRequestState() { + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + + uploadViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + + operateViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "案卷核查中,请稍后..."); + } else if (loadState == LoadState.Success) { + DialogHelper.dismissLoadingDialog(); + finish(); + } else { + StringHub.show(context, "核查失败,请重试"); + DialogHelper.dismissLoadingDialog(); + } + } + }); + } + + @Override + protected void initData() { + id = getIntent().getStringExtra(Constant.INTENT_PARAM); + caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.obtainCaseDetail(id); + caseViewModel.caseDetailModel.observe(this, new Observer() { + @Override + public void onChanged(CaseDetailBean resultBean) { + if (resultBean.getCode() == 200) { + data = resultBean.getData().get(0); + viewBinding.caseNumberView.setText(data.getCaseid()); + viewBinding.caseTypeView.setText(data.getEorcName()); + viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); + viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); + viewBinding.caseCommunityView.setText(data.getCommunityName().equals("") ? "无更详细社区信息" : data.getCommunityName()); + viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); + viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); + viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); + viewBinding.caseStartTimeView.setText(data.getCreateTime()); + viewBinding.caseEndTimeView.setText(data.getNodeLimittime()); + /** + * 图片 + */ + //核实照片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.imageGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + viewBinding.audioPlayerView.setVisibility(View.VISIBLE); + viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(videoFile)) { + viewBinding.videoPlayerView.setVisibility(View.VISIBLE); + String videoUrl = StringHelper.appendCompleteURL(videoFile); + viewBinding.videoPlayerView.setUp( + videoUrl, + StringHub.filterSpaceOrEnter(data.getDescription()), + Jzvd.SCREEN_NORMAL + ); + //设置第一帧为封面 + Glide.with(context) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(viewBinding.videoPlayerView.posterImageView); + } + + //处理照片 + String processImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(processImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = processImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.handleGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + viewBinding.caseHandleResultView.setText(data.getProcessRemarks().equals("") ? "无处理意见" : data.getProcessRemarks()); + //TODO 服务器返回数据缺少此字段,暂时注掉 +// viewBinding.caseHandleTimeView.setText(); + } + } + }); + + uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); + uploadViewModel.imageModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + if (checkImageAdapter.getItemCount() <= 3) { + String url = resultBean.getData(); + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + checkImageAdapter.setupImage(realPaths); + } else { + StringHub.show(context, "最多只能上传3张图片"); + } + } + } + }); + + nodeViewModel = new ViewModelProvider(this).get(NodeViewModel.class); + nodeViewModel.nodeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseNextNodeBean resultBean) { + if (resultBean.getCode() == 200) { + List dataBeans = resultBean.getData(); + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(context); + sheetBuilder.setTitle("核实情况"); + for (CaseNextNodeBean.DataBean dataBean : dataBeans) { + sheetBuilder.addItem(dataBean.getNextOperation()); + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); + viewBinding.caseCheckOptView.setText(dataBean.getNextOperation()); + changeState = String.valueOf(dataBean.getNextState()); + } + }).build().show(); + } else { + StringHub.show(context, "该案卷无下级流转节点"); + } + } + }); + + operateViewModel = new ViewModelProvider(this).get(CaseOperateViewModel.class); + + checkImageAdapter = new EditableImageAdapter(this, 3, 13); + viewBinding.addImageRecyclerView.setAdapter(checkImageAdapter); + } + + @Override + protected void initEvent() { + viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); + } + }); + + //图片九宫格事件处理 + checkImageAdapter.setOnItemClickListener(new EditableImageAdapter.OnItemClickListener() { + @Override + public void onAddImageClick() { + PictureSelectorHelper.selectPicture(context, new ISelectorListener() { + @Override + public void onSuccess(ArrayList result) { + if (result.size() == 1) { + uploadViewModel.uploadImage(new File(result.get(0).getRealPath())); + } else { + for (LocalMedia localMedia : result) { + uploadViewModel.uploadImage(new File(localMedia.getRealPath())); + } + } + } + }); + } + + @Override + public void onItemClick(int position) { + if (realPaths.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, realPaths); + } + } + + @Override + public void onItemLongClick(View view, int position) { + imageList.remove(position); + checkImageAdapter.deleteImage(position); + } + }); + + + viewBinding.caseCheckLayout.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + nodeViewModel.obtainNextNode(String.valueOf(data.getCaseState())); + } + }); + + viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + //案卷提交 + String remarks = viewBinding.caseCheckOptView.getText().toString(); + if (TextUtils.isEmpty(remarks)) { + StringHub.show(context, "核查意见不能为空"); + return; + } + if (TextUtils.isEmpty(changeState)) { + StringHub.show(context, "核查情况还未选择"); + return; + } + operateViewModel.checkCase(data.getProcessId(), id, + String.valueOf(data.getCaseState()), changeState, remarks, + StringHelper.reformatURL(imageList) + ); + } + }); + } + + @Override + public void onDestroy() { + viewBinding.audioPlayerView.release(); + super.onDestroy(); + } + + @Override + public void onBackPressed() { + if (Jzvd.backPress()) { + return; + } + super.onBackPressed(); + } + + @Override + public void onPause() { + super.onPause(); + Jzvd.releaseAllVideos(); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/check/CheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/view/check/CheckedDetailActivity.java new file mode 100644 index 0000000..14e554b --- /dev/null +++ b/app/src/main/java/com/casic/dcms/view/check/CheckedDetailActivity.java @@ -0,0 +1,226 @@ +package com.casic.dcms.view.check; + +import android.content.Context; +import android.text.TextUtils; +import android.view.View; +import android.widget.AdapterView; + +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.databinding.ActivityCheckedDetailBinding; +import com.casic.dcms.model.CaseDetailBean; +import com.casic.dcms.utils.DialogHelper; +import com.casic.dcms.utils.MapHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.view.BigImageActivity; +import com.casic.dcms.view.CaseProcessActivity; +import com.casic.dcms.vm.CaseViewModel; +import com.gyf.immersionbar.ImmersionBar; +import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; +import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.ContextHub; +import com.pengxh.androidx.lite.hub.IntHub; +import com.pengxh.androidx.lite.hub.StringHub; +import com.pengxh.androidx.lite.utils.Constant; +import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.vm.LoadState; + +import java.util.ArrayList; + +import cn.jzvd.Jzvd; + +public class CheckedDetailActivity extends AndroidxBaseActivity { + + private final Context context = CheckedDetailActivity.this; + private CaseViewModel caseViewModel; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + + @Override + protected void setupTopBarLayout() { + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); + + viewBinding.titleBarLayout.titleView.setText("案卷核查详情"); + viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); + } + + @Override + protected void observeRequestState() { + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + } + + @Override + protected void initData() { + String id = getIntent().getStringExtra(Constant.INTENT_PARAM); + caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + caseViewModel.obtainCaseDetail(id); + caseViewModel.caseDetailModel.observe(this, new Observer() { + @Override + public void onChanged(CaseDetailBean resultBean) { + if (resultBean.getCode() == 200) { + data = resultBean.getData().get(0); + viewBinding.caseNumberView.setText(data.getCaseid()); + viewBinding.caseTypeView.setText(data.getEorcName()); + viewBinding.caseLargeTypeView.setText(data.getCasetypeName()); + viewBinding.caseSmallTypeView.setText(data.getCasetypeDetailName()); + viewBinding.caseCommunityView.setText(data.getCommunityName()); + viewBinding.casePlaceView.setText(StringHub.filterSpaceOrEnter(data.getFieldintro())); + viewBinding.caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); + viewBinding.caseSituationView.setText(StringHub.filterSpaceOrEnter(data.getDescription())); + + //核实图片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.imageGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.imageGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //处理图片 + 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)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.handleGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //核查图片 + String checkImages = data.getFileIdCheck(); + if (!TextUtils.isEmpty(checkImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = checkImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ReadOnlyImageAdapter imageAdapter = new ReadOnlyImageAdapter(context); + imageAdapter.setImageList(urls); + viewBinding.checkGridView.setAdapter(imageAdapter); + //九宫格点击事件 + viewBinding.checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long l) { + if (urls.get(position).isEmpty()) { + StringHub.show(context, "图片加载失败,无法查看大图"); + } else { + ContextHub.navigatePageTo(context, BigImageActivity.class, position, urls); + } + } + }); + } + + //音频 + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + viewBinding.audioPlayerView.setVisibility(View.VISIBLE); + viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); + } + + //视频 + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(videoFile)) { + viewBinding.videoPlayerView.setVisibility(View.VISIBLE); + String videoUrl = StringHelper.appendCompleteURL(videoFile); + viewBinding.videoPlayerView.setUp( + videoUrl, + StringHub.filterSpaceOrEnter(data.getDescription()), + Jzvd.SCREEN_NORMAL + ); + //设置第一帧为封面 + Glide.with(context) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(viewBinding.videoPlayerView.posterImageView); + } + } + } + }); + } + + @Override + protected void initEvent() { + viewBinding.locationMapView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + MapHelper.displayOnMap(context, data.getEorcName(), data.getLng(), data.getLat()); + } + }); + + viewBinding.handleLayout.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + ContextHub.navigatePageTo(context, CaseProcessActivity.class, data.getProcessId()); + } + }); + } + + @Override + protected void onDestroy() { + viewBinding.audioPlayerView.release(); + super.onDestroy(); + } + + @Override + public void onBackPressed() { + if (Jzvd.backPress()) { + return; + } + super.onBackPressed(); + } + + @Override + protected void onPause() { + super.onPause(); + Jzvd.releaseAllVideos(); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/map/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/view/map/CaseOnMapActivity.java index 5a85a88..c662347 100644 --- a/app/src/main/java/com/casic/dcms/view/map/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/view/map/CaseOnMapActivity.java @@ -18,10 +18,10 @@ import com.casic.dcms.R; import com.casic.dcms.databinding.ActivityMapCaseBinding; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.model.CaseHandleBean; import com.casic.dcms.model.PointDataBean; import com.casic.dcms.model.VerifyCaseModel; -import com.casic.dcms.model.check.CaseCheckModel; import com.casic.dcms.utils.ArcGisMapCreator; import com.casic.dcms.utils.LocaleConstant; import com.casic.dcms.view.CaseDetailActivity; @@ -116,11 +116,11 @@ public void onChanged(CaseCheckModel resultBean) { clearPictureMarker(); if (resultBean.isSuccess()) { - List rowsBeans = resultBean.getData().getRows(); + List rowsBeans = resultBean.getData().getRows(); if (rowsBeans.size() >= 1) { List list = new ArrayList<>(); List pointList = new ArrayList<>(); - for (CaseCheckModel.DataDTO.RowsDTO bean : rowsBeans) { + for (CaseCheckModel.DataModel.RowsModel bean : rowsBeans) { String lng = bean.getLng(); String lat = bean.getLat(); if (TextUtils.isEmpty(lng) || TextUtils.isEmpty(lat)) { diff --git a/app/src/main/java/com/casic/dcms/view/upload/BriefCaseActivity.java b/app/src/main/java/com/casic/dcms/view/upload/BriefCaseActivity.java index 2d2e8f6..794c651 100644 --- a/app/src/main/java/com/casic/dcms/view/upload/BriefCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/view/upload/BriefCaseActivity.java @@ -90,7 +90,31 @@ @Override protected void observeRequestState() { + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); + } else if (loadState == LoadState.Success) { + DialogHelper.dismissLoadingDialog(); + finish(); + } else { + StringHub.show(context, "提交失败,请重试"); + DialogHelper.dismissLoadingDialog(); + } + } + }); + uploadViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override @@ -99,8 +123,52 @@ smallTypeBeans = new ArrayList<>(); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + commonDataViewModel = new ViewModelProvider(this).get(CommonDataViewModel.class); + commonDataViewModel.largeTypeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseLargeTypeBean typeBean) { + if (typeBean.getCode() == 200) { + //设置大类数据 + largeTypeBeans = typeBean.getData(); + if (largeTypeBeans.size() != 0) { + viewBinding.caseLargeClassView.setText(largeTypeBeans.get(0).getTypeName());//默认选择第一个 + } + viewBinding.caseSmallClassView.setText("请选择"); + viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.darkGray)); + } + } + }); + commonDataViewModel.smallTypeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseSmallTypeBean typeBean) { + if (typeBean.getCode() == 200) { + //设置小类数据 + smallTypeBeans = typeBean.getData(); + if (smallTypeBeans.size() != 0) { + viewBinding.caseSmallClassView.setText(smallTypeBeans.get(0).getTypeDetailName());//默认选择第一个 + viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); + } + } + } + }); + uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); + uploadViewModel.imageModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + if (imageAdapter.getItemCount() <= 4) { + String url = resultBean.getData(); + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + imageAdapter.setupImage(realPaths); + } else { + StringHub.show(context, "最多只能上传3张图片"); + } + } + } + }); imageAdapter = new EditableImageAdapter(this, 3, 13); viewBinding.addImageRecyclerView.setAdapter(imageAdapter); @@ -132,20 +200,6 @@ }).build().show(); } }); - commonDataViewModel.largeTypeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseLargeTypeBean typeBean) { - if (typeBean.getCode() == 200) { - //设置大类数据 - largeTypeBeans = typeBean.getData(); - if (largeTypeBeans.size() != 0) { - viewBinding.caseLargeClassView.setText(largeTypeBeans.get(0).getTypeName());//默认选择第一个 - } - viewBinding.caseSmallClassView.setText("请选择"); - viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.darkGray)); - } - } - }); /** * 选择案卷大类 @@ -178,19 +232,6 @@ } } }); - commonDataViewModel.smallTypeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseSmallTypeBean typeBean) { - if (typeBean.getCode() == 200) { - //设置小类数据 - smallTypeBeans = typeBean.getData(); - if (smallTypeBeans.size() != 0) { - viewBinding.caseSmallClassView.setText(smallTypeBeans.get(0).getTypeDetailName());//默认选择第一个 - viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); - } - } - } - }); /** * 选择案卷小类 @@ -271,31 +312,6 @@ imageAdapter.deleteImage(position); } }); - uploadViewModel.imageModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - if (imageAdapter.getItemCount() <= 4) { - String url = resultBean.getData(); - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - imageAdapter.setupImage(realPaths); - } else { - StringHub.show(context, "最多只能上传3张图片"); - } - } - } - }); - uploadViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { @Override @@ -303,20 +319,6 @@ submitCase(); } }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); - } else if (loadState == LoadState.Success) { - DialogHelper.dismissLoadingDialog(); - finish(); - } else { - StringHub.show(context, "提交失败,请重试"); - DialogHelper.dismissLoadingDialog(); - } - } - }); } /** diff --git a/app/src/main/java/com/casic/dcms/view/upload/BusinessCaseActivity.java b/app/src/main/java/com/casic/dcms/view/upload/BusinessCaseActivity.java index 59b37b7..f6b6242 100644 --- a/app/src/main/java/com/casic/dcms/view/upload/BusinessCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/view/upload/BusinessCaseActivity.java @@ -84,12 +84,41 @@ @Override protected void observeRequestState() { - + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); + } else if (loadState == LoadState.Success) { + DialogHelper.dismissLoadingDialog(); + finish(); + } else { + StringHub.show(context, "提交失败,请重试"); + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override public void initData() { uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); + uploadViewModel.imageModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + if (imageAdapter.getItemCount() <= 4) { + String url = resultBean.getData(); + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + imageAdapter.setupImage(realPaths); + } else { + StringHub.show(context, "最多只能上传3张图片"); + } + } + } + }); + caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); imageAdapter = new EditableImageAdapter(this, 3, 13); @@ -142,21 +171,6 @@ imageAdapter.deleteImage(position); } }); - uploadViewModel.imageModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - if (imageAdapter.getItemCount() <= 4) { - String url = resultBean.getData(); - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - imageAdapter.setupImage(realPaths); - } else { - StringHub.show(context, "最多只能上传3张图片"); - } - } - } - }); viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { @Override @@ -164,20 +178,6 @@ submitCase(); } }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); - } else if (loadState == LoadState.Success) { - DialogHelper.dismissLoadingDialog(); - finish(); - } else { - StringHub.show(context, "提交失败,请重试"); - DialogHelper.dismissLoadingDialog(); - } - } - }); } /** diff --git a/app/src/main/java/com/casic/dcms/view/upload/CommonCaseActivity.java b/app/src/main/java/com/casic/dcms/view/upload/CommonCaseActivity.java index c2a889b..1eea805 100644 --- a/app/src/main/java/com/casic/dcms/view/upload/CommonCaseActivity.java +++ b/app/src/main/java/com/casic/dcms/view/upload/CommonCaseActivity.java @@ -121,7 +121,31 @@ @Override protected void observeRequestState() { + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); + } else if (loadState == LoadState.Success) { + DialogHelper.dismissLoadingDialog(); + finish(); + } else { + StringHub.show(context, "提交失败,请重试"); + DialogHelper.dismissLoadingDialog(); + } + } + }); + uploadViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override @@ -130,8 +154,85 @@ smallTypeBeans = new ArrayList<>(); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); + commonDataViewModel = new ViewModelProvider(this).get(CommonDataViewModel.class); + commonDataViewModel.largeTypeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseLargeTypeBean typeBean) { + if (typeBean.getCode() == 200) { + //设置大类数据 + largeTypeBeans = typeBean.getData(); + if (largeTypeBeans.size() != 0) { + viewBinding.caseLargeClassView.setText(largeTypeBeans.get(0).getTypeName());//默认选择第一个 + } + viewBinding.caseSmallClassView.setText("请选择"); + viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.darkGray)); + } + } + }); + commonDataViewModel.smallTypeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseSmallTypeBean typeBean) { + if (typeBean.getCode() == 200) { + //设置小类数据 + smallTypeBeans = typeBean.getData(); + if (smallTypeBeans.size() != 0) { + viewBinding.caseSmallClassView.setText(smallTypeBeans.get(0).getTypeDetailName());//默认选择第一个 + viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); + } + } + } + }); + uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); + uploadViewModel.imageModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + if (imageAdapter.getItemCount() <= 4) { + String url = resultBean.getData(); + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + imageAdapter.setupImage(realPaths); + } else { + StringHub.show(context, "最多只能上传3张图片"); + } + } + } + }); + uploadViewModel.audioModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + audioUrl = resultBean.getData(); + /** + * http://111.198.10.15:11409/static/2021-04/8fb86dae39ad4f949e934e25465d7382.m4a + * */ + if (!TextUtils.isEmpty(audioUrl)) { + viewBinding.audioPlayerView.setVisibility(View.VISIBLE); + viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioUrl)); + } + } + } + }); + uploadViewModel.videoModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.getCode() == 200) { + //2021-04\\9d89df21173043cfb4188e68613e3e0e.mp4 + viewBinding.addVideoView.setVisibility(View.GONE); + viewBinding.videoPlayerView.setVisibility(View.VISIBLE); + videoUrl = resultBean.getData(); + String completeURL = StringHelper.appendCompleteURL(videoUrl); + viewBinding.videoPlayerView.setUp(completeURL, "", Jzvd.SCREEN_NORMAL); + //设置第一帧为封面 + Glide.with(context) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(completeURL) + .into(viewBinding.videoPlayerView.posterImageView); + } + } + }); progressDialog = new ProgressDialog(this); progressDialog.setMessage("视频压缩中..."); @@ -188,20 +289,6 @@ }).build().show(); } }); - commonDataViewModel.largeTypeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseLargeTypeBean typeBean) { - if (typeBean.getCode() == 200) { - //设置大类数据 - largeTypeBeans = typeBean.getData(); - if (largeTypeBeans.size() != 0) { - viewBinding.caseLargeClassView.setText(largeTypeBeans.get(0).getTypeName());//默认选择第一个 - } - viewBinding.caseSmallClassView.setText("请选择"); - viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.darkGray)); - } - } - }); /** * 选择案卷大类 @@ -234,19 +321,6 @@ } } }); - commonDataViewModel.smallTypeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseSmallTypeBean typeBean) { - if (typeBean.getCode() == 200) { - //设置小类数据 - smallTypeBeans = typeBean.getData(); - if (smallTypeBeans.size() != 0) { - viewBinding.caseSmallClassView.setText(smallTypeBeans.get(0).getTypeDetailName());//默认选择第一个 - viewBinding.caseSmallClassView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); - } - } - } - }); /** * 选择案卷小类 @@ -430,64 +504,6 @@ imageAdapter.deleteImage(position); } }); - uploadViewModel.imageModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - if (imageAdapter.getItemCount() <= 4) { - String url = resultBean.getData(); - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - imageAdapter.setupImage(realPaths); - } else { - StringHub.show(context, "最多只能上传3张图片"); - } - } - } - }); - uploadViewModel.audioModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - audioUrl = resultBean.getData(); - /** - * http://111.198.10.15:11409/static/2021-04/8fb86dae39ad4f949e934e25465d7382.m4a - * */ - if (!TextUtils.isEmpty(audioUrl)) { - viewBinding.audioPlayerView.setVisibility(View.VISIBLE); - viewBinding.audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioUrl)); - } - } - } - }); - uploadViewModel.videoModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.getCode() == 200) { - //2021-04\\9d89df21173043cfb4188e68613e3e0e.mp4 - viewBinding.addVideoView.setVisibility(View.GONE); - viewBinding.videoPlayerView.setVisibility(View.VISIBLE); - videoUrl = resultBean.getData(); - String completeURL = StringHelper.appendCompleteURL(videoUrl); - viewBinding.videoPlayerView.setUp(completeURL, "", Jzvd.SCREEN_NORMAL); - //设置第一帧为封面 - Glide.with(context) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(completeURL) - .into(viewBinding.videoPlayerView.posterImageView); - } - } - }); - uploadViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { @Override @@ -495,20 +511,6 @@ submitCase(); } }); - caseViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "案卷提交中,请稍后..."); - } else if (loadState == LoadState.Success) { - DialogHelper.dismissLoadingDialog(); - finish(); - } else { - StringHub.show(context, "提交失败,请重试"); - DialogHelper.dismissLoadingDialog(); - } - } - }); } /** diff --git a/app/src/main/java/com/casic/dcms/view/verify/VerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/view/verify/VerifiedDetailActivity.java index eec22e6..2e1469d 100644 --- a/app/src/main/java/com/casic/dcms/view/verify/VerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/view/verify/VerifiedDetailActivity.java @@ -5,7 +5,6 @@ import android.view.View; import android.widget.AdapterView; -import androidx.core.content.ContextCompat; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; @@ -23,6 +22,7 @@ import com.pengxh.androidx.lite.adapter.ReadOnlyImageAdapter; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; import com.pengxh.androidx.lite.hub.ContextHub; +import com.pengxh.androidx.lite.hub.IntHub; import com.pengxh.androidx.lite.hub.StringHub; import com.pengxh.androidx.lite.utils.Constant; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; @@ -40,8 +40,8 @@ @Override protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); viewBinding.titleBarLayout.titleView.setText("案卷详情"); viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); diff --git a/app/src/main/java/com/casic/dcms/view/verify/VerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/view/verify/VerifyDetailActivity.java index 207394d..da1c8bd 100644 --- a/app/src/main/java/com/casic/dcms/view/verify/VerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/view/verify/VerifyDetailActivity.java @@ -110,7 +110,42 @@ @Override protected void observeRequestState() { + caseViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "获取数据中..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + uploadViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + + operateViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "案卷核实中,请稍后..."); + } else if (loadState == LoadState.Success) { + DialogHelper.dismissLoadingDialog(); + finish(); + } else { + StringHub.show(context, "核实失败,请重试"); + DialogHelper.dismissLoadingDialog(); + } + } + }); } @Override @@ -121,19 +156,7 @@ smallTypeBeans = new ArrayList<>(); caseViewModel = new ViewModelProvider(this).get(CaseViewModel.class); - commonDataViewModel = new ViewModelProvider(this).get(CommonDataViewModel.class); - uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); - nodeViewModel = new ViewModelProvider(this).get(NodeViewModel.class); - operateViewModel = new ViewModelProvider(this).get(CaseOperateViewModel.class); - caseViewModel.obtainCaseDetail(id); - - verifyImageAdapter = new EditableImageAdapter(this, 3, 13); - viewBinding.addImageRecyclerView.setAdapter(verifyImageAdapter); - } - - @Override - public void initEvent() { caseViewModel.caseDetailModel.observe(this, new Observer() { @Override public void onChanged(CaseDetailBean resultBean) { @@ -219,17 +242,89 @@ } } }); - caseViewModel.loadState.observe(this, new Observer() { + + commonDataViewModel = new ViewModelProvider(this).get(CommonDataViewModel.class); + commonDataViewModel.largeTypeModel.observe(this, new Observer() { @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "获取数据中..."); - } else { - DialogHelper.dismissLoadingDialog(); + public void onChanged(CaseLargeTypeBean typeBean) { + if (typeBean.getCode() == 200) { + //设置大类数据 + largeTypeBeans = typeBean.getData(); + if (largeTypeBeans.size() == 0) { + viewBinding.caseLargeTypeView.setText("无小类"); + } else { + viewBinding.caseLargeTypeView.setText(largeTypeBeans.get(0).getTypeName());//默认选择第一个 + } + viewBinding.caseSmallTypeView.setText("请选择"); + } + } + }); + commonDataViewModel.smallTypeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseSmallTypeBean typeBean) { + if (typeBean.getCode() == 200) { + smallTypeBeans = typeBean.getData(); + if (smallTypeBeans.size() == 0) { + viewBinding.caseSmallTypeView.setText("无小类"); + } else { + viewBinding.caseSmallTypeView.setText(smallTypeBeans.get(0).getTypeDetailName());//默认选择第一个 + } } } }); + uploadViewModel = new ViewModelProvider(this).get(UploadViewModel.class); + uploadViewModel.imageModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + if (verifyImageAdapter.getItemCount() <= 3) { + String url = resultBean.getData(); + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + verifyImageAdapter.setupImage(realPaths); + } else { + StringHub.show(context, "最多只能上传3张图片"); + } + } + } + }); + + nodeViewModel = new ViewModelProvider(this).get(NodeViewModel.class); + nodeViewModel.nodeModel.observe(this, new Observer() { + @Override + public void onChanged(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + List dataBeans = resultBean.getData(); + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(context); + sheetBuilder.setTitle("核实情况"); + for (CaseNextNodeBean.DataBean dataBean : dataBeans) { + sheetBuilder.addItem(dataBean.getNextOperation()); + } + sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + + CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); + viewBinding.caseConditionView.setText(dataBean.getNextOperation()); + changeState = String.valueOf(dataBean.getNextState()); + } + }).build().show(); + } else { + StringHub.show(context, "该案卷无下级流转节点"); + } + } + }); + + operateViewModel = new ViewModelProvider(this).get(CaseOperateViewModel.class); + + verifyImageAdapter = new EditableImageAdapter(this, 3, 13); + viewBinding.addImageRecyclerView.setAdapter(verifyImageAdapter); + } + + @Override + public void initEvent() { viewBinding.caseClassLayout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -249,21 +344,6 @@ }).build().show(); } }); - commonDataViewModel.largeTypeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseLargeTypeBean typeBean) { - if (typeBean.getCode() == 200) { - //设置大类数据 - largeTypeBeans = typeBean.getData(); - if (largeTypeBeans.size() == 0) { - viewBinding.caseLargeTypeView.setText("无小类"); - } else { - viewBinding.caseLargeTypeView.setText(largeTypeBeans.get(0).getTypeName());//默认选择第一个 - } - viewBinding.caseSmallTypeView.setText("请选择"); - } - } - }); viewBinding.caseLargeClassLayout.setOnClickListener(new View.OnClickListener() { @Override @@ -292,19 +372,6 @@ } } }); - commonDataViewModel.smallTypeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseSmallTypeBean typeBean) { - if (typeBean.getCode() == 200) { - smallTypeBeans = typeBean.getData(); - if (smallTypeBeans.size() == 0) { - viewBinding.caseSmallTypeView.setText("无小类"); - } else { - viewBinding.caseSmallTypeView.setText(smallTypeBeans.get(0).getTypeDetailName());//默认选择第一个 - } - } - } - }); viewBinding.caseSmallClassLayout.setOnClickListener(new View.OnClickListener() { @Override @@ -353,31 +420,6 @@ nodeViewModel.obtainNextNode(String.valueOf(data.getCaseState())); } }); - nodeViewModel.nodeModel.observe(this, new Observer() { - @Override - public void onChanged(CaseNextNodeBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(context); - sheetBuilder.setTitle("核实情况"); - for (CaseNextNodeBean.DataBean dataBean : dataBeans) { - sheetBuilder.addItem(dataBean.getNextOperation()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); - viewBinding.caseConditionView.setText(dataBean.getNextOperation()); - changeState = String.valueOf(dataBean.getNextState()); - } - }).build().show(); - } else { - StringHub.show(context, "该案卷无下级流转节点"); - } - } - }); //图片九宫格事件处理 verifyImageAdapter.setOnItemClickListener(new EditableImageAdapter.OnItemClickListener() { @@ -412,31 +454,6 @@ verifyImageAdapter.deleteImage(position); } }); - uploadViewModel.imageModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - if (verifyImageAdapter.getItemCount() <= 3) { - String url = resultBean.getData(); - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - verifyImageAdapter.setupImage(realPaths); - } else { - StringHub.show(context, "最多只能上传3张图片"); - } - } - } - }); - uploadViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "上传中,请稍后..."); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { @Override @@ -444,20 +461,6 @@ submitCase(); } }); - operateViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "案卷核实中,请稍后..."); - } else if (loadState == LoadState.Success) { - DialogHelper.dismissLoadingDialog(); - finish(); - } else { - StringHub.show(context, "核实失败,请重试"); - DialogHelper.dismissLoadingDialog(); - } - } - }); } private void submitCase() { diff --git a/app/src/main/java/com/casic/dcms/vm/CaseViewModel.java b/app/src/main/java/com/casic/dcms/vm/CaseViewModel.java index 5f58648..1786e1f 100644 --- a/app/src/main/java/com/casic/dcms/vm/CaseViewModel.java +++ b/app/src/main/java/com/casic/dcms/vm/CaseViewModel.java @@ -2,6 +2,7 @@ import androidx.lifecycle.MutableLiveData; +import com.casic.dcms.model.CaseCheckModel; import com.casic.dcms.model.CaseDetailBean; import com.casic.dcms.model.CaseHandleBean; import com.casic.dcms.model.CaseHandledBean; @@ -11,7 +12,6 @@ import com.casic.dcms.model.UrgentCaseBean; import com.casic.dcms.model.VerifiedCaseModel; import com.casic.dcms.model.VerifyCaseModel; -import com.casic.dcms.model.check.CaseCheckModel; import com.casic.dcms.utils.LocaleConstant; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.retrofit.RetrofitServiceManager; diff --git a/app/src/main/java/com/casic/dcms/vm/CommonDataViewModel.java b/app/src/main/java/com/casic/dcms/vm/CommonDataViewModel.java index dcb3d3e..76e77cb 100644 --- a/app/src/main/java/com/casic/dcms/vm/CommonDataViewModel.java +++ b/app/src/main/java/com/casic/dcms/vm/CommonDataViewModel.java @@ -13,6 +13,7 @@ import com.google.gson.reflect.TypeToken; import com.pengxh.androidx.lite.callback.OnObserverCallback; import com.pengxh.androidx.lite.vm.BaseViewModel; +import com.pengxh.androidx.lite.vm.LoadState; import com.pengxh.androidx.lite.vm.ObserverSubscriber; import java.io.IOException; @@ -149,16 +150,17 @@ } public void obtainCaseProcess(String processId) { + loadState.setValue(LoadState.Loading); Observable observable = RetrofitServiceManager.getCaseProcessResult(processId); ObserverSubscriber.addSubscribe(observable, new OnObserverCallback() { @Override public void onCompleted() { - + loadState.setValue(LoadState.Success); } @Override public void onError(Throwable e) { - + loadState.setValue(LoadState.Fail); } @Override @@ -170,6 +172,8 @@ CaseProcessBean resultBean = gson.fromJson(response, new TypeToken() { }.getType()); caseProcessModel.setValue(resultBean); + } else { + loadState.setValue(LoadState.Fail); } } catch (IOException e) { e.printStackTrace(); diff --git a/app/src/main/res/layout/activity_case_check_detail.xml b/app/src/main/res/layout/activity_case_check_detail.xml deleted file mode 100644 index c93347f..0000000 --- a/app/src/main/res/layout/activity_case_check_detail.xml +++ /dev/null @@ -1,300 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -